var to_export = [];
self.walk(new TreeWalker(function(node){
if (node instanceof AST_SymbolDeclaration && node.definition().global) {
- to_export.push(node.name);
+ if (!find_if(function(n){ return n.name == node.name }, to_export))
+ to_export.push(node);
}
}));
}
node = node.body;
if (node instanceof AST_String) switch (node.getValue()) {
case "$ORIG":
- return new AST_BlockStatement(self);
+ return MAP.splice(self.body);
case "$EXPORTS":
var body = [];
- to_export.forEach(function(name){
+ to_export.forEach(function(sym){
body.push(new AST_SimpleStatement({
body: new AST_Assign({
left: new AST_Sub({
expression: new AST_SymbolRef({ name: "exports" }),
- property: new AST_String({ value: name }),
+ property: new AST_String({ value: sym.name }),
}),
operator: "=",
- right: new AST_SymbolRef({ name: name }),
+ right: new AST_SymbolRef(sym),
}),
}));
});
- return new AST_BlockStatement({ body: body });
+ return MAP.splice(body);
}
}
}));