diff options
| author | jackbackrack | 2015-04-30 10:50:55 -0700 |
|---|---|---|
| committer | jackbackrack | 2015-04-30 10:50:55 -0700 |
| commit | 837c418b9899a43e2927738262fd39301661eeb3 (patch) | |
| tree | 7a7d894d1eb16e5dc63899a09476d7883fd3c726 /src | |
| parent | 8bd45aa18687f035ff9590ae631ed670fc4a1d90 (diff) | |
| parent | a0834153e1e5a506dc66d8d792f6f9594052b546 (diff) | |
merge
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/stanza/passes.stanza | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 3e8eb884..652bb735 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1088,7 +1088,17 @@ defn reduce-or (l:List<Expression>) -> Expression : ; kinds: Used to know the kind of reference, so we know whether we should error if it isn't initialized. We also know how we should declare the refernce. ; enables:Calculated off of assigns. -; I think I'm going to restructure this so that not all information is held in the tables, but instead, we walk the graph again, and do stuff on declarations, and delete other stuff + +defn expand-whens (ports:List<Port>, table:HashTable<Symbol,SymbolicValue>,cons:Vector<Stmt>) -> False : + for p in ports do : + if direction(p) == OUTPUT : + val ref = WRef(name(p),type(p),PortKind(),FEMALE) + add{cons,_} $ + if has-nul?(table[name(p)]) : + println("Uninitialized: ~" % [to-string(name(p))]);TODO actually collect error + EmptyStmt() + else : Connect(ref,to-exp(table[name(p)]) as Expression) + defn expand-whens (s:Stmt, table:HashTable<Symbol,SymbolicValue>,decs:Vector<Stmt>,cons:Vector<Stmt>) -> Stmt : match(map(expand-whens{_,table,decs,cons},s)) : (s:DefNode|DefMemory) : add(decs,s) @@ -1277,6 +1287,7 @@ defn expand-whens (m:Module) -> Module : for x in table do : println-debug(x) val decs = Vector<Stmt>() val cons = Vector<Stmt>() + expand-whens(ports(m),table,cons) expand-whens(body(m),table,decs,cons) Module(name(m),ports(m),Begin(append(to-list(decs),to-list(cons)))) |
