replace keep_fargs default to false (#4443)

This commit is contained in:
Alex Lam S.L 2020-12-24 01:56:02 +00:00 committed by GitHub
parent 2390fae5c4
commit 6988cd9558
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 219 additions and 263 deletions

View File

@ -683,9 +683,9 @@ to be `false` and all symbol names will be omitted.
- `join_vars` (default: `true`) -- join consecutive `var` statements - `join_vars` (default: `true`) -- join consecutive `var` statements
- `keep_fargs` (default: `strict`) -- Discard unused function arguments. Code - `keep_fargs` (default: `false`) -- discard unused function arguments except
which relies on `Function.length` will break if this is done indiscriminately, when unsafe to do so, e.g. code which relies on `Function.prototype.length`.
i.e. when passing `true`. Pass `false` to always retain function arguments. Pass `true` to always retain function arguments.
- `keep_fnames` (default: `false`) -- Pass `true` to prevent the - `keep_fnames` (default: `false`) -- Pass `true` to prevent the
compressor from discarding function names. Useful for code relying on compressor from discarding function names. Useful for code relying on

View File

@ -71,7 +71,7 @@ function Compressor(options, false_by_default) {
if_return : !false_by_default, if_return : !false_by_default,
inline : !false_by_default, inline : !false_by_default,
join_vars : !false_by_default, join_vars : !false_by_default,
keep_fargs : false_by_default || "strict", keep_fargs : false_by_default,
keep_fnames : false, keep_fnames : false,
keep_infinity : false, keep_infinity : false,
loops : !false_by_default, loops : !false_by_default,
@ -113,8 +113,7 @@ function Compressor(options, false_by_default) {
} }
} }
if (this.options["inline"] === true) this.options["inline"] = 3; if (this.options["inline"] === true) this.options["inline"] = 3;
var keep_fargs = this.options["keep_fargs"]; this.drop_fargs = this.options["keep_fargs"] ? return_false : function(lambda, parent) {
this.drop_fargs = keep_fargs == "strict" ? function(lambda, parent) {
if (lambda.length_read) return false; if (lambda.length_read) return false;
var name = lambda.name; var name = lambda.name;
if (!name) return parent && parent.TYPE == "Call" && parent.expression === lambda; if (!name) return parent && parent.TYPE == "Call" && parent.expression === lambda;
@ -123,7 +122,7 @@ function Compressor(options, false_by_default) {
if (def.direct_access) return false; if (def.direct_access) return false;
var escaped = def.escaped; var escaped = def.escaped;
return escaped && escaped.depth != 1; return escaped && escaped.depth != 1;
} : keep_fargs ? return_false : return_true; };
var pure_funcs = this.options["pure_funcs"]; var pure_funcs = this.options["pure_funcs"];
if (typeof pure_funcs == "function") { if (typeof pure_funcs == "function") {
this.pure_funcs = pure_funcs; this.pure_funcs = pure_funcs;

View File

@ -78,7 +78,7 @@ replace_index_strict: {
] ]
} }
replace_index_keep_fargs: { replace_index_drop_fargs_1: {
options = { options = {
arguments: true, arguments: true,
evaluate: true, evaluate: true,
@ -128,7 +128,7 @@ replace_index_keep_fargs: {
] ]
} }
replace_index_keep_fargs_strict: { replace_index_drop_fargs_2: {
options = { options = {
arguments: true, arguments: true,
evaluate: true, evaluate: true,
@ -412,7 +412,7 @@ issue_3273_global_strict_reduce_vars: {
] ]
} }
issue_3273_keep_fargs_false: { issue_3273_drop_fargs_1: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: false, keep_fargs: false,
@ -435,10 +435,10 @@ issue_3273_keep_fargs_false: {
expect_stdout: "1" expect_stdout: "1"
} }
issue_3273_keep_fargs_strict: { issue_3273_drop_fargs_2: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
} }
input: { input: {
@ -633,7 +633,7 @@ issue_3282_2_passes: {
issue_3420_1: { issue_3420_1: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
console.log(function() { console.log(function() {
@ -655,7 +655,7 @@ issue_3420_1: {
issue_3420_2: { issue_3420_2: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
var foo = function() { var foo = function() {
@ -675,7 +675,7 @@ issue_3420_2: {
issue_3420_3: { issue_3420_3: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
"use strict"; "use strict";
@ -697,7 +697,7 @@ issue_3420_3: {
issue_3420_4: { issue_3420_4: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
!function() { !function() {
@ -722,7 +722,7 @@ issue_3420_4: {
issue_3420_5: { issue_3420_5: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
"use strict"; "use strict";
@ -749,7 +749,7 @@ issue_3420_5: {
issue_3420_6: { issue_3420_6: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
console.log(function() { console.log(function() {
@ -767,7 +767,7 @@ issue_3420_6: {
issue_3420_7: { issue_3420_7: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
"use strict"; "use strict";
@ -811,7 +811,7 @@ issue_4200: {
issue_4291_1: { issue_4291_1: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
console.log(function() { console.log(function() {
@ -831,7 +831,7 @@ issue_4291_1: {
issue_4291_2: { issue_4291_2: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
var a = function() { var a = function() {
@ -855,7 +855,7 @@ issue_4291_2: {
issue_4397: { issue_4397: {
options = { options = {
arguments: true, arguments: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
console.log(typeof function() { console.log(typeof function() {

View File

@ -419,7 +419,7 @@ collapse_value: {
options = { options = {
arrows: true, arrows: true,
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -437,7 +437,7 @@ collapse_value: {
reduce_iife_1: { reduce_iife_1: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }

View File

@ -353,7 +353,7 @@ property_access_expression: {
reduce_iife_1: { reduce_iife_1: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }

View File

@ -481,7 +481,7 @@ retain_fargs: {
drop_fargs: { drop_fargs: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {

View File

@ -40,7 +40,7 @@ redefine_arguments_2: {
redefine_arguments_3: { redefine_arguments_3: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -259,7 +259,7 @@ funarg_side_effects_3: {
funarg_unused_1: { funarg_unused_1: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -318,7 +318,7 @@ funarg_unused_3: {
funarg_unused_4: { funarg_unused_4: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
pure_getters: "strict", pure_getters: "strict",
unused: true, unused: true,
} }
@ -384,7 +384,7 @@ funarg_unused_6_inline: {
funarg_unused_6_keep_fargs: { funarg_unused_6_keep_fargs: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -426,7 +426,7 @@ funarg_collapse_vars_1: {
funarg_collapse_vars_2: { funarg_collapse_vars_2: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -505,7 +505,7 @@ funarg_reduce_vars_1: {
funarg_reduce_vars_2: { funarg_reduce_vars_2: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
pure_getters: "strict", pure_getters: "strict",
reduce_vars: true, reduce_vars: true,
unsafe: true, unsafe: true,
@ -1123,7 +1123,7 @@ join_vars: {
keep_fargs: { keep_fargs: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -1776,7 +1776,7 @@ issue_4319: {
issue_4321: { issue_4321: {
options = { options = {
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
try { try {

View File

@ -4,15 +4,16 @@ unused_funarg_1: {
unused: true, unused: true,
} }
input: { input: {
function f(a, b, c, d, e) { console.log(function f(a, b, c, d, e) {
return a + b; return a + b;
} }(14, 28));
} }
expect: { expect: {
function f(a, b) { console.log(function(a, b) {
return a + b; return a + b;
}(14, 28));
} }
} expect_stdout: "42"
} }
unused_funarg_2: { unused_funarg_2: {
@ -21,15 +22,16 @@ unused_funarg_2: {
unused: true, unused: true,
} }
input: { input: {
function f(a, b, c, d, e) { console.log(function f(a, b, c, d, e) {
return a + c; return a + c;
} }(14, 21, 28));
} }
expect: { expect: {
function f(a, b, c) { console.log(function(a, c) {
return a + c; return a + c;
}(14, 28));
} }
} expect_stdout: "42"
} }
unused_nested_function: { unused_nested_function: {
@ -357,37 +359,6 @@ drop_toplevel_vars: {
} }
} }
drop_toplevel_vars_fargs: {
options = {
keep_fargs: false,
toplevel: "vars",
unused: true,
}
input: {
var a, b = 1, c = g;
function f(d) {
return function() {
c = 2;
};
}
a = 2;
function g() {}
function h() {}
console.log(b = 3);
}
expect: {
function f() {
return function() {
2;
};
}
2;
function g() {}
function h() {}
console.log(3);
}
}
drop_toplevel_all: { drop_toplevel_all: {
options = { options = {
toplevel: true, toplevel: true,
@ -625,13 +596,14 @@ drop_fargs: {
unused: true, unused: true,
} }
input: { input: {
function f(a) { console.log(function f(a) {
var b = a; var b = a;
} }());
} }
expect: { expect: {
function f() {} console.log(function() {}());
} }
expect_stdout: "undefined"
} }
drop_fnames: { drop_fnames: {
@ -2027,7 +1999,7 @@ issue_3192_1: {
issue_3192_2: { issue_3192_2: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -2435,7 +2407,7 @@ issue_3673: {
issue_3746: { issue_3746: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
side_effects: true, side_effects: true,
unused: true, unused: true,
} }
@ -2713,7 +2685,7 @@ issue_3956: {
issue_3962_1: { issue_3962_1: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
toplevel: true, toplevel: true,
unused: true, unused: true,
@ -2745,7 +2717,7 @@ issue_3962_1: {
issue_3962_2: { issue_3962_2: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
side_effects: true, side_effects: true,
toplevel: true, toplevel: true,
@ -2948,7 +2920,7 @@ issue_4133: {
issue_4144: { issue_4144: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }

View File

@ -229,7 +229,7 @@ issue_203: {
} }
expect: { expect: {
var m = {}; var m = {};
var fn = Function("n,o", "o.exports=42"); var fn = Function("n,o,t", "o.exports=42");
fn(null, m, m.exports); fn(null, m, m.exports);
console.log(m.exports); console.log(m.exports);
} }
@ -4230,7 +4230,7 @@ substitute: {
substitute_add_farg: { substitute_add_farg: {
options = { options = {
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
} }
input: { input: {
function f(g) { function f(g) {
@ -4411,7 +4411,9 @@ substitute_drop_farg: {
return f; return f;
}, },
function() { function() {
return f; return function(d, e) {
return f(d, e);
};
}, },
].forEach(function(g) { ].forEach(function(g) {
console.log(g()(o), g().call(o, o)); console.log(g()(o), g().call(o, o));
@ -4594,7 +4596,7 @@ substitute_use_strict: {
issue_3833: { issue_3833: {
options = { options = {
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
toplevel: true, toplevel: true,
unused: true, unused: true,
@ -4751,7 +4753,7 @@ issue_4006: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
sequences: true, sequences: true,
side_effects: true, side_effects: true,

View File

@ -63,42 +63,81 @@ eval_unused: {
unused: true, unused: true,
} }
input: { input: {
function f1(a, eval, c, d, e) { function o(k) {
return a('c') + eval; return { c: 14 }[k];
}
function f2(a, b, c, d, e) {
return a + eval('c');
}
function f3(a, eval, c, d, e) {
return a + eval('c');
} }
console.log(function f1(a, eval, c, d, e) {
return a("c") + eval;
}(o, 28, true));
console.log(function f2(a, b, c, d, e) {
return a + eval("c");
}(14, true, 28));
console.log(function f3(a, eval, c, d, e) {
return a + eval("c");
}(28, o, true));
} }
expect: { expect: {
function f1(a, eval) { function o(k) {
return a('c') + eval; return { c: 14 }[k];
}
function f2(a, b, c, d, e) {
return a + eval('c');
}
function f3(a, eval, c, d, e) {
return a + eval('c');
} }
console.log(function(a, eval) {
return a("c") + eval;
}(o, 28));
console.log(function f2(a, b, c, d, e) {
return a + eval("c");
}(14, true, 28));
console.log(function f3(a, eval, c, d, e) {
return a + eval("c");
}(28, o, true));
} }
expect_stdout: [
"42",
"42",
"42",
]
} }
eval_mangle: { eval_mangle: {
mangle = { mangle = {}
}; beautify = {
beautify: true,
}
input: { input: {
function f1(a, eval, c, d, e) { function o(k) {
return a('c') + eval; return { cc: 14 }[k + "c"];
} }
function f2(a, b, c, d, e) { console.log(function f1(a, eval, c, d, e) {
return a + eval('c'); return a("c") + eval;
}(o, 28, true));
console.log(function f2(a, b, c, d, e) {
return a + eval("c");
}(14, true, 28));
console.log(function f3(a, eval, c, d, e) {
return a + eval("c");
}(28, o, true));
} }
function f3(a, eval, c, d, e) { expect_exact: [
return a + eval('c'); "function o(o) {",
} " return {",
} " cc: 14",
expect_exact: 'function f1(n,c,e,a,f){return n("c")+c}function f2(a,b,c,d,e){return a+eval("c")}function f3(a,eval,c,d,e){return a+eval("c")}' ' }[o + "c"];',
"}",
"",
"console.log(function o(c, e, n, r, t) {",
' return c("c") + e;',
"}(o, 28, true));",
"",
"console.log(function f2(a, b, c, d, e) {",
' return a + eval("c");',
"}(14, true, 28));",
"",
"console.log(function f3(a, eval, c, d, e) {",
' return a + eval("c");',
"}(28, o, true));",
]
expect_stdout: [
"42",
"42",
"42",
]
} }

View File

@ -790,7 +790,7 @@ issue_3795: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
join_vars: true, join_vars: true,
keep_fargs: "strict", keep_fargs: false,
loops: true, loops: true,
passes: 2, passes: 2,
reduce_vars: true, reduce_vars: true,

View File

@ -18,43 +18,6 @@ keep_fargs_false: {
function j(e) {} function j(e) {}
console.log(h(), i().length, j.length); console.log(h(), i().length, j.length);
} }
expect: {
console.log(function f() {
return f.length;
}(), function g() {
return g;
}().length);
function h() {
return h.length;
}
function i() {
return i;
}
function j() {}
console.log(h(), i().length, j.length);
}
}
keep_fargs_strict: {
options = {
keep_fargs: "strict",
unused: true,
}
input: {
console.log(function f(a) {
return f.length;
}(), function g(b) {
return g;
}().length);
function h(c) {
return h.length;
}
function i(d) {
return i;
}
function j(e) {}
console.log(h(), i().length, j.length);
}
expect: { expect: {
console.log(function f(a) { console.log(function f(a) {
return f.length; return f.length;
@ -121,7 +84,7 @@ replace_index: {
options = { options = {
arguments: true, arguments: true,
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
properties: true, properties: true,
} }
input: { input: {
@ -171,7 +134,7 @@ replace_index_strict: {
options = { options = {
arguments: true, arguments: true,
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
properties: true, properties: true,
reduce_vars: true, reduce_vars: true,
} }
@ -202,7 +165,7 @@ replace_index_strict: {
issue_1858: { issue_1858: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
pure_getters: true, pure_getters: true,
unused: true, unused: true,
} }
@ -224,7 +187,7 @@ issue_1858: {
issue_2187_2: { issue_2187_2: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -245,7 +208,7 @@ issue_2187_2: {
issue_2203_2: { issue_2203_2: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -280,7 +243,7 @@ issue_2203_2: {
issue_2298: { issue_2298: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
reduce_funcs: true, reduce_funcs: true,
reduce_vars: true, reduce_vars: true,
@ -323,7 +286,7 @@ issue_2298: {
issue_2319_1: { issue_2319_1: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -346,7 +309,7 @@ issue_2319_1: {
issue_2319_2: { issue_2319_2: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -371,7 +334,7 @@ issue_2319_2: {
issue_2319_3: { issue_2319_3: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -396,7 +359,7 @@ issue_2319_3: {
issue_2425_1: { issue_2425_1: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -419,7 +382,7 @@ issue_2425_1: {
issue_2425_2: { issue_2425_2: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -442,7 +405,7 @@ issue_2425_2: {
issue_2425_3: { issue_2425_3: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -465,7 +428,7 @@ issue_2425_3: {
issue_2436_13: { issue_2436_13: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -499,7 +462,7 @@ issue_2436_13: {
issue_2506: { issue_2506: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -538,7 +501,7 @@ issue_2506: {
issue_2226_1: { issue_2226_1: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
side_effects: true, side_effects: true,
unused: true, unused: true,
} }
@ -585,7 +548,7 @@ issue_2226_1: {
issue_2226_2: { issue_2226_2: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
sequences: true, sequences: true,
side_effects: true, side_effects: true,
unused: true, unused: true,
@ -607,7 +570,7 @@ issue_2226_2: {
issue_2226_3: { issue_2226_3: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
side_effects: true, side_effects: true,
unused: true, unused: true,
} }
@ -627,7 +590,7 @@ issue_2226_3: {
issue_3192: { issue_3192: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -657,7 +620,7 @@ issue_3192: {
if_increment: { if_increment: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }
@ -679,7 +642,7 @@ if_increment: {
try_increment: { try_increment: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }
@ -703,7 +666,7 @@ try_increment: {
issue_2630_3: { issue_2630_3: {
options = { options = {
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }
@ -740,7 +703,7 @@ issue_2630_3: {
issue_3364: { issue_3364: {
options = { options = {
functions: true, functions: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
toplevel: true, toplevel: true,
unused: true, unused: true,
@ -805,7 +768,7 @@ issue_3364: {
defun_label: { defun_label: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
reduce_funcs: true, reduce_funcs: true,
reduce_vars: true, reduce_vars: true,
@ -837,7 +800,7 @@ defun_label: {
iife_func_side_effects: { iife_func_side_effects: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
reduce_funcs: true, reduce_funcs: true,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -889,7 +852,7 @@ iife_func_side_effects: {
issue_1595_1: { issue_1595_1: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
reduce_funcs: true, reduce_funcs: true,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -909,7 +872,7 @@ issue_1595_1: {
issue_1595_2: { issue_1595_2: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
reduce_funcs: true, reduce_funcs: true,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -929,7 +892,7 @@ issue_1595_2: {
issue_1595_3: { issue_1595_3: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
reduce_funcs: true, reduce_funcs: true,
reduce_vars: true, reduce_vars: true,
@ -950,7 +913,7 @@ issue_1595_3: {
issue_1595_4: { issue_1595_4: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
reduce_funcs: true, reduce_funcs: true,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -972,7 +935,7 @@ issue_1595_4: {
duplicate_lambda_defun_name_1: { duplicate_lambda_defun_name_1: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
} }
input: { input: {
@ -992,7 +955,7 @@ duplicate_lambda_defun_name_1: {
duplicate_lambda_defun_name_2: { duplicate_lambda_defun_name_2: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -1013,7 +976,7 @@ duplicate_lambda_defun_name_2: {
function_name_mangle: { function_name_mangle: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
keep_fnames: true, keep_fnames: true,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -1031,7 +994,7 @@ function_name_mangle: {
function_name_mangle_ie8: { function_name_mangle_ie8: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
keep_fnames: true, keep_fnames: true,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
@ -1052,7 +1015,7 @@ function_name_mangle_ie8: {
issue_3420_1: { issue_3420_1: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -1075,7 +1038,7 @@ issue_3420_1: {
issue_3420_2: { issue_3420_2: {
options = { options = {
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -1096,7 +1059,7 @@ issue_3420_2: {
issue_3420_3: { issue_3420_3: {
options = { options = {
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }
@ -1118,7 +1081,7 @@ issue_3420_3: {
issue_3423_1: { issue_3423_1: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -1138,7 +1101,7 @@ issue_3423_1: {
issue_3423_2: { issue_3423_2: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -1165,7 +1128,7 @@ collapse_vars_repeated: {
hoist_funs: true, hoist_funs: true,
if_return: true, if_return: true,
join_vars: true, join_vars: true,
keep_fargs: "strict", keep_fargs: false,
loops: true, loops: true,
properties: true, properties: true,
reduce_funcs: true, reduce_funcs: true,
@ -1212,7 +1175,7 @@ collapse_vars_repeated: {
chained_3: { chained_3: {
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -1236,7 +1199,7 @@ replace_all_var_scope: {
rename = true rename = true
options = { options = {
collapse_vars: true, collapse_vars: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
mangle = {} mangle = {}
@ -1265,7 +1228,7 @@ replace_all_var_scope: {
issue_1583: { issue_1583: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
reduce_funcs: true, reduce_funcs: true,
reduce_vars: true, reduce_vars: true,
@ -1302,7 +1265,7 @@ issues_3267_1: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
sequences: true, sequences: true,
side_effects: true, side_effects: true,
@ -1331,7 +1294,7 @@ issues_3267_1: {
trailing_argument_side_effects: { trailing_argument_side_effects: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -1355,7 +1318,7 @@ trailing_argument_side_effects: {
recursive_iife_1: { recursive_iife_1: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }
@ -1374,7 +1337,7 @@ recursive_iife_1: {
recursive_iife_2: { recursive_iife_2: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }
@ -1455,7 +1418,7 @@ issue_3619: {
issue_4353_1: { issue_4353_1: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }
@ -1470,7 +1433,7 @@ issue_4353_1: {
issue_4353_2: { issue_4353_2: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,
} }

View File

@ -1026,7 +1026,7 @@ issue_4075: {
issue_4082: { issue_4082: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
loops: true, loops: true,
unused: true, unused: true,
} }
@ -1050,7 +1050,7 @@ issue_4082: {
issue_4084: { issue_4084: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
loops: true, loops: true,
passes: 2, passes: 2,
reduce_vars: true, reduce_vars: true,

View File

@ -327,7 +327,7 @@ issue_4103: {
issue_4107: { issue_4107: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
merge_vars: true, merge_vars: true,
reduce_vars: true, reduce_vars: true,
unused: true, unused: true,

View File

@ -685,7 +685,7 @@ issue_3858: {
options = { options = {
collapse_vars: true, collapse_vars: true,
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {
@ -711,7 +711,7 @@ inline_pure_call_1: {
options = { options = {
collapse_vars: true, collapse_vars: true,
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
sequences: true, sequences: true,
side_effects: true, side_effects: true,
@ -733,7 +733,7 @@ inline_pure_call_2: {
options = { options = {
collapse_vars: true, collapse_vars: true,
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
sequences: true, sequences: true,
side_effects: true, side_effects: true,
@ -756,7 +756,7 @@ inline_pure_call_3: {
collapse_vars: true, collapse_vars: true,
evaluate: true, evaluate: true,
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
reduce_vars: true, reduce_vars: true,
toplevel: true, toplevel: true,

View File

@ -2373,7 +2373,7 @@ redefine_farg_1: {
function f(a) { function f(a) {
return typeof a; return typeof a;
} }
function g() { function g(a) {
return "number"; return "number";
} }
function h(a, b) { function h(a, b) {
@ -6928,7 +6928,7 @@ issue_3622: {
options = { options = {
evaluate: true, evaluate: true,
inline: true, inline: true,
keep_fargs: "strict", keep_fargs: false,
reduce_vars: true, reduce_vars: true,
sequences: true, sequences: true,
toplevel: true, toplevel: true,
@ -7196,7 +7196,7 @@ issue_3894: {
issue_3922: { issue_3922: {
options = { options = {
evaluate: true, evaluate: true,
keep_fargs: "strict", keep_fargs: false,
pure_getters: "strict", pure_getters: "strict",
reduce_vars: true, reduce_vars: true,
side_effects: true, side_effects: true,

View File

@ -436,7 +436,7 @@ trim_new: {
issue_4325: { issue_4325: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
passes: 2, passes: 2,
pure_getters: "strict", pure_getters: "strict",
reduce_vars: true, reduce_vars: true,

View File

@ -192,7 +192,7 @@ keep_property_access: {
keep_fargs: { keep_fargs: {
options = { options = {
keep_fargs: "strict", keep_fargs: false,
unused: true, unused: true,
} }
input: { input: {

View File

@ -1,5 +1,5 @@
(function f(a) { console.log(function(undefined) {
do { return undefined[function() {
console.log(f.length); {}
} while (console.log(f += 0)); }] || 1 + .1 + .1;
})(); }(42));

View File

@ -1,19 +1,14 @@
// (beautified) // (beautified)
(function f(a) { console.log(function() {
do { return 1 + .1 + .1;
console.log(f.length); }());
} while (console.log(f += 0)); // output: 1.2000000000000002
})();
// output: 1
// function(){}0
// //
// minify: 0 // minify: 1.2
// function(){}0
// //
// options: { // options: {
// "compress": { // "compress": {
// "keep_fargs": false, // "unsafe_math": true
// "unsafe": true
// }, // },
// "mangle": false // "mangle": false
// } // }

View File

@ -1,8 +1,5 @@
console.log(function f(a) {
({ ({
set p(v) { set p(v) {
f++; console.log(+v + .1 + .1);
} }
}); }).p = 1;
return f.length;
}());

View File

@ -1,20 +1,16 @@
// (beautified) // (beautified)
console.log(function f(a) {
({ ({
set p(v) { set p(v) {
f++; console.log(1 + .1 + .1);
} }
}); }).p = 0;
return f.length; // output: 1.2000000000000002
}());
// output: 1
// //
// minify: 0 // minify: 1.2
// //
// options: { // options: {
// "compress": { // "compress": {
// "keep_fargs": false, // "unsafe_math": true
// "unsafe": true
// }, // },
// "mangle": false // "mangle": false
// } // }

View File

@ -37,8 +37,7 @@ describe("test/reduce.js", function() {
it("Should retain setter arguments", function() { it("Should retain setter arguments", function() {
var result = reduce_test(read("test/input/reduce/setter.js"), { var result = reduce_test(read("test/input/reduce/setter.js"), {
compress: { compress: {
keep_fargs: false, unsafe_math: true,
unsafe: true,
}, },
mangle: false, mangle: false,
}, { }, {
@ -110,28 +109,24 @@ describe("test/reduce.js", function() {
}); });
it("Should print correct output for irreducible test case", function() { it("Should print correct output for irreducible test case", function() {
var result = reduce_test([ var result = reduce_test([
"console.log(function f(a) {", "console.log(1 + .1 + .1);",
" return f.length;",
"}());",
].join("\n"), { ].join("\n"), {
compress: { compress: {
keep_fargs: false, unsafe_math: true,
}, },
mangle: false, mangle: false,
}); });
if (result.error) throw result.error; if (result.error) throw result.error;
assert.strictEqual(result.code, [ assert.strictEqual(result.code, [
"// (beautified)", "// (beautified)",
"console.log(function f(a) {", "console.log(1 + .1 + .1);",
" return f.length;", "// output: 1.2000000000000002",
"}());",
"// output: 1",
"// ", "// ",
"// minify: 0", "// minify: 1.2",
"// ", "// ",
"// options: {", "// options: {",
'// "compress": {', '// "compress": {',
'// "keep_fargs": false', '// "unsafe_math": true',
"// },", "// },",
'// "mangle": false', '// "mangle": false',
"// }", "// }",
@ -303,8 +298,7 @@ describe("test/reduce.js", function() {
if (semver.satisfies(process.version, "<=0.10")) return; if (semver.satisfies(process.version, "<=0.10")) return;
var result = reduce_test(read("test/input/reduce/diff_error.js"), { var result = reduce_test(read("test/input/reduce/diff_error.js"), {
compress: { compress: {
keep_fargs: false, unsafe_math: true,
unsafe: true,
}, },
mangle: false, mangle: false,
}, { }, {

View File

@ -28,7 +28,6 @@
}, },
{ {
"compress": { "compress": {
"keep_fargs": false,
"passes": 1e6, "passes": 1e6,
"sequences": 1e6, "sequences": 1e6,
"unsafe": true, "unsafe": true,