small improvements in wrap_commonjs:
- use MAP.splice instead of a BlockStatement to inject code (avoids some warnings in the linter) - use the original symbol in exports, so that we get the proper source mapping
This commit is contained in:
13
lib/ast.js
13
lib/ast.js
@@ -295,7 +295,8 @@ var AST_Toplevel = DEFNODE("Toplevel", "globals", {
|
|||||||
var to_export = [];
|
var to_export = [];
|
||||||
self.walk(new TreeWalker(function(node){
|
self.walk(new TreeWalker(function(node){
|
||||||
if (node instanceof AST_SymbolDeclaration && node.definition().global) {
|
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);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@@ -306,22 +307,22 @@ var AST_Toplevel = DEFNODE("Toplevel", "globals", {
|
|||||||
node = node.body;
|
node = node.body;
|
||||||
if (node instanceof AST_String) switch (node.getValue()) {
|
if (node instanceof AST_String) switch (node.getValue()) {
|
||||||
case "$ORIG":
|
case "$ORIG":
|
||||||
return new AST_BlockStatement(self);
|
return MAP.splice(self.body);
|
||||||
case "$EXPORTS":
|
case "$EXPORTS":
|
||||||
var body = [];
|
var body = [];
|
||||||
to_export.forEach(function(name){
|
to_export.forEach(function(sym){
|
||||||
body.push(new AST_SimpleStatement({
|
body.push(new AST_SimpleStatement({
|
||||||
body: new AST_Assign({
|
body: new AST_Assign({
|
||||||
left: new AST_Sub({
|
left: new AST_Sub({
|
||||||
expression: new AST_SymbolRef({ name: "exports" }),
|
expression: new AST_SymbolRef({ name: "exports" }),
|
||||||
property: new AST_String({ value: name }),
|
property: new AST_String({ value: sym.name }),
|
||||||
}),
|
}),
|
||||||
operator: "=",
|
operator: "=",
|
||||||
right: new AST_SymbolRef({ name: name }),
|
right: new AST_SymbolRef(sym),
|
||||||
}),
|
}),
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
return new AST_BlockStatement({ body: body });
|
return MAP.splice(body);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|||||||
Reference in New Issue
Block a user