diff options
Diffstat (limited to 'test/compress/keep_fargs.js')
-rw-r--r-- | test/compress/keep_fargs.js | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/test/compress/keep_fargs.js b/test/compress/keep_fargs.js index 440abbd9..29308ff3 100644 --- a/test/compress/keep_fargs.js +++ b/test/compress/keep_fargs.js @@ -1155,3 +1155,273 @@ issue_3423_2: { } expect_stdout: "1" } + +collapse_vars_repeated: { + options = { + booleans: true, + collapse_vars: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: "strict", + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, + } + input: { + function f1() { + var dummy = 3, a = 5, unused = 2, a = 1, a = 3; + return -a; + } + function f2(x) { + var a = 3, a = x; + return a; + } + (function(x) { + var a = "GOOD" + x, e = "BAD", k = "!", e = a; + console.log(e + k); + })("!"), + (function(x) { + var a = "GOOD" + x, e = "BAD" + x, k = "!", e = a; + console.log(e + k); + })("!"); + } + expect: { + function f1() { + return -3; + } + function f2(x) { + return x; + } + (function() { + console.log("GOOD!!"); + })(), + (function() { + console.log("GOOD!!"); + })(); + } + expect_stdout: true +} + +chained_3: { + options = { + collapse_vars: true, + keep_fargs: "strict", + unused: true, + } + input: { + console.log(function(a, b) { + var c = a, c = b; + b++; + return c; + }(1, 2)); + } + expect: { + console.log(function(b) { + var c = 1; + c = b; + b++; + return c; + }(2)); + } + expect_stdout: "2" +} + +replace_all_var_scope: { + rename = true + options = { + collapse_vars: true, + keep_fargs: "strict", + unused: true, + } + mangle = {} + input: { + var a = 100, b = 10; + (function(r, a) { + switch (~a) { + case (b += a): + case a++: + } + })(--b, a); + console.log(a, b); + } + expect: { + var a = 100, b = 10; + (function(c) { + switch (~a) { + case (b += a): + case c++: + } + })((--b, a)); + console.log(a, b); + } + expect_stdout: "100 109" +} + +issue_1583: { + options = { + keep_fargs: "strict", + passes: 2, + reduce_funcs: true, + reduce_vars: true, + unused: true, + } + input: { + function m(t) { + (function(e) { + t = e(); + })(function() { + return (function(a) { + return a; + })(function(a) {}); + }); + } + } + expect: { + function m(t) { + (function() { + (function() { + return (function() { + return function(a) {}; + })(); + })(); + })(); + } + } +} + +issues_3267_1: { + options = { + collapse_vars: true, + conditionals: true, + dead_code: true, + evaluate: true, + inline: true, + keep_fargs: "strict", + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, + } + input: { + (function(x) { + x(); + })(function() { + (function(i) { + if (i) + return console.log("PASS"); + throw "FAIL"; + })(Object()); + }); + } + expect: { + !function() { + if (Object()) + return console.log("PASS"); + throw "FAIL"; + }(); + } + expect_stdout: "PASS" +} + +trailing_argument_side_effects: { + options = { + keep_fargs: "strict", + unused: true, + } + input: { + function f() { + return "FAIL"; + } + console.log(function(a, b) { + return b || "PASS"; + }(f())); + } + expect: { + function f() { + return "FAIL"; + } + console.log(function(b) { + return b || "PASS"; + }(void f())); + } + expect_stdout: "PASS" +} + +recursive_iife_1: { + options = { + keep_fargs: "strict", + reduce_vars: true, + unused: true, + } + input: { + console.log(function f(a, b) { + return b || f("FAIL", "PASS"); + }()); + } + expect: { + console.log(function f(a, b) { + return b || f("FAIL", "PASS"); + }()); + } + expect_stdout: "PASS" +} + +recursive_iife_2: { + options = { + keep_fargs: "strict", + reduce_vars: true, + unused: true, + } + input: { + console.log(function f(a, b) { + return b || f("FAIL", "PASS"); + }(null, 0)); + } + expect: { + console.log(function f(a, b) { + return b || f("FAIL", "PASS"); + }(0, 0)); + } + expect_stdout: "PASS" +} + +recursive_iife_3: { + options = { + keep_fargs: false, + reduce_vars: true, + unused: true, + } + input: { + var a = 1, c = "PASS"; + (function() { + function f(b, d, e) { + a-- && f(null, 42, 0); + e && (c = "FAIL"); + d && d.p; + } + var a_1 = f(); + })(); + console.log(c); + } + expect: { + var a = 1, c = "PASS"; + (function() { + (function f(b, d, e) { + a-- && f(null, 42, 0); + e && (c = "FAIL"); + d && d.p; + })(); + })(); + console.log(c); + } + expect_stdout: "PASS" +} |