aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorazidar2015-05-04 15:18:40 -0700
committerazidar2015-05-04 15:18:40 -0700
commit489e390d72ea6e265a9e95bfa1cc94a289bb7ba9 (patch)
tree1fe5c268e2c43af6ea2720533688efeba7fc15e4 /src
parentb0571566566c11858485bc0f93c36e427ffbab27 (diff)
Fixed bug where instance types were not lowered
Diffstat (limited to 'src')
-rw-r--r--src/main/stanza/passes.stanza9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza
index 910b7f3d..c8a4e15c 100644
--- a/src/main/stanza/passes.stanza
+++ b/src/main/stanza/passes.stanza
@@ -772,7 +772,14 @@ defn lower (body:Stmt) -> Stmt :
(s:DefRegister) : Begin{_} $
for x in generate-entry(name(s),type(s)) map :
DefRegister(name(x),type(x))
- (s:DefInstance) : s
+ (s:DefInstance) :
+ val fields =
+ for f in fields(type(module(s)) as BundleType) map-append :
+ val etfs = generate-entry(name(f),type(f))
+ for etf in etfs map :
+ Field(name(etf),flip(etf) * flip(f),type(etf))
+ val m = module(s) as WRef
+ DefInstance(name(s),WRef(name(m),BundleType(fields),kind(m),gender(m)))
(s:DefNode) : Begin $
for x in expand-expr(value(s)) map :
DefNode(name(s),exp(x))