using namespace ProgramSyntax;
+// XXX For some reason global declarations are emitted for otherwise undeclared local variables
+
ProgramCompiler::ProgramCompiler():
resources(0),
module(0)
void ProgramCompiler::append_module(ProgramSyntax::Module &mod)
{
- list<Import *> imports = apply<NodeGatherer<Import> >(mod.shared);
- for(list<Import *>::iterator i=imports.begin(); i!=imports.end(); ++i)
+ vector<Import *> imports = apply<NodeGatherer<Import> >(mod.shared);
+ for(vector<Import *>::iterator i=imports.begin(); i!=imports.end(); ++i)
import((*i)->module);
apply<NodeRemover>(mod.shared, set<Node *>(imports.begin(), imports.end()));
ExpressionStatement *stmt = new ExpressionStatement;
stmt->expression = assign;
+ stmt->visit(*this);
insert_nodes.push_back(stmt);
}
{
remove_node = true;
if(var.init_expression)
+ {
insert_assignment(var.name, var.init_expression->clone());
+ return;
+ }
}
}
else if(var.interface=="in")