diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2017-06-27 23:53:42 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-27 23:53:42 +0800 |
commit | f0a99125eef4a95a3c4bead81b3bf9a99b207019 (patch) | |
tree | ef1ddd4d767477cacc095e7a22c71ef71cc9071b | |
parent | 1e4de2e6d31a50dafee4a4e4d020f22691d22292 (diff) | |
download | tracifyjs-f0a99125eef4a95a3c4bead81b3bf9a99b207019.tar.gz tracifyjs-f0a99125eef4a95a3c4bead81b3bf9a99b207019.zip |
improve `unsafe_Func` (#2171)
- minimise disturbance to `compute_char_frequency()`
- remove extraneous quotation marks
-rw-r--r-- | lib/compress.js | 22 | ||||
-rw-r--r-- | test/compress/functions.js | 2 |
2 files changed, 12 insertions, 12 deletions
diff --git a/lib/compress.js b/lib/compress.js index 0f00d091..352be282 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -3120,7 +3120,7 @@ merge(Compressor.prototype, { // https://github.com/mishoo/UglifyJS2/issues/203 // if the code argument is a constant, then we can minify it. try { - var code = "NaN(function(" + self.args.slice(0, -1).map(function(arg) { + var code = "n(function(" + self.args.slice(0, -1).map(function(arg) { return arg.value; }).join(",") + "){" + self.args[self.args.length - 1].value + "})"; var ast = parse(code); @@ -3140,18 +3140,18 @@ merge(Compressor.prototype, { return true; } })); - var args = fun.argnames.map(function(arg, i) { - return make_node(AST_String, self.args[i], { - value: arg.print_to_string() - }); - }); var code = OutputStream(); AST_BlockStatement.prototype._codegen.call(fun, fun, code); - code = code.toString().replace(/^\{|\}$/g, ""); - args.push(make_node(AST_String, self.args[self.args.length - 1], { - value: code - })); - self.args = args; + self.args = [ + make_node(AST_String, self, { + value: fun.argnames.map(function(arg) { + return arg.print_to_string(); + }).join(",") + }), + make_node(AST_String, self.args[self.args.length - 1], { + value: code.get().replace(/^\{|\}$/g, "") + }) + ]; return self; } catch (ex) { if (ex instanceof JS_Parse_Error) { diff --git a/test/compress/functions.js b/test/compress/functions.js index b5def8e1..c8efc12c 100644 --- a/test/compress/functions.js +++ b/test/compress/functions.js @@ -265,7 +265,7 @@ issue_203: { } expect: { var m = {}; - var fn = Function("n", "o", "o.exports=42"); + var fn = Function("n,o", "o.exports=42"); fn(null, m, m.exports); console.log(m.exports); } |