aboutsummaryrefslogtreecommitdiff
path: root/src/main/stanza/passes.stanza
diff options
context:
space:
mode:
authorjackbackrack2015-05-04 15:23:05 -0700
committerjackbackrack2015-05-04 15:23:05 -0700
commit9321e870f9c18bd1522f83e173cbf2d42eed0b66 (patch)
treeda2df60ac39b6d30679b740f3f263d777f235de3 /src/main/stanza/passes.stanza
parent4c56d7c451a0c87ced5aa60f85f3fd8545349862 (diff)
parent84ae662031b941d3a9318d8e4a1dbf152415e718 (diff)
merge
Diffstat (limited to 'src/main/stanza/passes.stanza')
-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 e3e22f56..b5c3b22c 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))