diff options
Diffstat (limited to 'test/compress/default-values.js')
-rw-r--r-- | test/compress/default-values.js | 952 |
1 files changed, 952 insertions, 0 deletions
diff --git a/test/compress/default-values.js b/test/compress/default-values.js new file mode 100644 index 00000000..ffc351c8 --- /dev/null +++ b/test/compress/default-values.js @@ -0,0 +1,952 @@ +arrow_1: { + input: { + console.log(((a = "PASS") => a)()); + } + expect_exact: 'console.log(((a="PASS")=>a)());' + expect_stdout: "PASS" + node_version: ">=6" +} + +arrow_2: { + input: { + console.log((([ a = "FAIL" ]) => a)([ "PASS" ])); + } + expect_exact: 'console.log((([a="FAIL"])=>a)(["PASS"]));' + expect_stdout: "PASS" + node_version: ">=6" +} + +arrow_3: { + input: { + (([ a = console ] = null) => a.log("PASS"))(""); + } + expect_exact: '(([a=console]=null)=>a.log("PASS"))("");' + expect_stdout: "PASS" + node_version: ">=6" +} + +assign: { + input: { + [ a = "PASS" ] = []; + console.log(a); + } + expect_exact: '[a="PASS"]=[];console.log(a);' + expect_stdout: "PASS" + node_version: ">=6" +} + +declaration_var: { + input: { + var [ a = "PASS" ] = [ , ]; + console.log(a); + } + expect_exact: 'var[a="PASS"]=[,];console.log(a);' + expect_stdout: "PASS" + node_version: ">=6" +} + +declaration_const: { + input: { + const [ a = "FAIL" ] = [ "PASS" ]; + console.log(a); + } + expect_exact: 'const[a="FAIL"]=["PASS"];console.log(a);' + expect_stdout: "PASS" + node_version: ">=6" +} + +declaration_let: { + input: { + let [ a = "PASS" ] = [ void 42 ]; + console.log(a); + } + expect_exact: 'let[a="PASS"]=[void 42];console.log(a);' + expect_stdout: "PASS" + node_version: ">=6" +} + +object_shorthand_assign: { + input: { + ({ a = "PASS" } = 42); + console.log(a); + } + expect_exact: '({a:a="PASS"}=42);console.log(a);' + expect_stdout: "PASS" + node_version: ">=6" +} + +object_shorthand_declaration: { + input: { + var { a = "PASS" } = 42; + console.log(a); + } + expect_exact: 'var{a:a="PASS"}=42;console.log(a);' + expect_stdout: "PASS" + node_version: ">=6" +} + +object_shorthand_function: { + input: { + (function({ a = "PASS" }) { + console.log(a); + })(42); + } + expect_exact: '(function({a:a="PASS"}){console.log(a)})(42);' + expect_stdout: "PASS" + node_version: ">=6" +} + +retain_arguments_1: { + options = { + arguments: true, + } + input: { + console.log(function(a = "FAIL") { + return arguments[0]; + }() || "PASS"); + } + expect: { + console.log(function(a = "FAIL") { + return arguments[0]; + }() || "PASS"); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +retain_arguments_2: { + options = { + arguments: true, + } + input: { + console.log(function(a, b = null) { + a = "FAIL"; + return arguments[0]; + }("PASS", 42)); + } + expect: { + console.log(function(a, b = null) { + a = "FAIL"; + return arguments[0]; + }("PASS", 42)); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +process_boolean_returns: { + options = { + booleans: true, + evaluate: true, + reduce_vars: true, + } + input: { + console.log(function(a = console.log("FAIL 1")) { + return a() ? "PASS" : "FAIL 2"; + }(function() { + return 42; + })); + } + expect: { + console.log(function(a = console.log("FAIL 1")) { + return a() ? "PASS" : "FAIL 2"; + }(function() { + return 1; + })); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +collapse_value_1: { + options = { + collapse_vars: true, + unused: true, + } + input: { + console.log(function(a = "PASS") { + return a; + }()); + } + expect: { + console.log(function(a) { + return "PASS"; + }()); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +collapse_value_2: { + options = { + collapse_vars: true, + unused: true, + } + input: { + (function(a = console) { + return a; + })().log("PASS"); + } + expect: { + (function(a) { + return console; + })().log("PASS"); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +flatten_if: { + options = { + conditionals: true, + } + input: { + if (console.log("PASS")) { + var [ + a = function b() { + for (c in b); + }, + ] = 0; + } + } + expect: { + var a; + console.log("PASS") && ([ + a = function b() { + for (c in b); + }, + ] = 0); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +maintain_if: { + options = { + conditionals: true, + } + input: { + if (a) + for (;;); + else + var [ a = "PASS" ] = []; + console.log(a); + } + expect: { + if (a) + for (;;); + else + var [ a = "PASS" ] = []; + console.log(a); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +reduce_value: { + options = { + evaluate: true, + reduce_vars: true, + unused: true, + } + input: { + console.log(function(a = "PASS") { + return a; + }()); + } + expect: { + console.log("PASS"); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +evaluate_iife: { + options = { + evaluate: true, + } + input: { + console.log(function(a = "PASS") { + return a; + }()); + } + expect: { + console.log("PASS"); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +unsafe_evaluate_iife_1: { + options = { + evaluate: true, + unsafe: true, + } + input: { + console.log(function([ a ] = []) { + return "PASS"; + }()); + } + expect: { + console.log(function([ a ] = []) { + return "PASS"; + }()); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +unsafe_evaluate_iife_2: { + options = { + evaluate: true, + reduce_vars: true, + unsafe: true, + } + input: { + console.log(function([ a ] = []) { + return a[0]; + }([ [ "PASS" ] ])); + } + expect: { + console.log(function([ a ] = []) { + return a[0]; + }([ [ "PASS" ] ])); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +inline_direct: { + options = { + default_values: true, + inline: true, + unused: true, + } + input: { + console.log(function(a = "FAIL") { + return a; + }("PASS")); + } + expect: { + console.log("PASS"); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +inline_constant: { + options = { + inline: true, + } + input: { + console.log(function(a = console.log("foo")) { + return "bar"; + }(void console.log("baz"))); + } + expect: { + console.log((void console.log("baz"), console.log("foo"), "bar")); + } + expect_stdout: [ + "baz", + "foo", + "bar", + ] + node_version: ">=6" +} + +inline_function: { + options = { + default_values: true, + inline: true, + sequences: true, + side_effects: true, + toplevel: true, + unused: true, + } + input: { + (function(a = console.log("foo"), b = console.log("bar")) { + console.log("baz"); + }(void console.log("moo"), 42)); + } + expect: { + console.log("moo"), + console.log("foo"), + console.log("baz"); + } + expect_stdout: [ + "moo", + "foo", + "baz", + ] + node_version: ">=6" +} + +inline_loop_1: { + options = { + inline: true, + reduce_vars: true, + toplevel: true, + unused: true, + } + input: { + while (function f(a = "PASS") { + console.log(a); + }()); + } + expect: { + while (a = "PASS", void console.log(a)); + var a; + } + expect_stdout: "PASS" + node_version: ">=6" +} + +inline_loop_2: { + options = { + inline: true, + toplevel: true, + } + input: { + while (function(a = [ "PASS" ]) { + var a = function f(b) { + console.log(a[b]); + }(0); + }()); + } + expect: { + while (a = [ "PASS" ], a = function f(b) { + console.log(a[b]); + }(0), void 0) ; + var a; + } + expect_stdout: "PASS" + node_version: ">=6" +} + +drop_empty_iife: { + options = { + side_effects: true, + } + input: { + console.log(function(a = console.log("foo")) {}(void console.log("baz"))); + } + expect: { + console.log((console.log("baz"), void console.log("foo"))); + } + expect_stdout: [ + "baz", + "foo", + "undefined", + ] + node_version: ">=6" +} + +retain_empty_iife: { + options = { + side_effects: true, + } + input: { + var a; + try { + (function(a = a) {})(); + } catch (e) { + console.log("PASS"); + } + } + expect: { + var a; + try { + (function(a = a) {})(); + } catch (e) { + console.log("PASS"); + } + } + expect_stdout: "PASS" + node_version: ">=6" +} + +retain_fargs: { + options = { + unused: true, + } + input: { + (function([ a = console.log("PASS") ]) {})([]); + } + expect: { + (function([ a = console.log("PASS") ]) {})([]); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +drop_fargs: { + options = { + keep_fargs: "strict", + unused: true, + } + input: { + console.log(function(a = 42, b = console.log("foo"), c = true) { + return "bar"; + }(console.log("baz"), "moo", false)); + } + expect: { + console.log(function(b = console.log("foo")) { + return "bar"; + }((console.log("baz"), "moo"))); + } + expect_stdout: [ + "baz", + "bar", + ] + expect_warnings: [ + "WARN: Dropping unused function argument c [test/compress/default-values.js:1,61]", + "WARN: Side effects in default value of unused variable b [test/compress/default-values.js:1,37]", + ] + node_version: ">=6" +} + +unused_var_1: { + options = { + toplevel: true, + unused: true, + } + input: { + var [ a = 42 ] = [ console.log("PASS") ]; + } + expect: { + console.log("PASS"); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +unused_var_2: { + options = { + toplevel: true, + unused: true, + } + input: { + var { + p: [ a ] = "" + console.log("FAIL"), + } = { + p: [ console.log("PASS") ], + }; + } + expect: { + var { + p: [] = [ console.log("FAIL") ], + } = { + p: [ console.log("PASS") ], + }; + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_var_1: { + mangle = { + toplevel: false, + } + input: { + var N = 1, [ { + pname: p = "x", + i: n = N, + }, { + [p + n]: v, + } ] = [ {}, { + x1: "PASS", + } ]; + console.log(v); + } + expect: { + var N = 1, [ { + pname: p = "x", + i: n = N, + }, { + [p + n]: v, + } ] = [ {}, { + x1: "PASS", + } ]; + console.log(v); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_var_1_toplevel: { + mangle = { + toplevel: true, + } + input: { + var N = 1, [ { + pname: p = "x", + i: n = N, + }, { + [p + n]: v, + } ] = [ {}, { + x1: "PASS", + } ]; + console.log(v); + } + expect: { + var o = 1, [ { + pname: a = "x", + i: e = o, + }, { + [a + e]: l, + } ] = [ {}, { + x1: "PASS", + } ]; + console.log(l); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_var_2: { + mangle = { + toplevel: false, + } + input: { + var N = 1, [ { + pname: p = "x", + i: n = N, + } = {}, { + [p + n]: v, + } ] = [ , { + x1: "PASS", + } ]; + console.log(v); + } + expect: { + var N = 1, [ { + pname: p = "x", + i: n = N, + } = {}, { + [p + n]: v, + } ] = [ , { + x1: "PASS", + } ]; + console.log(v); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_var_2_toplevel: { + mangle = { + toplevel: true, + } + input: { + var N = 1, [ { + pname: p = "x", + i: n = N, + } = {}, { + [p + n]: v, + } ] = [ , { + x1: "PASS", + } ]; + console.log(v); + } + expect: { + var o = 1, [ { + pname: a = "x", + i: e = o, + } = {}, { + [a + e]: l, + } ] = [ , { + x1: "PASS", + } ]; + console.log(l); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_function_1: { + mangle = { + toplevel: false, + } + input: { + var N = 1; + (function(o, { + pname: p, + } = o, { + [p + N]: v, + } = o) { + let N; + console.log(v); + })({ + pname: "x", + x1: "PASS", + }); + } + expect: { + var N = 1; + (function(n, { + pname: e, + } = n, { + [e + N]: o, + } = n) { + let a; + console.log(o); + })({ + pname: "x", + x1: "PASS", + }); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_function_1_toplevel: { + mangle = { + toplevel: true, + } + input: { + var N = 1; + (function(o, { + pname: p, + } = o, { + [p + N]: v, + } = o) { + let N; + console.log(v); + })({ + pname: "x", + x1: "PASS", + }); + } + expect: { + var l = 1; + (function(n, { + pname: e, + } = n, { + [e + l]: o, + } = n) { + let a; + console.log(o); + })({ + pname: "x", + x1: "PASS", + }); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_function_2: { + mangle = { + toplevel: false, + } + input: { + var N = 1; + (function({ + pname: p = "x", + i: n = N, + }, { + [p + n]: v, + }) { + let N; + console.log(v); + })({}, { + x1: "PASS", + }); + } + expect: { + var N = 1; + (function({ + pname: n = "x", + i: o = N, + }, { + [n + o]: e, + }) { + let l; + console.log(e); + })({}, { + x1: "PASS", + }); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_function_2_toplevel: { + mangle = { + toplevel: true, + } + input: { + var N = 1; + (function({ + pname: p = "x", + i: n = N, + }, { + [p + n]: v, + }) { + let N; + console.log(v); + })({}, { + x1: "PASS", + }); + } + expect: { + var a = 1; + (function({ + pname: n = "x", + i: o = a, + }, { + [n + o]: e, + }) { + let l; + console.log(e); + })({}, { + x1: "PASS", + }); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_arrow_1: { + mangle = { + toplevel: false, + } + input: { + var N = 1; + ((o, { + pname: p, + } = o, { + [p + N]: v, + } = o) => { + let N; + console.log(v); + })({ + pname: "x", + x1: "PASS", + }); + } + expect: { + var N = 1; + ((e, { + pname: a, + } = e, { + [a + N]: l, + } = e) => { + let n; + console.log(l); + })({ + pname: "x", + x1: "PASS", + }); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_arrow_1_toplevel: { + mangle = { + toplevel: true, + } + input: { + var N = 1; + ((o, { + pname: p, + } = o, { + [p + N]: v, + } = o) => { + let N; + console.log(v); + })({ + pname: "x", + x1: "PASS", + }); + } + expect: { + var o = 1; + ((e, { + pname: a, + } = e, { + [a + o]: l, + } = e) => { + let n; + console.log(l); + })({ + pname: "x", + x1: "PASS", + }); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_arrow_2: { + mangle = { + toplevel: false, + } + input: { + var N = 1; + (({ + pname: p = "x", + i: n = N, + }, { + [p + n]: v, + }) => { + let N; + console.log(v); + })({}, { + x1: "PASS", + }); + } + expect: { + var N = 1; + (({ + pname: e = "x", + i: l = N, + }, { + [e + l]: o, + }) => { + let a; + console.log(o); + })({}, { + x1: "PASS", + }); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +mangle_arrow_2_toplevel: { + mangle = { + toplevel: true, + } + input: { + var N = 1; + (({ + pname: p = "x", + i: n = N, + }, { + [p + n]: v, + }) => { + let N; + console.log(v); + })({}, { + x1: "PASS", + }); + } + expect: { + var n = 1; + (({ + pname: e = "x", + i: l = n, + }, { + [e + l]: o, + }) => { + let a; + console.log(o); + })({}, { + x1: "PASS", + }); + } + expect_stdout: "PASS" + node_version: ">=6" +} |