diff options
author | alexlamsl <alexlamsl@gmail.com> | 2018-07-01 14:34:42 +0800 |
---|---|---|
committer | alexlamsl <alexlamsl@gmail.com> | 2018-07-01 14:34:42 +0800 |
commit | 5ffc17d4aa36c40a4d5ebe558edbc734b45ca1dc (patch) | |
tree | 12f66c5bbd9b93a5f468cfad7349acea0900df28 | |
parent | 6aa750010f23acdc24078a5d7e66cef009cbf570 (diff) | |
download | tracifyjs-5ffc17d4aa36c40a4d5ebe558edbc734b45ca1dc.tar.gz tracifyjs-5ffc17d4aa36c40a4d5ebe558edbc734b45ca1dc.zip |
fix corner case in `unused`
56 files changed, 1573 insertions, 958 deletions
@@ -328,7 +328,7 @@ var AST_Toplevel = DEFNODE("Toplevel", "globals", { var body = this.body; var wrapped_tl = "(function(exports){'$ORIG';})(typeof " + name + "=='undefined'?(" + name + "={}):" + name + ");"; wrapped_tl = parse(wrapped_tl); - wrapped_tl = wrapped_tl.transform(new TreeTransformer(function before(node) { + wrapped_tl = wrapped_tl.transform(new TreeTransformer(function(node) { if (node instanceof AST_Directive && node.value == "$ORIG") { return MAP.splice(body); } diff --git a/lib/compress.js b/lib/compress.js index 70ee9363..da84df17 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -425,6 +425,7 @@ merge(Compressor.prototype, { } function safe_to_read(tw, def) { + if (def.single_use == "m") return false; if (tw.safe_ids[def.id]) { if (def.fixed == null) { var orig = def.orig[0]; @@ -705,7 +706,7 @@ merge(Compressor.prototype, { tw.loop_ids[d.id] = tw.in_loop; } var value; - if (d.fixed === undefined || !safe_to_read(tw, d) || d.single_use == "m") { + if (d.fixed === undefined || !safe_to_read(tw, d)) { d.fixed = false; } else if (d.fixed) { value = this.fixed_value(); @@ -3415,202 +3416,200 @@ merge(Compressor.prototype, { }); } // pass 3: we should drop declarations not in_use - var tt = new TreeTransformer( - function before(node, descend, in_list) { - var parent = tt.parent(); - if (drop_vars) { - var props = [], sym = assign_as_unused(node, props); - if (sym instanceof AST_SymbolRef) { - var def = sym.definition(); - var in_use = def.id in in_use_ids; - var value = null; - if (node instanceof AST_Assign) { - if (!in_use || node.left === sym && def.id in fixed_ids && fixed_ids[def.id] !== node) { - value = node.right; - } - } else if (!in_use) { - value = make_node(AST_Number, node, { - value: 0 - }); - } - if (value) { - props.push(value); - return maintain_this_binding(compressor, parent, node, make_sequence(node, props.map(function(prop) { - return prop.transform(tt); - }))); + var tt = new TreeTransformer(function(node, descend, in_list) { + var parent = tt.parent(); + if (drop_vars) { + var props = [], sym = assign_as_unused(node, props); + if (sym instanceof AST_SymbolRef) { + var def = sym.definition(); + var in_use = def.id in in_use_ids; + var value = null; + if (node instanceof AST_Assign) { + if (!in_use || node.left === sym && def.id in fixed_ids && fixed_ids[def.id] !== node) { + value = node.right; } + } else if (!in_use) { + value = make_node(AST_Number, node, { + value: 0 + }); + } + if (value) { + props.push(value); + return maintain_this_binding(compressor, parent, node, make_sequence(node, props.map(function(prop) { + return prop.transform(tt); + }))); } } - if (scope !== self) return; - if (node instanceof AST_Function - && node.name - && !compressor.option("keep_fnames")) { - var def = node.name.definition(); - // any declarations with same name will overshadow - // name of this anonymous function and can therefore - // never be used anywhere - if (!(def.id in in_use_ids) || def.orig.length > 1) node.name = null; - } - if (node instanceof AST_Lambda && !(node instanceof AST_Accessor)) { - var trim = !compressor.option("keep_fargs"); - for (var a = node.argnames, i = a.length; --i >= 0;) { - var sym = a[i]; - if (!(sym.definition().id in in_use_ids)) { - sym.__unused = true; - if (trim) { - a.pop(); - compressor[sym.unreferenced() ? "warn" : "info"]("Dropping unused function argument {name} [{file}:{line},{col}]", template(sym)); - } - } else { - trim = false; + } + if (scope !== self) return; + if (node instanceof AST_Function + && node.name + && !compressor.option("keep_fnames")) { + var def = node.name.definition(); + // any declarations with same name will overshadow + // name of this anonymous function and can therefore + // never be used anywhere + if (!(def.id in in_use_ids) || def.orig.length > 1) node.name = null; + } + if (node instanceof AST_Lambda && !(node instanceof AST_Accessor)) { + var trim = !compressor.option("keep_fargs"); + for (var a = node.argnames, i = a.length; --i >= 0;) { + var sym = a[i]; + if (!(sym.definition().id in in_use_ids)) { + sym.__unused = true; + if (trim) { + a.pop(); + compressor[sym.unreferenced() ? "warn" : "info"]("Dropping unused function argument {name} [{file}:{line},{col}]", template(sym)); } + } else { + trim = false; } } - if (drop_funcs && node instanceof AST_Defun && node !== self) { - var def = node.name.definition(); - if (!(def.id in in_use_ids)) { - compressor[node.name.unreferenced() ? "warn" : "info"]("Dropping unused function {name} [{file}:{line},{col}]", template(node.name)); - def.eliminated++; - return make_node(AST_EmptyStatement, node); - } + } + if (drop_funcs && node instanceof AST_Defun && node !== self) { + var def = node.name.definition(); + if (!(def.id in in_use_ids)) { + compressor[node.name.unreferenced() ? "warn" : "info"]("Dropping unused function {name} [{file}:{line},{col}]", template(node.name)); + def.eliminated++; + return make_node(AST_EmptyStatement, node); } - if (node instanceof AST_Definitions && !(parent instanceof AST_ForIn && parent.init === node)) { - // place uninitialized names at the start - var body = [], head = [], tail = []; - // for unused names whose initialization has - // side effects, we can cascade the init. code - // into the next one, or next statement. - var side_effects = []; - node.definitions.forEach(function(def) { - if (def.value) def.value = def.value.transform(tt); - var sym = def.name.definition(); - if (!drop_vars || sym.id in in_use_ids) { - if (def.value && sym.id in fixed_ids && fixed_ids[sym.id] !== def) { - def.value = def.value.drop_side_effect_free(compressor); - } - if (def.name instanceof AST_SymbolVar) { - var var_defs = var_defs_by_id.get(sym.id); - if (var_defs.length > 1 && (!def.value || sym.orig.indexOf(def.name) > sym.eliminated)) { - compressor.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]", template(def.name)); - if (def.value) { - var ref = make_node(AST_SymbolRef, def.name, def.name); - sym.references.push(ref); - var assign = make_node(AST_Assign, def, { - operator: "=", - left: ref, - right: def.value - }); - if (fixed_ids[sym.id] === def) { - fixed_ids[sym.id] = assign; - } - side_effects.push(assign.transform(tt)); + } + if (node instanceof AST_Definitions && !(parent instanceof AST_ForIn && parent.init === node)) { + // place uninitialized names at the start + var body = [], head = [], tail = []; + // for unused names whose initialization has + // side effects, we can cascade the init. code + // into the next one, or next statement. + var side_effects = []; + node.definitions.forEach(function(def) { + if (def.value) def.value = def.value.transform(tt); + var sym = def.name.definition(); + if (!drop_vars || sym.id in in_use_ids) { + if (def.value && sym.id in fixed_ids && fixed_ids[sym.id] !== def) { + def.value = def.value.drop_side_effect_free(compressor); + } + if (def.name instanceof AST_SymbolVar) { + var var_defs = var_defs_by_id.get(sym.id); + if (var_defs.length > 1 && (!def.value || sym.orig.indexOf(def.name) > sym.eliminated)) { + compressor.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]", template(def.name)); + if (def.value) { + var ref = make_node(AST_SymbolRef, def.name, def.name); + sym.references.push(ref); + var assign = make_node(AST_Assign, def, { + operator: "=", + left: ref, + right: def.value + }); + if (fixed_ids[sym.id] === def) { + fixed_ids[sym.id] = assign; } - remove(var_defs, def); - sym.eliminated++; - return; + side_effects.push(assign.transform(tt)); } + remove(var_defs, def); + sym.eliminated++; + return; } - if (def.value) { - if (side_effects.length > 0) { - if (tail.length > 0) { - side_effects.push(def.value); - def.value = make_sequence(def.value, side_effects); - } else { - body.push(make_node(AST_SimpleStatement, node, { - body: make_sequence(node, side_effects) - })); - } - side_effects = []; + } + if (def.value) { + if (side_effects.length > 0) { + if (tail.length > 0) { + side_effects.push(def.value); + def.value = make_sequence(def.value, side_effects); + } else { + body.push(make_node(AST_SimpleStatement, node, { + body: make_sequence(node, side_effects) + })); } - tail.push(def); - } else { - head.push(def); + side_effects = []; } - } else if (sym.orig[0] instanceof AST_SymbolCatch) { - var value = def.value && def.value.drop_side_effect_free(compressor); - if (value) side_effects.push(value); - def.value = null; + tail.push(def); + } else { head.push(def); + } + } else if (sym.orig[0] instanceof AST_SymbolCatch) { + var value = def.value && def.value.drop_side_effect_free(compressor); + if (value) side_effects.push(value); + def.value = null; + head.push(def); + } else { + var value = def.value && def.value.drop_side_effect_free(compressor); + if (value) { + compressor.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]", template(def.name)); + side_effects.push(value); } else { - var value = def.value && def.value.drop_side_effect_free(compressor); - if (value) { - compressor.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]", template(def.name)); - side_effects.push(value); - } else { - compressor[def.name.unreferenced() ? "warn" : "info"]("Dropping unused variable {name} [{file}:{line},{col}]", template(def.name)); - } - sym.eliminated++; + compressor[def.name.unreferenced() ? "warn" : "info"]("Dropping unused variable {name} [{file}:{line},{col}]", template(def.name)); } - }); - if (head.length > 0 || tail.length > 0) { - node.definitions = head.concat(tail); - body.push(node); - } - if (side_effects.length > 0) { - body.push(make_node(AST_SimpleStatement, node, { - body: make_sequence(node, side_effects) - })); - } - switch (body.length) { - case 0: - return in_list ? MAP.skip : make_node(AST_EmptyStatement, node); - case 1: - return body[0]; - default: - return in_list ? MAP.splice(body) : make_node(AST_BlockStatement, node, { - body: body - }); + sym.eliminated++; } + }); + if (head.length > 0 || tail.length > 0) { + node.definitions = head.concat(tail); + body.push(node); } - // certain combination of unused name + side effect leads to: - // https://github.com/mishoo/UglifyJS2/issues/44 - // https://github.com/mishoo/UglifyJS2/issues/1830 - // https://github.com/mishoo/UglifyJS2/issues/1838 - // that's an invalid AST. - // We fix it at this stage by moving the `var` outside the `for`. - if (node instanceof AST_For) { - descend(node, this); - var block; - if (node.init instanceof AST_BlockStatement) { - block = node.init; - node.init = block.body.pop(); - block.body.push(node); - } - if (node.init instanceof AST_SimpleStatement) { - node.init = node.init.body; - } else if (is_empty(node.init)) { - node.init = null; - } - return !block ? node : in_list ? MAP.splice(block.body) : block; - } - if (node instanceof AST_LabeledStatement && node.body instanceof AST_For) { - descend(node, this); - if (node.body instanceof AST_BlockStatement) { - var block = node.body; - node.body = block.body.pop(); - block.body.push(node); - return in_list ? MAP.splice(block.body) : block; - } - return node; + if (side_effects.length > 0) { + body.push(make_node(AST_SimpleStatement, node, { + body: make_sequence(node, side_effects) + })); } - if (node instanceof AST_Scope) { - var save_scope = scope; - scope = node; - descend(node, this); - scope = save_scope; - return node; + switch (body.length) { + case 0: + return in_list ? MAP.skip : make_node(AST_EmptyStatement, node); + case 1: + return body[0]; + default: + return in_list ? MAP.splice(body) : make_node(AST_BlockStatement, node, { + body: body + }); } - - function template(sym) { - return { - name : sym.name, - file : sym.start.file, - line : sym.start.line, - col : sym.start.col - }; + } + // certain combination of unused name + side effect leads to: + // https://github.com/mishoo/UglifyJS2/issues/44 + // https://github.com/mishoo/UglifyJS2/issues/1830 + // https://github.com/mishoo/UglifyJS2/issues/1838 + // that's an invalid AST. + // We fix it at this stage by moving the `var` outside the `for`. + if (node instanceof AST_For) { + descend(node, this); + var block; + if (node.init instanceof AST_BlockStatement) { + block = node.init; + node.init = block.body.pop(); + block.body.push(node); + } + if (node.init instanceof AST_SimpleStatement) { + node.init = node.init.body; + } else if (is_empty(node.init)) { + node.init = null; } + return !block ? node : in_list ? MAP.splice(block.body) : block; } - ); + if (node instanceof AST_LabeledStatement && node.body instanceof AST_For) { + descend(node, this); + if (node.body instanceof AST_BlockStatement) { + var block = node.body; + node.body = block.body.pop(); + block.body.push(node); + return in_list ? MAP.splice(block.body) : block; + } + return node; + } + if (node instanceof AST_Scope) { + var save_scope = scope; + scope = node; + descend(node, this); + scope = save_scope; + return node; + } + + function template(sym) { + return { + name : sym.name, + file : sym.start.file, + line : sym.start.line, + col : sym.start.col + }; + } + }); self.transform(tt); function verify_safe_usage(def, read, modified) { diff --git a/test/compress/arrays.js b/test/compress/arrays.js index 68f08f74..36292206 100644 --- a/test/compress/arrays.js +++ b/test/compress/arrays.js @@ -15,9 +15,9 @@ holes_and_undefined: { constant_join: { options = { - unsafe : true, - evaluate : true - }; + evaluate: true, + unsafe: true, + } input: { var a = [ "foo", "bar", "baz" ].join(""); var a1 = [ "foo", "bar", "baz" ].join(); @@ -64,9 +64,9 @@ constant_join: { constant_join_2: { options = { - unsafe : true, - evaluate : true - }; + evaluate: true, + unsafe: true, + } input: { var a = [ "foo", "bar", boo(), "baz", "x", "y" ].join(""); var b = [ "foo", "bar", boo(), "baz", "x", "y" ].join("-"); @@ -93,9 +93,9 @@ constant_join_2: { constant_join_3: { options = { - unsafe: true, evaluate: true, - }; + unsafe: true, + } input: { var a = [ null ].join(); var b = [ , ].join(); @@ -133,7 +133,7 @@ for_loop: { reduce_vars: true, unsafe: true, unused: true, - }; + } input: { function f0() { var a = [1, 2, 3]; diff --git a/test/compress/asm.js b/test/compress/asm.js index a9047c5d..d7b1b62b 100644 --- a/test/compress/asm.js +++ b/test/compress/asm.js @@ -1,24 +1,24 @@ asm_mixed: { options = { - sequences : true, - properties : true, - dead_code : true, - drop_debugger : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - loops : true, - unused : true, - hoist_funs : true, - keep_fargs : true, - keep_fnames : false, - hoist_vars : true, - if_return : true, - join_vars : true, - side_effects : true, - negate_iife : true - }; + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + drop_debugger: true, + evaluate: true, + hoist_funs: true, + hoist_vars: true, + if_return: true, + join_vars: true, + keep_fargs: true, + keep_fnames: false, + loops: true, + negate_iife: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, + } input: { // adapted from http://asmjs.org/spec/latest/ function asm_GeometricMean(stdlib, foreign, buffer) { diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js index 2df51793..15d8243c 100644 --- a/test/compress/collapse_vars.js +++ b/test/compress/collapse_vars.js @@ -1,9 +1,22 @@ collapse_vars_side_effects_1: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + 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: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1() { @@ -76,9 +89,21 @@ collapse_vars_side_effects_1: { collapse_vars_side_effects_2: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function fn(x) { return console.log(x), x; } @@ -144,10 +169,24 @@ collapse_vars_side_effects_2: { collapse_vars_issue_721: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true, passes:2 + 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: true, + loops: true, + passes: 2, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { define(["require", "exports", 'handlebars'], function(require, exports, hb) { @@ -211,10 +250,23 @@ collapse_vars_issue_721: { collapse_vars_properties: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + 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: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1(obj) { @@ -239,10 +291,23 @@ collapse_vars_properties: { collapse_vars_if: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + 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: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1() { @@ -290,10 +355,23 @@ collapse_vars_if: { collapse_vars_while: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:false, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + 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: true, + loops: false, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1(y) { @@ -339,10 +417,21 @@ collapse_vars_while: { collapse_vars_do_while: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:false, loops:false, unused:"keep_assign", - hoist_funs:true, keep_fargs:true, if_return:true, join_vars:true, - side_effects:true + booleans: false, + collapse_vars: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: false, + properties: true, + sequences: true, + side_effects: true, + unused: "keep_assign", } input: { function f1(y) { @@ -415,9 +504,21 @@ collapse_vars_do_while: { collapse_vars_do_while_drop_assign: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:false, loops:false, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + booleans: false, + collapse_vars: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: false, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1(y) { @@ -490,9 +591,21 @@ collapse_vars_do_while_drop_assign: { collapse_vars_seq: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { var f1 = function(x, y) { @@ -514,9 +627,21 @@ collapse_vars_seq: { collapse_vars_throw: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { var f1 = function(x, y) { @@ -546,9 +671,21 @@ collapse_vars_throw: { collapse_vars_switch: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1() { @@ -586,9 +723,20 @@ collapse_vars_switch: { collapse_vars_assignment: { options = { - collapse_vars:true, sequences:true, properties:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + booleans: true, + collapse_vars: true, + comparisons: true, + conditionals: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function log(x) { return console.log(x), x; } @@ -659,10 +807,20 @@ collapse_vars_assignment: { collapse_vars_lvalues: { options = { - collapse_vars:true, sequences:true, properties:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:"keep_assign", - hoist_funs:true, keep_fargs:true, if_return:true, join_vars:true, - side_effects:true + booleans: true, + collapse_vars: true, + comparisons: true, + conditionals: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: "keep_assign", } input: { function f0(x) { var i = ++x; return x += i; } @@ -692,9 +850,21 @@ collapse_vars_lvalues: { collapse_vars_lvalues_drop_assign: { options = { - collapse_vars:true, sequences:true, properties:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, passes:3 + booleans: true, + collapse_vars: true, + comparisons: true, + conditionals: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + passes: 3, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f0(x) { var i = ++x; return x += i; } @@ -724,10 +894,22 @@ collapse_vars_lvalues_drop_assign: { collapse_vars_misc1: { options = { - collapse_vars:true, sequences:true, properties:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + booleans: true, + collapse_vars: true, + comparisons: true, + conditionals: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f0(o, a, h) { @@ -771,10 +953,21 @@ collapse_vars_misc1: { collapse_vars_self_reference: { options = { - collapse_vars:true, unused:false, - sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: false, } input: { // avoid bug in self-referential declaration. @@ -802,10 +995,23 @@ collapse_vars_self_reference: { collapse_vars_repeated: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + 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: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1() { @@ -845,10 +1051,23 @@ collapse_vars_repeated: { collapse_vars_closures: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + 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: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function constant_vars_can_be_replaced_in_any_scope() { @@ -873,9 +1092,21 @@ collapse_vars_closures: { collapse_vars_unary: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f0(o, p) { @@ -936,10 +1167,23 @@ collapse_vars_unary: { collapse_vars_try: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + 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: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1() { @@ -992,9 +1236,21 @@ collapse_vars_try: { collapse_vars_array: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1(x, y) { @@ -1026,9 +1282,21 @@ collapse_vars_array: { collapse_vars_object: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f0(x, y) { @@ -1094,9 +1362,21 @@ collapse_vars_object: { collapse_vars_eval_and_with: { options = { - collapse_vars:true, sequences:false, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: false, + side_effects: true, + unused: true, } input: { // Don't attempt to collapse vars in presence of eval() or with statement. @@ -1134,10 +1414,23 @@ collapse_vars_eval_and_with: { collapse_vars_constants: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - reduce_funcs: true, reduce_vars:true + 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: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1(x) { @@ -1172,10 +1465,24 @@ collapse_vars_constants: { collapse_vars_arguments: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true, - toplevel:true, reduce_funcs: true, reduce_vars:true + 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: true, + loops: true, + properties: true, + reduce_funcs: true, + reduce_vars: true, + sequences: true, + side_effects: true, + toplevel: true, + unused: true, } input: { var outer = function() { @@ -1195,9 +1502,21 @@ collapse_vars_arguments: { collapse_vars_short_circuit: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f0(x) { var a = foo(), b = bar(); return b || x; } @@ -1237,20 +1556,20 @@ collapse_vars_short_circuit: { collapse_vars_short_circuited_conditions: { options = { + booleans: true, collapse_vars: true, - sequences: false, - dead_code: true, - conditionals: false, - comparisons: false, - evaluate: true, - booleans: true, - loops: true, - unused: true, - hoist_funs: true, - keep_fargs: true, - if_return: false, - join_vars: true, - side_effects: true, + comparisons: false, + conditionals: false, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: false, + join_vars: true, + keep_fargs: true, + loops: true, + sequences: false, + side_effects: true, + unused: true, } input: { function c1(x) { var a = foo(), b = bar(), c = baz(); return a ? b : c; } @@ -1286,21 +1605,21 @@ collapse_vars_short_circuited_conditions: { collapse_vars_regexp: { options = { - booleans: true, + booleans: true, collapse_vars: true, - comparisons: true, - conditionals: true, - dead_code: true, - evaluate: true, - if_return: true, - join_vars: true, - hoist_funs: true, - keep_fargs: true, - loops: false, - reduce_funcs: true, - reduce_vars: true, - side_effects: true, - unused: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: false, + reduce_funcs: true, + reduce_vars: true, + side_effects: true, + unused: true, } input: { function f1() { @@ -1692,9 +2011,21 @@ iife_2: { var_defs: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { var f1 = function(x, y) { @@ -2825,8 +3156,8 @@ issue_2364_5: { options = { collapse_vars: true, evaluate: true, - pure_getters: true, properties: true, + pure_getters: true, reduce_funcs: true, reduce_vars: true, unused: true, @@ -3133,8 +3464,8 @@ issue_2437_1: { passes: 2, reduce_funcs: true, reduce_vars: true, - side_effects: true, sequences: true, + side_effects: true, toplevel: true, unused: true, } @@ -3183,8 +3514,8 @@ issue_2437_2: { passes: 2, reduce_funcs: true, reduce_vars: true, - side_effects: true, sequences: true, + side_effects: true, toplevel: true, unused: true, } @@ -3417,8 +3748,8 @@ issue_2436_6: { pure_getters: "strict", reduce_vars: true, toplevel: true, - unused: true, unsafe: true, + unused: true, } input: { var o = { diff --git a/test/compress/concat-strings.js b/test/compress/concat-strings.js index c7c07ca2..a9957d3d 100644 --- a/test/compress/concat-strings.js +++ b/test/compress/concat-strings.js @@ -1,7 +1,7 @@ concat_1: { options = { - evaluate: true - }; + evaluate: true, + } input: { var a = "foo" + "bar" + x() + "moo" + "foo" + y() + "x" + "y" + "z" + q(); var b = "foo" + 1 + x() + 2 + "boo"; @@ -26,7 +26,7 @@ concat_1: { } concat_2: { - options = {}; + options = {} input: { console.log( 1 + (2 + 3), @@ -55,7 +55,7 @@ concat_2: { } concat_3: { - options = {}; + options = {} input: { console.log( 1 + 2 + (3 + 4 + 5), @@ -84,7 +84,7 @@ concat_3: { } concat_4: { - options = {}; + options = {} input: { console.log( 1 + "2" + (3 + 4 + 5), @@ -113,7 +113,7 @@ concat_4: { } concat_5: { - options = {}; + options = {} input: { console.log( "1" + 2 + (3 + 4 + 5), @@ -142,7 +142,7 @@ concat_5: { } concat_6: { - options = {}; + options = {} input: { console.log( "1" + "2" + (3 + 4 + 5), diff --git a/test/compress/conditionals.js b/test/compress/conditionals.js index 03386d18..577e7871 100644 --- a/test/compress/conditionals.js +++ b/test/compress/conditionals.js @@ -1,7 +1,7 @@ ifs_1: { options = { - conditionals: true - }; + conditionals: true, + } input: { if (foo) bar(); if (!foo); else bar(); @@ -18,8 +18,8 @@ ifs_1: { ifs_2: { options = { - conditionals: true - }; + conditionals: true, + } input: { if (foo) { x(); @@ -47,12 +47,12 @@ ifs_2: { ifs_3_should_warn: { options = { - conditionals : true, - dead_code : true, - evaluate : true, - booleans : true, - side_effects : true, - }; + booleans: true, + conditionals: true, + dead_code: true, + evaluate: true, + side_effects: true, + } input: { var x, y; if (x && !(x + "1") && y) { // 1 @@ -78,8 +78,8 @@ ifs_3_should_warn: { ifs_4: { options = { - conditionals: true - }; + conditionals: true, + } input: { if (foo && bar) { x(foo)[10].bar.baz = something(); @@ -95,10 +95,10 @@ ifs_4: { ifs_5: { options = { - if_return: true, - conditionals: true, comparisons: true, - }; + conditionals: true, + if_return: true, + } input: { function f() { if (foo) return; @@ -132,9 +132,9 @@ ifs_5: { ifs_6: { options = { + comparisons: true, conditionals: true, - comparisons: true - }; + } input: { var x, y; if (!foo && !bar && !baz && !boo) { @@ -163,8 +163,8 @@ ifs_6: { cond_1: { options = { - conditionals: true - }; + conditionals: true, + } input: { function foo(do_something, some_condition) { if (some_condition) { @@ -189,8 +189,8 @@ cond_1: { cond_2: { options = { - conditionals: true - }; + conditionals: true, + } input: { function foo(x, FooBar, some_condition) { if (some_condition) { @@ -209,8 +209,8 @@ cond_2: { cond_3: { options = { - conditionals: true - }; + conditionals: true, + } input: { var FooBar; if (some_condition()) { @@ -227,8 +227,8 @@ cond_3: { cond_4: { options = { - conditionals: true - }; + conditionals: true, + } input: { var do_something; if (some_condition()) { @@ -251,8 +251,8 @@ cond_4: { cond_5: { options = { - conditionals: true - }; + conditionals: true, + } input: { if (some_condition()) { if (some_other_condition()) { @@ -279,9 +279,9 @@ cond_5: { cond_7: { options = { conditionals: true, - evaluate : true, + evaluate: true, side_effects: true, - }; + } input: { var x, y, z, a, b; // compress these @@ -342,8 +342,8 @@ cond_7: { cond_7_1: { options = { conditionals: true, - evaluate : true - }; + evaluate: true, + } input: { var x; // access to global should be assumed to have side effects @@ -361,10 +361,10 @@ cond_7_1: { cond_8: { options = { + booleans: false, conditionals: true, - evaluate : true, - booleans : false - }; + evaluate: true, + } input: { var a; // compress these @@ -445,10 +445,10 @@ cond_8: { cond_8b: { options = { + booleans: true, conditionals: true, - evaluate : true, - booleans : true - }; + evaluate: true, + } input: { var a; // compress these @@ -528,10 +528,10 @@ cond_8b: { cond_8c: { options = { + booleans: false, conditionals: true, - evaluate : false, - booleans : false - }; + evaluate: false, + } input: { var a; // compress these @@ -647,9 +647,21 @@ cond_9: { ternary_boolean_consequent: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1() { return a == b ? true : x; } @@ -675,9 +687,21 @@ ternary_boolean_consequent: { ternary_boolean_alternative: { options = { - collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + 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: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1() { return a == b ? x : true; } @@ -778,11 +802,11 @@ trivial_boolean_ternary_expressions : { issue_1154: { options = { + booleans: true, conditionals: true, - evaluate : true, - booleans : true, + evaluate: true, side_effects: true, - }; + } input: { function f1(x) { return x ? -1 : -1; } function f2(x) { return x ? +2 : +2; } @@ -818,7 +842,7 @@ issue_1154: { no_evaluate: { options = { conditionals: true, - evaluate : false, + evaluate: false, side_effects: true, } input: { diff --git a/test/compress/dead-code.js b/test/compress/dead-code.js index 41f58427..1ce5355a 100644 --- a/test/compress/dead-code.js +++ b/test/compress/dead-code.js @@ -1,7 +1,7 @@ dead_code_1: { options = { - dead_code: true - }; + dead_code: true, + } input: { function f() { a(); @@ -25,8 +25,8 @@ dead_code_1: { dead_code_2_should_warn: { options = { - dead_code: true - }; + dead_code: true, + } input: { function f() { g(); @@ -64,13 +64,13 @@ dead_code_2_should_warn: { dead_code_constant_boolean_should_warn_more: { options = { - dead_code : true, - loops : true, - booleans : true, - conditionals : true, - evaluate : true, - side_effects : true, - }; + booleans: true, + conditionals: true, + dead_code: true, + evaluate: true, + loops: true, + side_effects: true, + } input: { while (!((foo && bar) || (x + "0"))) { console.log("unreachable"); diff --git a/test/compress/debugger.js b/test/compress/debugger.js index 7c270734..4dd47ecd 100644 --- a/test/compress/debugger.js +++ b/test/compress/debugger.js @@ -1,7 +1,7 @@ keep_debugger: { options = { - drop_debugger: false - }; + drop_debugger: false, + } input: { debugger; } @@ -12,8 +12,8 @@ keep_debugger: { drop_debugger: { options = { - drop_debugger: true - }; + drop_debugger: true, + } input: { debugger; if (foo) debugger; diff --git a/test/compress/drop-console.js b/test/compress/drop-console.js index 7df6d9dc..9a91edcb 100644 --- a/test/compress/drop-console.js +++ b/test/compress/drop-console.js @@ -1,5 +1,5 @@ drop_console_1: { - options = {}; + options = {} input: { console.log('foo'); console.log.apply(console, arguments); @@ -11,7 +11,9 @@ drop_console_1: { } drop_console_2: { - options = { drop_console: true }; + options = { + drop_console: true, + } input: { console.log('foo'); console.log.apply(console, arguments); diff --git a/test/compress/drop-unused.js b/test/compress/drop-unused.js index e4daa4fc..9dc45e57 100644 --- a/test/compress/drop-unused.js +++ b/test/compress/drop-unused.js @@ -1,5 +1,8 @@ unused_funarg_1: { - options = { unused: true, keep_fargs: false }; + options = { + keep_fargs: false, + unused: true, + } input: { function f(a, b, c, d, e) { return a + b; @@ -13,7 +16,10 @@ unused_funarg_1: { } unused_funarg_2: { - options = { unused: true, keep_fargs: false }; + options = { + keep_fargs: false, + unused: true, + } input: { function f(a, b, c, d, e) { return a + c; @@ -27,7 +33,9 @@ unused_funarg_2: { } unused_nested_function: { - options = { unused: true }; + options = { + unused: true, + } input: { function f(x, y) { function g() { @@ -44,7 +52,9 @@ unused_nested_function: { } unused_circular_references_1: { - options = { unused: true }; + options = { + unused: true, + } input: { function f(x, y) { // circular reference @@ -65,7 +75,9 @@ unused_circular_references_1: { } unused_circular_references_2: { - options = { unused: true }; + options = { + unused: true, + } input: { function f(x, y) { var foo = 1, bar = baz, baz = foo + bar, qwe = moo(); @@ -81,7 +93,9 @@ unused_circular_references_2: { } unused_circular_references_3: { - options = { unused: true }; + options = { + unused: true, + } input: { function f(x, y) { var g = function() { return h() }; @@ -97,7 +111,9 @@ unused_circular_references_3: { } unused_keep_setter_arg: { - options = { unused: true }; + options = { + unused: true, + } input: { var x = { _foo: null, @@ -121,7 +137,9 @@ unused_keep_setter_arg: { } unused_var_in_catch: { - options = { unused: true }; + options = { + unused: true, + } input: { function foo() { try { @@ -141,7 +159,9 @@ unused_var_in_catch: { } used_var_in_catch: { - options = { unused: true }; + options = { + unused: true, + } input: { function foo() { try { @@ -165,7 +185,11 @@ used_var_in_catch: { } keep_fnames: { - options = { unused: true, keep_fnames: true, unsafe: true }; + options = { + keep_fnames: true, + unsafe: true, + unused: true, + } input: { function foo() { return function bar(baz) {}; @@ -367,7 +391,7 @@ drop_toplevel_vars_fargs: { drop_toplevel_all: { options = { toplevel: true, - unused: true + unused: true, } input: { var a, b = 1, c = g; @@ -418,7 +442,11 @@ drop_toplevel_retain: { drop_toplevel_retain_array: { options = { - top_retain: [ "f", "a", "o" ], + top_retain: [ + "f", + "a", + "o" + ], unused: true, } input: { @@ -476,8 +504,8 @@ drop_toplevel_retain_regex: { drop_toplevel_all_retain: { options = { - toplevel: true, top_retain: "f,a,o", + toplevel: true, unused: true, } input: { @@ -506,8 +534,8 @@ drop_toplevel_all_retain: { drop_toplevel_funcs_retain: { options = { - toplevel: "funcs", top_retain: "f,a,o", + toplevel: "funcs", unused: true, } input: { @@ -537,8 +565,8 @@ drop_toplevel_funcs_retain: { drop_toplevel_vars_retain: { options = { - toplevel: "vars", top_retain: "f,a,o", + toplevel: "vars", unused: true, } input: { @@ -1377,9 +1405,9 @@ issue_2516_1: { issue_2516_2: { options = { collapse_vars: true, + passes: 2, reduce_funcs: true, reduce_vars: true, - passes: 2, unused: true, } input: { diff --git a/test/compress/evaluate.js b/test/compress/evaluate.js index 9d35ffa3..999a1ca5 100644 --- a/test/compress/evaluate.js +++ b/test/compress/evaluate.js @@ -186,7 +186,9 @@ unary_prefix: { } negative_zero: { - options = { evaluate: true } + options = { + evaluate: true, + } input: { console.log( -"", @@ -207,7 +209,9 @@ negative_zero: { } positive_zero: { - options = { evaluate: true } + options = { + evaluate: true, + } input: { console.log( +"", @@ -229,8 +233,8 @@ positive_zero: { unsafe_constant: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -421,8 +425,8 @@ prop_function: { unsafe_integer_key: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -449,8 +453,8 @@ unsafe_integer_key: { unsafe_integer_key_complex: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -477,8 +481,8 @@ unsafe_integer_key_complex: { unsafe_float_key: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -505,8 +509,8 @@ unsafe_float_key: { unsafe_float_key_complex: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -533,8 +537,8 @@ unsafe_float_key_complex: { unsafe_array: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -569,8 +573,8 @@ unsafe_array: { unsafe_string: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -597,8 +601,8 @@ unsafe_string: { unsafe_array_bad_index: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -619,8 +623,8 @@ unsafe_array_bad_index: { unsafe_string_bad_index: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -754,8 +758,8 @@ in_boolean_context: { unsafe_charAt: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -782,8 +786,8 @@ unsafe_charAt: { unsafe_charAt_bad_index: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -804,8 +808,8 @@ unsafe_charAt_bad_index: { unsafe_charAt_noop: { options = { - evaluate : true, - unsafe : true + evaluate: true, + unsafe: true, } input: { console.log( @@ -1195,7 +1199,7 @@ issue_2231_1: { } expect_stdout: true expect_warnings: [ - "WARN: Error evaluating Object.keys(void 0) [test/compress/evaluate.js:1191,20]", + "WARN: Error evaluating Object.keys(void 0) [test/compress/evaluate.js:1195,20]", ] } @@ -1212,7 +1216,7 @@ issue_2231_2: { } expect_stdout: true expect_warnings: [ - "WARN: Error evaluating Object.getOwnPropertyNames(null) [test/compress/evaluate.js:1208,20]", + "WARN: Error evaluating Object.getOwnPropertyNames(null) [test/compress/evaluate.js:1212,20]", ] } @@ -1350,14 +1354,14 @@ issue_2535_3: { } expect_stdout: true expect_warnings: [ - "WARN: Dropping side-effect-free && [test/compress/evaluate.js:1336,20]", - "WARN: Dropping side-effect-free && [test/compress/evaluate.js:1337,20]", - "WARN: Dropping side-effect-free && [test/compress/evaluate.js:1338,20]", - "WARN: Condition left of && always false [test/compress/evaluate.js:1338,20]", - "WARN: Dropping side-effect-free || [test/compress/evaluate.js:1339,20]", - "WARN: Dropping side-effect-free || [test/compress/evaluate.js:1340,20]", - "WARN: Dropping side-effect-free || [test/compress/evaluate.js:1341,20]", - "WARN: Condition left of || always true [test/compress/evaluate.js:1341,20]", + "WARN: Dropping side-effect-free && [test/compress/evaluate.js:1340,20]", + "WARN: Dropping side-effect-free && [test/compress/evaluate.js:1341,20]", + "WARN: Dropping side-effect-free && [test/compress/evaluate.js:1342,20]", + "WARN: Condition left of && always false [test/compress/evaluate.js:1342,20]", + "WARN: Dropping side-effect-free || [test/compress/evaluate.js:1343,20]", + "WARN: Dropping side-effect-free || [test/compress/evaluate.js:1344,20]", + "WARN: Dropping side-effect-free || [test/compress/evaluate.js:1345,20]", + "WARN: Condition left of || always true [test/compress/evaluate.js:1345,20]", ] } diff --git a/test/compress/functions.js b/test/compress/functions.js index ec0b72a7..cff81e2d 100644 --- a/test/compress/functions.js +++ b/test/compress/functions.js @@ -9,20 +9,20 @@ non_ascii_function_identifier_name: { iifes_returning_constants_keep_fargs_true: { options = { - keep_fargs : true, - side_effects : true, - evaluate : true, - unused : true, - dead_code : true, - conditionals : true, - comparisons : true, - booleans : true, - if_return : true, - join_vars : true, - reduce_funcs : true, - reduce_vars : true, - collapse_vars : true, - inline : true, + booleans: true, + collapse_vars: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + inline: true, + join_vars: true, + keep_fargs: true, + reduce_funcs: true, + reduce_vars: true, + side_effects: true, + unused: true, } input: { (function(){ return -1.23; }()); @@ -46,20 +46,20 @@ iifes_returning_constants_keep_fargs_true: { iifes_returning_constants_keep_fargs_false: { options = { - keep_fargs : false, - side_effects : true, - evaluate : true, - unused : true, - dead_code : true, - conditionals : true, - comparisons : true, - booleans : true, - if_return : true, - join_vars : true, - reduce_funcs : true, - reduce_vars : true, - collapse_vars : true, - inline : true, + booleans: true, + collapse_vars: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + inline: true, + join_vars: true, + keep_fargs: false, + reduce_funcs: true, + reduce_vars: true, + side_effects: true, + unused: true, } input: { (function(){ return -1.23; }()); @@ -1175,8 +1175,8 @@ issue_2620_3: { issue_2620_4: { rename = true, options = { - evaluate: true, dead_code: true, + evaluate: true, inline: true, passes: 2, reduce_vars: true, diff --git a/test/compress/global_defs.js b/test/compress/global_defs.js index 7b72819f..ea8d6cec 100644 --- a/test/compress/global_defs.js +++ b/test/compress/global_defs.js @@ -2,7 +2,7 @@ must_replace: { options = { global_defs: { D: "foo bar", - } + }, } input: { console.log(D); @@ -141,9 +141,9 @@ mixed: { console.log(CONFIG); } expect_warnings: [ - 'WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:127,22]', - 'WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:128,22]', - 'WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:130,8]', + "WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:127,22]", + "WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:128,22]", + "WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:130,8]", ] } diff --git a/test/compress/hoist_props.js b/test/compress/hoist_props.js index 46af9d72..6f309566 100644 --- a/test/compress/hoist_props.js +++ b/test/compress/hoist_props.js @@ -1,8 +1,8 @@ issue_2377_1: { options = { evaluate: true, - inline: true, hoist_props: true, + inline: true, reduce_funcs: true, reduce_vars: true, toplevel: true, @@ -33,8 +33,8 @@ issue_2377_1: { issue_2377_2: { options = { evaluate: true, - inline: true, hoist_props: true, + inline: true, passes: 2, reduce_funcs: true, reduce_vars: true, @@ -64,8 +64,8 @@ issue_2377_2: { issue_2377_3: { options = { evaluate: true, - inline: true, hoist_props: true, + inline: true, passes: 4, reduce_funcs: true, reduce_vars: true, @@ -416,7 +416,10 @@ issue_2473_1: { options = { hoist_props: false, reduce_vars: true, - top_retain: [ "x", "y" ], + top_retain: [ + "x", + "y" + ], toplevel: true, unused: true, } @@ -435,7 +438,10 @@ issue_2473_2: { options = { hoist_props: true, reduce_vars: true, - top_retain: [ "x", "y" ], + top_retain: [ + "x", + "y" + ], toplevel: true, unused: true, } @@ -746,9 +752,9 @@ issue_3046: { issue_3071_1: { options = { evaluate: true, + hoist_props: true, inline: true, join_vars: true, - hoist_props: true, passes: 3, reduce_vars: true, sequences: true, @@ -773,9 +779,9 @@ issue_3071_1: { issue_3071_2: { options = { evaluate: true, + hoist_props: true, inline: true, join_vars: true, - hoist_props: true, passes: 3, reduce_vars: true, sequences: true, @@ -800,9 +806,9 @@ issue_3071_2: { issue_3071_2_toplevel: { options = { evaluate: true, + hoist_props: true, inline: true, join_vars: true, - hoist_props: true, passes: 3, reduce_vars: true, sequences: true, diff --git a/test/compress/ie8.js b/test/compress/ie8.js index c3012bfa..d5b61cbd 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie8.js @@ -187,9 +187,9 @@ dont_screw_try_catch_undefined: { reduce_vars: { options = { evaluate: true, + ie8: true, reduce_funcs: true, reduce_vars: true, - ie8: true, unused: true, } mangle = { diff --git a/test/compress/if_return.js b/test/compress/if_return.js index 9b18bf11..c56fa04d 100644 --- a/test/compress/if_return.js +++ b/test/compress/if_return.js @@ -1,14 +1,14 @@ if_return_1: { options = { - if_return : true, - sequences : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - unused : true, - side_effects : true, - dead_code : true, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f(x) { @@ -24,15 +24,15 @@ if_return_1: { if_return_2: { options = { - if_return : true, - sequences : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - unused : true, - side_effects : true, - dead_code : true, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f(x, y) { @@ -49,15 +49,15 @@ if_return_2: { if_return_3: { options = { - if_return : true, - sequences : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - unused : true, - side_effects : true, - dead_code : true, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f(x) { @@ -75,15 +75,15 @@ if_return_3: { if_return_4: { options = { - if_return : true, - sequences : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - unused : true, - side_effects : true, - dead_code : true, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f(x, y) { @@ -100,15 +100,15 @@ if_return_4: { if_return_5: { options = { - if_return : true, - sequences : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - unused : true, - side_effects : true, - dead_code : true, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f() { @@ -126,15 +126,15 @@ if_return_5: { if_return_6: { options = { - if_return : true, - sequences : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - unused : true, - side_effects : true, - dead_code : true, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f(x) { @@ -150,15 +150,15 @@ if_return_6: { if_return_7: { options = { - if_return : true, - sequences : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - unused : true, - side_effects : true, - dead_code : true, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f(x) { @@ -176,10 +176,10 @@ if_return_7: { if_return_8: { options = { - if_return: true, - sequences: true, - conditionals: true, - side_effects : true, + conditionals: true, + if_return: true, + sequences: true, + side_effects: true, } input: { function f(e) { @@ -220,15 +220,15 @@ if_return_8: { issue_1089: { options = { - if_return : true, - sequences : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - unused : true, - side_effects : true, - dead_code : true, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + if_return: true, + sequences: true, + side_effects: true, + unused: true, } input: { function x() { @@ -251,9 +251,9 @@ issue_1089: { issue_1437: { options = { - if_return : true, - sequences : true, - conditionals : false + conditionals: false, + if_return: true, + sequences: true, } input: { function x() { @@ -281,9 +281,9 @@ issue_1437: { issue_1437_conditionals: { options = { - conditionals : true, - if_return : true, - sequences : true + conditionals: true, + if_return: true, + sequences: true, } input: { function x() { diff --git a/test/compress/issue-1034.js b/test/compress/issue-1034.js index 860a597f..8f3e0b1a 100644 --- a/test/compress/issue-1034.js +++ b/test/compress/issue-1034.js @@ -1,8 +1,17 @@ non_hoisted_function_after_return: { options = { - hoist_funs: false, dead_code: true, conditionals: true, comparisons: true, - evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true, - if_return: true, join_vars: true, side_effects: true + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: false, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + side_effects: true, + unused: true, } input: { function foo(x) { @@ -27,19 +36,30 @@ non_hoisted_function_after_return: { } } expect_warnings: [ - 'WARN: Dropping unreachable code [test/compress/issue-1034.js:11,16]', - "WARN: Dropping unreachable code [test/compress/issue-1034.js:14,16]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:17,12]", - "WARN: Dropping unused function UnusedFunction [test/compress/issue-1034.js:18,21]" + "WARN: Dropping unreachable code [test/compress/issue-1034.js:20,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:23,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:26,12]", + "WARN: Dropping unused function UnusedFunction [test/compress/issue-1034.js:27,21]" ] } non_hoisted_function_after_return_2a: { options = { - hoist_funs: false, dead_code: true, conditionals: true, comparisons: true, - evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true, - if_return: true, join_vars: true, side_effects: true, - collapse_vars: false, passes: 2, warnings: "verbose" + booleans: true, + collapse_vars: false, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: false, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + passes: 2, + side_effects: true, + unused: true, + warnings: "verbose", } input: { function foo(x) { @@ -65,28 +85,37 @@ non_hoisted_function_after_return_2a: { } } expect_warnings: [ - "WARN: Dropping unreachable code [test/compress/issue-1034.js:48,16]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:48,16]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:51,16]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:51,16]", - "WARN: Dropping unused variable a [test/compress/issue-1034.js:48,20]", - "WARN: Dropping unused function nope [test/compress/issue-1034.js:55,21]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:68,16]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:68,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:71,16]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:71,16]", + "WARN: Dropping unused variable a [test/compress/issue-1034.js:68,20]", + "WARN: Dropping unused function nope [test/compress/issue-1034.js:75,21]", "WARN: pass 0: last_count: Infinity, count: 37", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:53,12]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:53,12]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:56,12]", - "WARN: Dropping unused variable b [test/compress/issue-1034.js:51,20]", - "WARN: Dropping unused variable c [test/compress/issue-1034.js:53,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:73,12]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:73,12]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:76,12]", + "WARN: Dropping unused variable b [test/compress/issue-1034.js:71,20]", + "WARN: Dropping unused variable c [test/compress/issue-1034.js:73,16]", "WARN: pass 1: last_count: 37, count: 18", ] } non_hoisted_function_after_return_2b: { options = { - hoist_funs: false, dead_code: true, conditionals: true, comparisons: true, - evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true, - if_return: true, join_vars: true, side_effects: true, - collapse_vars: false + booleans: true, + collapse_vars: false, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: false, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + side_effects: true, + unused: true, } input: { function foo(x) { @@ -111,19 +140,28 @@ non_hoisted_function_after_return_2b: { } expect_warnings: [ // duplicate warnings no longer emitted - "WARN: Dropping unreachable code [test/compress/issue-1034.js:97,16]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:97,16]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:99,12]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:99,12]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:103,12]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:126,16]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:126,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:128,12]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:128,12]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:132,12]", ] } non_hoisted_function_after_return_strict: { options = { - hoist_funs: false, dead_code: true, conditionals: true, comparisons: true, - evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true, - if_return: true, join_vars: true, side_effects: true + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: false, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + side_effects: true, + unused: true, } input: { "use strict"; @@ -153,19 +191,30 @@ non_hoisted_function_after_return_strict: { } expect_stdout: "8 7" expect_warnings: [ - "WARN: Dropping unreachable code [test/compress/issue-1034.js:133,16]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:136,16]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:139,12]", - "WARN: Dropping unused function UnusedFunction [test/compress/issue-1034.js:140,21]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:171,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:174,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:177,12]", + "WARN: Dropping unused function UnusedFunction [test/compress/issue-1034.js:178,21]", ] } non_hoisted_function_after_return_2a_strict: { options = { - hoist_funs: false, dead_code: true, conditionals: true, comparisons: true, - evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true, - if_return: true, join_vars: true, side_effects: true, - collapse_vars: false, passes: 2, warnings: "verbose" + booleans: true, + collapse_vars: false, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: false, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + passes: 2, + side_effects: true, + unused: true, + warnings: "verbose", } input: { "use strict"; @@ -196,28 +245,37 @@ non_hoisted_function_after_return_2a_strict: { } expect_stdout: "5 6" expect_warnings: [ - "WARN: Dropping unreachable code [test/compress/issue-1034.js:175,16]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:175,16]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:178,16]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:178,16]", - "WARN: Dropping unused variable a [test/compress/issue-1034.js:175,20]", - "WARN: Dropping unused function nope [test/compress/issue-1034.js:182,21]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:224,16]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:224,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:227,16]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:227,16]", + "WARN: Dropping unused variable a [test/compress/issue-1034.js:224,20]", + "WARN: Dropping unused function nope [test/compress/issue-1034.js:231,21]", "WARN: pass 0: last_count: Infinity, count: 48", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:180,12]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:180,12]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:183,12]", - "WARN: Dropping unused variable b [test/compress/issue-1034.js:178,20]", - "WARN: Dropping unused variable c [test/compress/issue-1034.js:180,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:229,12]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:229,12]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:232,12]", + "WARN: Dropping unused variable b [test/compress/issue-1034.js:227,20]", + "WARN: Dropping unused variable c [test/compress/issue-1034.js:229,16]", "WARN: pass 1: last_count: 48, count: 29", ] } non_hoisted_function_after_return_2b_strict: { options = { - hoist_funs: false, dead_code: true, conditionals: true, comparisons: true, - evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true, - if_return: true, join_vars: true, side_effects: true, - collapse_vars: false + booleans: true, + collapse_vars: false, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: false, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + side_effects: true, + unused: true, } input: { "use strict"; @@ -247,10 +305,10 @@ non_hoisted_function_after_return_2b_strict: { expect_stdout: "5 6" expect_warnings: [ // duplicate warnings no longer emitted - "WARN: Dropping unreachable code [test/compress/issue-1034.js:229,16]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:229,16]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:231,12]", - "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:231,12]", - "WARN: Dropping unreachable code [test/compress/issue-1034.js:235,12]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:287,16]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:287,16]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:289,12]", + "WARN: Declarations in unreachable code! [test/compress/issue-1034.js:289,12]", + "WARN: Dropping unreachable code [test/compress/issue-1034.js:293,12]", ] } diff --git a/test/compress/issue-1041.js b/test/compress/issue-1041.js index b17bce8e..5c8be9e3 100644 --- a/test/compress/issue-1041.js +++ b/test/compress/issue-1041.js @@ -3,7 +3,7 @@ const_pragma: { evaluate: true, reduce_funcs: true, reduce_vars: true, - }; + } input: { /** @const */ var goog = goog || {}; @@ -19,7 +19,7 @@ not_const: { evaluate: true, reduce_funcs: true, reduce_vars: true, - }; + } input: { var goog = goog || {}; diff --git a/test/compress/issue-1105.js b/test/compress/issue-1105.js index 151ca810..df6c7dca 100644 --- a/test/compress/issue-1105.js +++ b/test/compress/issue-1105.js @@ -1,6 +1,6 @@ with_in_global_scope: { options = { - unused: true + unused: true, } input: { var o = 42; @@ -18,7 +18,7 @@ with_in_global_scope: { } with_in_function_scope: { options = { - unused: true + unused: true, } input: { function foo() { @@ -40,7 +40,7 @@ with_in_function_scope: { } compress_with_with_in_other_scope: { options = { - unused: true + unused: true, } input: { function foo() { @@ -69,7 +69,7 @@ compress_with_with_in_other_scope: { } with_using_existing_variable_outside_scope: { options = { - unused: true + unused: true, } input: { function f() { @@ -99,7 +99,7 @@ with_using_existing_variable_outside_scope: { } check_drop_unused_in_peer_function: { options = { - unused: true + unused: true, } input: { function outer() { @@ -148,7 +148,7 @@ check_drop_unused_in_peer_function: { Infinity_not_in_with_scope: { options = { - unused: true + unused: true, } input: { var o = { Infinity: 'oInfinity' }; @@ -164,7 +164,7 @@ Infinity_not_in_with_scope: { Infinity_in_with_scope: { options = { - unused: true + unused: true, } input: { var o = { Infinity: 'oInfinity' }; @@ -180,19 +180,19 @@ Infinity_in_with_scope: { assorted_Infinity_NaN_undefined_in_with_scope: { options = { - unused: true, - evaluate: true, - dead_code: true, - conditionals: true, - comparisons: true, - booleans: true, - hoist_funs: true, - keep_fargs: true, - if_return: true, - join_vars: true, - side_effects: true, - sequences: false, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, keep_infinity: false, + sequences: false, + side_effects: true, + unused: true, } input: { var f = console.log; @@ -242,19 +242,19 @@ assorted_Infinity_NaN_undefined_in_with_scope: { assorted_Infinity_NaN_undefined_in_with_scope_keep_infinity: { options = { - unused: true, - evaluate: true, - dead_code: true, - conditionals: true, - comparisons: true, - booleans: true, - hoist_funs: true, - keep_fargs: true, - if_return: true, - join_vars: true, - side_effects: true, - sequences: false, + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, keep_infinity: true, + sequences: false, + side_effects: true, + unused: true, } input: { var f = console.log; diff --git a/test/compress/issue-12.js b/test/compress/issue-12.js index e2d8bda7..34f48cba 100644 --- a/test/compress/issue-12.js +++ b/test/compress/issue-12.js @@ -1,11 +1,15 @@ keep_name_of_getter: { - options = { unused: true }; + options = { + unused: true, + } input: { a = { get foo () {} } } expect: { a = { get foo () {} } } } keep_name_of_setter: { - options = { unused: true }; + options = { + unused: true, + } input: { a = { set foo () {} } } expect: { a = { set foo () {} } } } diff --git a/test/compress/issue-1202.js b/test/compress/issue-1202.js index 27bc4248..1a34a3f1 100644 --- a/test/compress/issue-1202.js +++ b/test/compress/issue-1202.js @@ -1,7 +1,7 @@ mangle_keep_fnames_false: { options = { - keep_fnames : true, - keep_fargs : true, + keep_fargs: true, + keep_fnames: true, } mangle = { keep_fnames : false, @@ -26,8 +26,8 @@ mangle_keep_fnames_false: { mangle_keep_fnames_true: { options = { - keep_fnames : true, - keep_fargs : true, + keep_fargs: true, + keep_fnames: true, } mangle = { keep_fnames : true, diff --git a/test/compress/issue-1261.js b/test/compress/issue-1261.js index 888fde40..e40111c4 100644 --- a/test/compress/issue-1261.js +++ b/test/compress/issue-1261.js @@ -1,14 +1,14 @@ pure_function_calls: { options = { - evaluate : true, - conditionals : true, - comparisons : true, - side_effects : true, - booleans : true, - unused : true, - if_return : true, - join_vars : true, - negate_iife : true, + booleans: true, + comparisons: true, + conditionals: true, + evaluate: true, + if_return: true, + join_vars: true, + negate_iife: true, + side_effects: true, + unused: true, } input: { // pure top-level IIFE will be dropped @@ -60,16 +60,16 @@ pure_function_calls: { pure_function_calls_toplevel: { options = { - evaluate : true, - conditionals : true, - comparisons : true, - side_effects : true, - booleans : true, - unused : true, - if_return : true, - join_vars : true, - negate_iife : true, - toplevel : true, + booleans: true, + comparisons: true, + conditionals: true, + evaluate: true, + if_return: true, + join_vars: true, + negate_iife: true, + side_effects: true, + toplevel: true, + unused: true, } input: { // pure top-level IIFE will be dropped diff --git a/test/compress/issue-1275.js b/test/compress/issue-1275.js index 2553c74f..683e336d 100644 --- a/test/compress/issue-1275.js +++ b/test/compress/issue-1275.js @@ -1,16 +1,16 @@ string_plus_optimization: { options = { - side_effects : true, - evaluate : true, - conditionals : true, - comparisons : true, - dead_code : true, - booleans : true, - unused : true, - if_return : true, - join_vars : true, - hoist_funs : true, - }; + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + side_effects: true, + unused: true, + } input: { function foo(anything) { function throwing_function() { diff --git a/test/compress/issue-143.js b/test/compress/issue-143.js index 4c79790b..453a9929 100644 --- a/test/compress/issue-143.js +++ b/test/compress/issue-143.js @@ -15,7 +15,7 @@ tranformation_sort_order_equal: { options = { comparisons: true, - }; + } input: { (a = parseInt('100')) == a } expect: { (a = parseInt('100')) == a } @@ -24,7 +24,7 @@ tranformation_sort_order_equal: { tranformation_sort_order_unequal: { options = { comparisons: true, - }; + } input: { (a = parseInt('100')) != a } expect: { (a = parseInt('100')) != a } @@ -33,7 +33,7 @@ tranformation_sort_order_unequal: { tranformation_sort_order_lesser_or_equal: { options = { comparisons: true, - }; + } input: { (a = parseInt('100')) <= a } expect: { (a = parseInt('100')) <= a } @@ -41,7 +41,7 @@ tranformation_sort_order_lesser_or_equal: { tranformation_sort_order_greater_or_equal: { options = { comparisons: true, - }; + } input: { (a = parseInt('100')) >= a } expect: { (a = parseInt('100')) >= a } diff --git a/test/compress/issue-1431.js b/test/compress/issue-1431.js index 9493fd37..2bd681e6 100644 --- a/test/compress/issue-1431.js +++ b/test/compress/issue-1431.js @@ -1,6 +1,6 @@ level_zero: { options = { - keep_fnames: true + keep_fnames: true, } mangle = { keep_fnames: true @@ -29,7 +29,7 @@ level_zero: { level_one: { options = { - keep_fnames: true + keep_fnames: true, } mangle = { keep_fnames: true @@ -58,7 +58,7 @@ level_one: { level_two: { options = { - keep_fnames: true + keep_fnames: true, } mangle = { keep_fnames: true @@ -97,7 +97,7 @@ level_two: { level_three: { options = { - keep_fnames: true + keep_fnames: true, } mangle = { keep_fnames: true diff --git a/test/compress/issue-1447.js b/test/compress/issue-1447.js index 0a765685..3c881058 100644 --- a/test/compress/issue-1447.js +++ b/test/compress/issue-1447.js @@ -22,17 +22,17 @@ else_with_empty_statement: { conditional_false_stray_else_in_loop: { options = { - evaluate : true, - comparisons : true, - booleans : true, - unused : true, - loops : true, - side_effects : true, - dead_code : true, - hoist_vars : true, - join_vars : true, - if_return : true, - conditionals : false, + booleans: true, + comparisons: true, + conditionals: false, + dead_code: true, + evaluate: true, + hoist_vars: true, + if_return: true, + join_vars: true, + loops: true, + side_effects: true, + unused: true, } input: { for (var i = 1; i <= 4; ++i) { diff --git a/test/compress/issue-1833.js b/test/compress/issue-1833.js index e3c385e8..41777ddb 100644 --- a/test/compress/issue-1833.js +++ b/test/compress/issue-1833.js @@ -125,8 +125,8 @@ label_do: { label_while: { options = { - evaluate: true, dead_code: true, + evaluate: true, loops: true, } input: { diff --git a/test/compress/issue-208.js b/test/compress/issue-208.js index faaf4139..aed3bcc4 100644 --- a/test/compress/issue-208.js +++ b/test/compress/issue-208.js @@ -1,6 +1,8 @@ do_not_update_lhs: { options = { - global_defs: { DEBUG: 0 } + global_defs: { + DEBUG: 0, + }, } input: { DEBUG++; @@ -16,7 +18,9 @@ do_not_update_lhs: { do_update_rhs: { options = { - global_defs: { DEBUG: 0 } + global_defs: { + DEBUG: 0, + }, } input: { MY_DEBUG = DEBUG; @@ -35,7 +39,7 @@ mixed: { DEBUG: 0, ENV: 1, FOO: 2, - } + }, } input: { var ENV = 3; @@ -60,11 +64,11 @@ mixed: { x = 0; } expect_warnings: [ - 'WARN: global_defs ENV redefined [test/compress/issue-208.js:41,12]', - 'WARN: global_defs FOO redefined [test/compress/issue-208.js:42,12]', - 'WARN: global_defs FOO redefined [test/compress/issue-208.js:44,10]', - 'WARN: global_defs DEBUG redefined [test/compress/issue-208.js:45,8]', - 'WARN: global_defs DEBUG redefined [test/compress/issue-208.js:46,8]', - 'WARN: global_defs DEBUG redefined [test/compress/issue-208.js:47,8]', + "WARN: global_defs ENV redefined [test/compress/issue-208.js:45,12]", + "WARN: global_defs FOO redefined [test/compress/issue-208.js:46,12]", + "WARN: global_defs FOO redefined [test/compress/issue-208.js:48,10]", + "WARN: global_defs DEBUG redefined [test/compress/issue-208.js:49,8]", + "WARN: global_defs DEBUG redefined [test/compress/issue-208.js:50,8]", + "WARN: global_defs DEBUG redefined [test/compress/issue-208.js:51,8]", ] } diff --git a/test/compress/issue-22.js b/test/compress/issue-22.js index a8b7bc60..1cbc7602 100644 --- a/test/compress/issue-22.js +++ b/test/compress/issue-22.js @@ -1,5 +1,7 @@ return_with_no_value_in_if_body: { - options = { conditionals: true }; + options = { + conditionals: true, + } input: { function foo(bar) { if (bar) { diff --git a/test/compress/issue-267.js b/test/compress/issue-267.js index 7233d9f1..4f478d25 100644 --- a/test/compress/issue-267.js +++ b/test/compress/issue-267.js @@ -1,5 +1,7 @@ issue_267: { - options = { comparisons: true }; + options = { + comparisons: true, + } input: { x = a % b / b * c * 2; x = a % b * 2 diff --git a/test/compress/issue-269.js b/test/compress/issue-269.js index a29e7541..3145b3b3 100644 --- a/test/compress/issue-269.js +++ b/test/compress/issue-269.js @@ -1,5 +1,7 @@ issue_269_1: { - options = {unsafe: true}; + options = { + unsafe: true, + } input: { f( String(x), @@ -20,7 +22,9 @@ issue_269_1: { } issue_269_dangers: { - options = {unsafe: true}; + options = { + unsafe: true, + } input: { f( String(x, x), @@ -34,7 +38,9 @@ issue_269_dangers: { } issue_269_in_scope: { - options = {unsafe: true}; + options = { + unsafe: true, + } input: { var String, Number, Boolean; f( @@ -50,7 +56,9 @@ issue_269_in_scope: { } strings_concat: { - options = {unsafe: true}; + options = { + unsafe: true, + } input: { f( String(x + 'str'), @@ -67,9 +75,9 @@ strings_concat: { regexp: { options = { - evaluate: true, - unsafe: true, - } + evaluate: true, + unsafe: true, + } input: { RegExp("foo"); RegExp("bar", "ig"); @@ -85,6 +93,6 @@ regexp: { RegExp("should", "fail"); } expect_warnings: [ - 'WARN: Error converting RegExp("should","fail") [test/compress/issue-269.js:78,2]', + 'WARN: Error converting RegExp("should","fail") [test/compress/issue-269.js:86,2]', ] } diff --git a/test/compress/issue-281.js b/test/compress/issue-281.js index 2f034c08..1c339bcd 100644 --- a/test/compress/issue-281.js +++ b/test/compress/issue-281.js @@ -186,7 +186,7 @@ negate_iife_5_off: { inline: true, negate_iife: false, sequences: true, - }; + } input: { if ((function(){ return t })()) { foo(true); @@ -245,7 +245,7 @@ negate_iife_issue_1073: { reduce_vars: true, sequences: true, unused: true, - }; + } input: { new (function(a) { return function Foo() { @@ -273,7 +273,7 @@ issue_1288_side_effects: { reduce_vars: true, side_effects: true, unused: true, - }; + } input: { if (w) ; else { diff --git a/test/compress/issue-44.js b/test/compress/issue-44.js index 7a972f9e..958e525e 100644 --- a/test/compress/issue-44.js +++ b/test/compress/issue-44.js @@ -1,5 +1,7 @@ issue_44_valid_ast_1: { - options = { unused: true }; + options = { + unused: true, + } input: { function a(b) { for (var i = 0, e = b.qoo(); ; i++) {} @@ -14,7 +16,9 @@ issue_44_valid_ast_1: { } issue_44_valid_ast_2: { - options = { unused: true }; + options = { + unused: true, + } input: { function a(b) { if (foo) for (var i = 0, e = b.qoo(); ; i++) {} diff --git a/test/compress/issue-59.js b/test/compress/issue-59.js index 82b38806..4e2411fd 100644 --- a/test/compress/issue-59.js +++ b/test/compress/issue-59.js @@ -1,8 +1,8 @@ keep_continue: { options = { dead_code: true, - evaluate: true - }; + evaluate: true, + } input: { while (a) { if (b) { diff --git a/test/compress/issue-597.js b/test/compress/issue-597.js index 143fcc22..c988e9c1 100644 --- a/test/compress/issue-597.js +++ b/test/compress/issue-597.js @@ -1,5 +1,5 @@ NaN_and_Infinity_must_have_parens: { - options = {}; + options = {} input: { Infinity.toString(); NaN.toString(); @@ -11,7 +11,7 @@ NaN_and_Infinity_must_have_parens: { } NaN_and_Infinity_should_not_be_replaced_when_they_are_redefined: { - options = {}; + options = {} input: { var Infinity, NaN; Infinity.toString(); diff --git a/test/compress/issue-611.js b/test/compress/issue-611.js index 6f2c65d2..f1f2bf9c 100644 --- a/test/compress/issue-611.js +++ b/test/compress/issue-611.js @@ -1,8 +1,8 @@ issue_611: { options = { - sequences: true, - side_effects: true - }; + sequences: true, + side_effects: true, + } input: { define(function() { function fn() {} diff --git a/test/compress/issue-637.js b/test/compress/issue-637.js index ed42cb8e..64978bb0 100644 --- a/test/compress/issue-637.js +++ b/test/compress/issue-637.js @@ -1,9 +1,9 @@ wrongly_optimized: { options = { - conditionals: true, booleans: true, - evaluate: true - }; + conditionals: true, + evaluate: true, + } input: { function func() { foo(); diff --git a/test/compress/issue-640.js b/test/compress/issue-640.js index 784092c8..88b63abd 100644 --- a/test/compress/issue-640.js +++ b/test/compress/issue-640.js @@ -28,12 +28,12 @@ cond_5: { dead_code_const_annotation_regex: { options = { - booleans : true, - conditionals : true, - dead_code : true, - evaluate : true, - expression : true, - loops : true, + booleans: true, + conditionals: true, + dead_code: true, + evaluate: true, + expression: true, + loops: true, } input: { var unused; @@ -82,8 +82,8 @@ drop_value: { wrongly_optimized: { options = { - conditionals: true, booleans: true, + conditionals: true, evaluate: true, expression: true, } @@ -195,7 +195,7 @@ negate_iife_5_off: { expression: true, negate_iife: false, sequences: true, - }; + } input: { if ((function(){ return t })()) { foo(true); @@ -248,7 +248,9 @@ issue_1254_negate_iife_nested: { conditional: { options = { expression: true, - pure_funcs: [ "pure" ], + pure_funcs: [ + "pure" + ], side_effects: true, } input: { diff --git a/test/compress/issue-751.js b/test/compress/issue-751.js index 829b7ca5..234eee35 100644 --- a/test/compress/issue-751.js +++ b/test/compress/issue-751.js @@ -1,7 +1,7 @@ negate_booleans_1: { options = { - comparisons: true - }; + comparisons: true, + } input: { var a = !a || !b || !c || !d || !e || !f; } @@ -12,8 +12,8 @@ negate_booleans_1: { negate_booleans_2: { options = { - comparisons: true - }; + comparisons: true, + } input: { var match = !x && // should not touch this one (!z || c) && diff --git a/test/compress/issue-892.js b/test/compress/issue-892.js index 81df1cab..93b42d70 100644 --- a/test/compress/issue-892.js +++ b/test/compress/issue-892.js @@ -2,25 +2,25 @@ dont_mangle_arguments: { mangle = { }; options = { - sequences : true, - properties : true, - dead_code : true, - drop_debugger : true, - conditionals : true, - comparisons : true, - evaluate : true, - booleans : true, - loops : true, - unused : true, - hoist_funs : true, - keep_fargs : true, - keep_fnames : false, - hoist_vars : true, - if_return : true, - join_vars : true, - side_effects : true, - negate_iife : false - }; + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + drop_debugger: true, + evaluate: true, + hoist_funs: true, + hoist_vars: true, + if_return: true, + join_vars: true, + keep_fargs: true, + keep_fnames: false, + loops: true, + negate_iife: false, + properties: true, + sequences: true, + side_effects: true, + unused: true, + } input: { (function(){ var arguments = arguments, not_arguments = 9; diff --git a/test/compress/issue-913.js b/test/compress/issue-913.js index 9d34d9d9..57fd5637 100644 --- a/test/compress/issue-913.js +++ b/test/compress/issue-913.js @@ -1,8 +1,8 @@ keep_var_for_in: { options = { hoist_vars: true, - unused: true - }; + unused: true, + } input: { (function(obj){ var foo = 5; diff --git a/test/compress/issue-973.js b/test/compress/issue-973.js index 3eb25fac..e127c10c 100644 --- a/test/compress/issue-973.js +++ b/test/compress/issue-973.js @@ -72,7 +72,7 @@ this_binding_collapse_vars: { this_binding_side_effects: { options = { - side_effects : true + side_effects: true, } input: { (function(foo) { diff --git a/test/compress/issue-976.js b/test/compress/issue-976.js index 54d7dad5..edee2595 100644 --- a/test/compress/issue-976.js +++ b/test/compress/issue-976.js @@ -1,9 +1,21 @@ eval_collapse_vars: { options = { - collapse_vars:true, sequences:false, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true - }; + 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: true, + loops: true, + properties: true, + sequences: false, + side_effects: true, + unused: true, + } input: { function f1() { var e = 7; @@ -46,7 +58,10 @@ eval_collapse_vars: { } eval_unused: { - options = { unused: true, keep_fargs: false }; + options = { + keep_fargs: false, + unused: true, + } input: { function f1(a, eval, c, d, e) { return a('c') + eval; diff --git a/test/compress/issue-979.js b/test/compress/issue-979.js index b2500126..8f017602 100644 --- a/test/compress/issue-979.js +++ b/test/compress/issue-979.js @@ -1,8 +1,19 @@ issue979_reported: { options = { - sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f1() { @@ -30,9 +41,20 @@ issue979_reported: { issue979_test_negated_is_best: { options = { - sequences:true, properties:true, dead_code:true, conditionals:true, - comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true, - keep_fargs:true, if_return:true, join_vars:true, side_effects:true + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + evaluate: true, + hoist_funs: true, + if_return: true, + join_vars: true, + keep_fargs: true, + loops: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, } input: { function f3() { diff --git a/test/compress/labels.js b/test/compress/labels.js index 0d85d10a..00232834 100644 --- a/test/compress/labels.js +++ b/test/compress/labels.js @@ -1,5 +1,9 @@ labels_1: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } input: { out: { if (foo) break out; @@ -13,7 +17,11 @@ labels_1: { } labels_2: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } input: { out: { if (foo) print("stuff"); @@ -30,7 +38,11 @@ labels_2: { } labels_3: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } input: { for (var i = 0; i < 5; ++i) { if (i < 3) continue; @@ -45,7 +57,11 @@ labels_3: { } labels_4: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } input: { out: for (var i = 0; i < 5; ++i) { if (i < 3) continue out; @@ -60,7 +76,11 @@ labels_4: { } labels_5: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } // should keep the break-s in the following input: { while (foo) { @@ -92,7 +112,11 @@ labels_6: { } labels_7: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } input: { while (foo) { x(); @@ -109,7 +133,11 @@ labels_7: { } labels_8: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } input: { while (foo) { x(); @@ -127,7 +155,11 @@ labels_8: { } labels_9: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } input: { out: while (foo) { x(); @@ -146,7 +178,11 @@ labels_9: { } labels_10: { - options = { if_return: true, conditionals: true, dead_code: true }; + options = { + conditionals: true, + dead_code: true, + if_return: true, + } input: { out: while (foo) { x(); diff --git a/test/compress/loops.js b/test/compress/loops.js index 2dd29256..3fa78338 100644 --- a/test/compress/loops.js +++ b/test/compress/loops.js @@ -1,5 +1,7 @@ while_becomes_for: { - options = { loops: true }; + options = { + loops: true, + } input: { while (foo()) bar(); } @@ -9,7 +11,9 @@ while_becomes_for: { } drop_if_break_1: { - options = { loops: true }; + options = { + loops: true, + } input: { for (;;) if (foo()) break; @@ -20,7 +24,9 @@ drop_if_break_1: { } drop_if_break_2: { - options = { loops: true }; + options = { + loops: true, + } input: { for (;bar();) if (foo()) break; @@ -31,7 +37,9 @@ drop_if_break_2: { } drop_if_break_3: { - options = { loops: true }; + options = { + loops: true, + } input: { for (;bar();) { if (foo()) break; @@ -48,7 +56,10 @@ drop_if_break_3: { } drop_if_break_4: { - options = { loops: true, sequences: true }; + options = { + loops: true, + sequences: true, + } input: { for (;bar();) { x(); @@ -64,7 +75,9 @@ drop_if_break_4: { } drop_if_else_break_1: { - options = { loops: true }; + options = { + loops: true, + } input: { for (;;) if (foo()) bar(); else break; } @@ -74,7 +87,9 @@ drop_if_else_break_1: { } drop_if_else_break_2: { - options = { loops: true }; + options = { + loops: true, + } input: { for (;bar();) { if (foo()) baz(); @@ -87,7 +102,9 @@ drop_if_else_break_2: { } drop_if_else_break_3: { - options = { loops: true }; + options = { + loops: true, + } input: { for (;bar();) { if (foo()) baz(); @@ -106,7 +123,10 @@ drop_if_else_break_3: { } drop_if_else_break_4: { - options = { loops: true, sequences: true }; + options = { + loops: true, + sequences: true, + } input: { for (;bar();) { x(); @@ -123,7 +143,9 @@ drop_if_else_break_4: { } parse_do_while_with_semicolon: { - options = { loops: false }; + options = { + loops: false, + } input: { do { x(); @@ -135,7 +157,9 @@ parse_do_while_with_semicolon: { } parse_do_while_without_semicolon: { - options = { loops: false }; + options = { + loops: false, + } input: { do { x(); @@ -153,7 +177,7 @@ evaluate: { loops: true, passes: 2, side_effects: true, - }; + } input: { while (true) { a(); @@ -457,7 +481,7 @@ init_side_effects: { options = { loops: true, side_effects: true, - }; + } input: { for (function() {}(), i = 0; i < 5; i++) console.log(i); for (function() {}(); i < 10; i++) console.log(i); diff --git a/test/compress/negate-iife.js b/test/compress/negate-iife.js index 17148cad..620c098a 100644 --- a/test/compress/negate-iife.js +++ b/test/compress/negate-iife.js @@ -1,7 +1,7 @@ negate_iife_1: { options = { - negate_iife: true - }; + negate_iife: true, + } input: { (function(){ stuff() })(); } @@ -13,7 +13,7 @@ negate_iife_1: { negate_iife_1_off: { options = { negate_iife: false, - }; + } input: { (function(){ stuff() })(); } @@ -24,7 +24,7 @@ negate_iife_2: { options = { inline: true, negate_iife: true, - }; + } input: { (function(){ return {} })().x = 10; } @@ -45,9 +45,9 @@ negate_iife_2_side_effects: { negate_iife_3: { options = { + conditionals: true, negate_iife: true, - conditionals: true - }; + } input: { (function(){ return t })() ? console.log(true) : console.log(false); } @@ -88,9 +88,9 @@ negate_iife_3_side_effects: { negate_iife_3_off: { options = { - negate_iife: false, conditionals: true, - }; + negate_iife: false, + } input: { (function(){ return t })() ? console.log(true) : console.log(false); } @@ -117,10 +117,10 @@ negate_iife_3_off_evaluate: { negate_iife_4: { options = { - negate_iife: true, conditionals: true, - sequences: true - }; + negate_iife: true, + sequences: true, + } input: { (function(){ return t })() ? console.log(true) : console.log(false); (function(){ @@ -136,11 +136,11 @@ negate_iife_4: { sequence_off: { options = { - negate_iife: false, conditionals: true, - sequences: true, + negate_iife: false, passes: 2, - }; + sequences: true, + } input: { function f() { (function(){ return t })() ? console.log(true) : console.log(false); @@ -171,10 +171,10 @@ sequence_off: { negate_iife_5: { options = { + conditionals: true, negate_iife: true, sequences: true, - conditionals: true, - }; + } input: { if ((function(){ return t })()) { foo(true); @@ -194,10 +194,10 @@ negate_iife_5: { negate_iife_5_off: { options = { + conditionals: true, negate_iife: false, sequences: true, - conditionals: true, - }; + } input: { if ((function(){ return t })()) { foo(true); @@ -217,10 +217,10 @@ negate_iife_5_off: { negate_iife_nested: { options = { + conditionals: true, negate_iife: true, sequences: true, - conditionals: true, - }; + } input: { function Foo(f) { this.f = f; @@ -250,10 +250,10 @@ negate_iife_nested: { negate_iife_nested_off: { options = { + conditionals: true, negate_iife: false, sequences: true, - conditionals: true, - }; + } input: { function Foo(f) { this.f = f; @@ -283,10 +283,10 @@ negate_iife_nested_off: { negate_iife_issue_1073: { options = { + conditionals: true, negate_iife: true, sequences: true, - conditionals: true, - }; + } input: { new (function(a) { return function Foo() { @@ -356,7 +356,7 @@ issue_1288: { conditionals: true, negate_iife: true, side_effects: false, - }; + } input: { if (w) ; else { diff --git a/test/compress/new.js b/test/compress/new.js index 640f201a..a823bb9c 100644 --- a/test/compress/new.js +++ b/test/compress/new.js @@ -36,7 +36,9 @@ new_statements_3: { } new_with_rewritten_true_value: { - options = { booleans: true } + options = { + booleans: true, + } input: { new true; } diff --git a/test/compress/pure_getters.js b/test/compress/pure_getters.js index f9edcc8d..61ce8a92 100644 --- a/test/compress/pure_getters.js +++ b/test/compress/pure_getters.js @@ -187,10 +187,10 @@ issue_2110_1: { options = { collapse_vars: true, pure_getters: "strict", - sequences: true, - side_effects: true, reduce_funcs: true, reduce_vars: true, + sequences: true, + side_effects: true, unused: true, } input: { diff --git a/test/compress/reduce_vars.js b/test/compress/reduce_vars.js index 67721639..c11d20c2 100644 --- a/test/compress/reduce_vars.js +++ b/test/compress/reduce_vars.js @@ -1,15 +1,15 @@ reduce_vars: { options = { - conditionals : true, - evaluate : true, - inline : true, - global_defs : { - C : 0 + conditionals: true, + evaluate: true, + global_defs: { + C: 0, }, - reduce_funcs : true, - reduce_vars : true, - toplevel : true, - unused : true + inline: true, + reduce_funcs: true, + reduce_vars: true, + toplevel: true, + unused: true, } input: { var A = 1; @@ -63,11 +63,11 @@ reduce_vars: { modified: { options = { - conditionals : true, - evaluate : true, - reduce_funcs : true, - reduce_vars : true, - unused : true, + conditionals: true, + evaluate: true, + reduce_funcs: true, + reduce_vars: true, + unused: true, } input: { function f0() { @@ -184,12 +184,12 @@ modified: { unsafe_evaluate: { options = { - evaluate : true, - reduce_funcs : true, - reduce_vars : true, - side_effects : true, - unsafe : true, - unused : true + evaluate: true, + reduce_funcs: true, + reduce_vars: true, + side_effects: true, + unsafe: true, + unused: true, } input: { function f0(){ @@ -344,10 +344,10 @@ unsafe_evaluate_unknown: { unsafe_evaluate_object_1: { options = { - evaluate : true, - reduce_funcs : true, - reduce_vars : true, - unsafe : true + evaluate: true, + reduce_funcs: true, + reduce_vars: true, + unsafe: true, } input: { function f0(){ @@ -463,10 +463,10 @@ unsafe_evaluate_object_3: { unsafe_evaluate_array_1: { options = { - evaluate : true, - reduce_funcs : true, - reduce_vars : true, - unsafe : true + evaluate: true, + reduce_funcs: true, + reduce_vars: true, + unsafe: true, } input: { function f0(){ @@ -642,11 +642,11 @@ unsafe_evaluate_array_5: { unsafe_evaluate_equality_1: { options = { - evaluate : true, - reduce_funcs : true, - reduce_vars : true, - unsafe : true, - unused : true + evaluate: true, + reduce_funcs: true, + reduce_vars: true, + unsafe: true, + unused: true, } input: { function f0() { @@ -674,12 +674,12 @@ unsafe_evaluate_equality_1: { unsafe_evaluate_equality_2: { options = { collapse_vars: true, - evaluate : true, - passes : 2, - reduce_funcs : true, - reduce_vars : true, - unsafe : true, - unused : true + evaluate: true, + passes: 2, + reduce_funcs: true, + reduce_vars: true, + unsafe: true, + unused: true, } input: { function f2() { @@ -1130,7 +1130,7 @@ toplevel_on: { evaluate: true, reduce_funcs: true, reduce_vars: true, - toplevel:true, + toplevel: true, unused: true, } input: { @@ -1148,7 +1148,7 @@ toplevel_off: { evaluate: true, reduce_funcs: true, reduce_vars: true, - toplevel:false, + toplevel: false, unused: true, } input: { @@ -1168,7 +1168,7 @@ toplevel_on_loops_1: { loops: true, reduce_funcs: true, reduce_vars: true, - toplevel:true, + toplevel: true, unused: true, } input: { @@ -1196,7 +1196,7 @@ toplevel_off_loops_1: { loops: true, reduce_funcs: true, reduce_vars: true, - toplevel:false, + toplevel: false, unused: true, } input: { @@ -1225,7 +1225,7 @@ toplevel_on_loops_2: { reduce_funcs: true, reduce_vars: true, side_effects: true, - toplevel:true, + toplevel: true, unused: true, } input: { @@ -1251,7 +1251,7 @@ toplevel_off_loops_2: { loops: true, reduce_funcs: true, reduce_vars: true, - toplevel:false, + toplevel: false, unused: true, } input: { @@ -1278,7 +1278,7 @@ toplevel_on_loops_3: { loops: true, reduce_funcs: true, reduce_vars: true, - toplevel:true, + toplevel: true, unused: true, } input: { @@ -1296,7 +1296,7 @@ toplevel_off_loops_3: { loops: true, reduce_funcs: true, reduce_vars: true, - toplevel:false, + toplevel: false, unused: true, } input: { @@ -1560,6 +1560,32 @@ func_modified: { expect_stdout: "7" } +unused_modified: { + options = { + reduce_vars: true, + unused: true, + } + input: { + console.log(function() { + var b = 1, c = "FAIL"; + if (0 || b--) + c = "PASS"; + b = 1; + return c; + }()); + } + expect: { + console.log(function() { + var b = 1, c = "FAIL"; + if (0 || b--) + c = "PASS"; + b = 1; + return c; + }()); + } + expect_stdout: "PASS" +} + defun_label: { options = { passes: 2, @@ -1868,8 +1894,8 @@ issue_1670_1: { options = { comparisons: true, conditionals: true, - evaluate: true, dead_code: true, + evaluate: true, reduce_funcs: true, reduce_vars: true, side_effects: true, @@ -1901,8 +1927,8 @@ issue_1670_1: { issue_1670_2: { options = { conditionals: true, - evaluate: true, dead_code: true, + evaluate: true, passes: 2, reduce_funcs: true, reduce_vars: true, @@ -1934,8 +1960,8 @@ issue_1670_3: { options = { comparisons: true, conditionals: true, - evaluate: true, dead_code: true, + evaluate: true, reduce_funcs: true, reduce_vars: true, side_effects: true, @@ -1967,8 +1993,8 @@ issue_1670_3: { issue_1670_4: { options = { conditionals: true, - evaluate: true, dead_code: true, + evaluate: true, passes: 2, reduce_funcs: true, reduce_vars: true, diff --git a/test/compress/return_undefined.js b/test/compress/return_undefined.js index c7e09067..0f21a2f7 100644 --- a/test/compress/return_undefined.js +++ b/test/compress/return_undefined.js @@ -1,24 +1,24 @@ return_undefined: { options = { - sequences : false, - if_return : true, - evaluate : true, - dead_code : true, - conditionals : true, - comparisons : true, - booleans : true, - unused : true, - side_effects : true, - properties : true, - drop_debugger : true, - loops : true, - hoist_funs : true, - keep_fargs : true, - keep_fnames : false, - hoist_vars : true, - join_vars : true, - negate_iife : true - }; + booleans: true, + comparisons: true, + conditionals: true, + dead_code: true, + drop_debugger: true, + evaluate: true, + hoist_funs: true, + hoist_vars: true, + if_return: true, + join_vars: true, + keep_fargs: true, + keep_fnames: false, + loops: true, + negate_iife: true, + properties: true, + sequences: false, + side_effects: true, + unused: true, + } input: { function f0() { } diff --git a/test/compress/sequences.js b/test/compress/sequences.js index 8aede12b..79b176e3 100644 --- a/test/compress/sequences.js +++ b/test/compress/sequences.js @@ -1,7 +1,7 @@ make_sequences_1: { options = { - sequences: true - }; + sequences: true, + } input: { foo(); bar(); @@ -14,8 +14,8 @@ make_sequences_1: { make_sequences_2: { options = { - sequences: true - }; + sequences: true, + } input: { if (boo) { foo(); @@ -35,8 +35,8 @@ make_sequences_2: { make_sequences_3: { options = { - sequences: true - }; + sequences: true, + } input: { function f() { foo(); @@ -61,8 +61,8 @@ make_sequences_3: { make_sequences_4: { options = { - sequences: true - }; + sequences: true, + } input: { x = 5; if (y) z(); @@ -90,7 +90,9 @@ make_sequences_4: { } lift_sequences_1: { - options = { sequences: true }; + options = { + sequences: true, + } input: { var foo, x, y, bar; foo = !(x(), y(), bar()); @@ -102,7 +104,10 @@ lift_sequences_1: { } lift_sequences_2: { - options = { sequences: true, evaluate: true }; + options = { + evaluate: true, + sequences: true, + } input: { var foo = 1, bar; foo.x = (foo = {}, 10); @@ -119,7 +124,10 @@ lift_sequences_2: { } lift_sequences_3: { - options = { sequences: true, conditionals: true }; + options = { + conditionals: true, + sequences: true, + } input: { var x, foo, bar, baz; x = (foo(), bar(), baz()) ? 10 : 20; @@ -131,7 +139,9 @@ lift_sequences_3: { } lift_sequences_4: { - options = { side_effects: true }; + options = { + side_effects: true, + } input: { var x, foo, bar, baz; x = (foo, bar, baz); @@ -160,7 +170,9 @@ lift_sequences_5: { } for_sequences: { - options = { sequences: true }; + options = { + sequences: true, + } input: { // 1 foo(); @@ -203,7 +215,7 @@ for_sequences: { limit_1: { options = { sequences: 3, - }; + } input: { a; b; @@ -228,7 +240,7 @@ limit_1: { limit_2: { options = { sequences: 3, - }; + } input: { a, b; c, d; @@ -246,9 +258,9 @@ limit_2: { negate_iife_for: { options = { - sequences: true, negate_iife: true, - }; + sequences: true, + } input: { (function() {})(); for (i = 0; i < 5; i++) console.log(i); @@ -265,7 +277,7 @@ negate_iife_for: { iife: { options = { sequences: true, - }; + } input: { x = 42; (function a() {})(); diff --git a/test/compress/switch.js b/test/compress/switch.js index fbb86eda..547843fa 100644 --- a/test/compress/switch.js +++ b/test/compress/switch.js @@ -820,8 +820,8 @@ issue_1758: { issue_2535: { options = { - evaluate: true, dead_code: true, + evaluate: true, switches: true, } input: { diff --git a/test/compress/typeof.js b/test/compress/typeof.js index dacfb735..80123834 100644 --- a/test/compress/typeof.js +++ b/test/compress/typeof.js @@ -2,7 +2,7 @@ typeof_evaluation: { options = { evaluate: true, typeofs: true, - }; + } input: { a = typeof 1; b = typeof 'test'; @@ -27,11 +27,11 @@ typeof_evaluation: { typeof_in_boolean_context: { options = { - booleans : true, - evaluate : true, - conditionals : true, - side_effects : true, - }; + booleans: true, + conditionals: true, + evaluate: true, + side_effects: true, + } input: { function f1(x) { return typeof x ? "yes" : "no"; } function f2() { return typeof g()? "Yes" : "No"; } diff --git a/test/compress/unicode.js b/test/compress/unicode.js index c4bd5de8..3ef664c2 100644 --- a/test/compress/unicode.js +++ b/test/compress/unicode.js @@ -1,5 +1,5 @@ unicode_parse_variables: { - options = {}; + options = {} input: { var a = {}; a.你好 = 456; |