aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-06-27 23:53:42 +0800
committerGitHub <noreply@github.com>2017-06-27 23:53:42 +0800
commitf0a99125eef4a95a3c4bead81b3bf9a99b207019 (patch)
treeef1ddd4d767477cacc095e7a22c71ef71cc9071b
parent1e4de2e6d31a50dafee4a4e4d020f22691d22292 (diff)
downloadtracifyjs-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.js22
-rw-r--r--test/compress/functions.js2
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);
}