From: Mihai Bazon Date: Wed, 10 Oct 2012 08:28:05 +0000 (+0300) Subject: small improvements in wrap_commonjs: X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=f26f3b44bc238c5ea9772ccea5a21c9c928b6fd9;p=UglifyJS.git 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 --- diff --git a/lib/ast.js b/lib/ast.js index afbd775f..1ac19268 100644 --- a/lib/ast.js +++ b/lib/ast.js @@ -295,7 +295,8 @@ var AST_Toplevel = DEFNODE("Toplevel", "globals", { 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); } })); } @@ -306,22 +307,22 @@ var AST_Toplevel = DEFNODE("Toplevel", "globals", { 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); } } }));