diff --git a/lib/compress.js b/lib/compress.js index ca584969..de253a7a 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1923,6 +1923,7 @@ merge(Compressor.prototype, { }); def(AST_Defun, return_true); def(AST_Function, return_false); + def(AST_Arrow, return_false); def(AST_Class, return_false); def(AST_DefClass, return_true); def(AST_Binary, function(compressor){ @@ -2608,6 +2609,7 @@ merge(Compressor.prototype, { }); def(AST_Accessor, return_null); def(AST_Function, return_null); + def(AST_Arrow, return_null); def(AST_Binary, function(compressor, first_in_statement){ var right = this.right.drop_side_effect_free(compressor); if (!right) return this.left.drop_side_effect_free(compressor, first_in_statement); diff --git a/test/compress/arrow.js b/test/compress/arrow.js index e5baaaf5..86ee1a84 100644 --- a/test/compress/arrow.js +++ b/test/compress/arrow.js @@ -135,3 +135,70 @@ arrow_with_regexp: { num => /\d{11,14}/.test( num ) } } + +arrow_unused: { + options = { + toplevel: false, + side_effects: true, + unused: true, + } + input: { + top => dog; + let fn = a => { console.log(a * a); }; + let u = (x, y) => x - y + g; + (() => { console.log("0"); })(); + !function(x) { + (() => { console.log("1"); })(); + let unused = x => { console.log(x); }; + let baz = e => e + e; + console.log(baz(x)); + }(1); + fn(3); + } + expect: { + let fn = a => { console.log(a * a); }; + let u = (x, y) => x - y + g; + (() => { console.log("0"); })(); + !function(x) { + (() => { console.log("1"); })(); + let baz = e => e + e; + console.log(baz(x)); + }(1); + fn(3); + } + expect_stdout: [ "0", "1", "2", "9" ] + node_version: ">=6" +} + +arrow_unused_toplevel: { + options = { + toplevel: true, + side_effects: true, + unused: true, + } + input: { + top => dog; + let fn = a => { console.log(a * a); }; + let u = (x, y) => x - y + g; + (() => { console.log("0"); })(); + !function(x) { + (() => { console.log("1"); })(); + let unused = x => { console.log(x); }; + let baz = e => e + e; + console.log(baz(x)); + }(1); + fn(3); + } + expect: { + let fn = a => { console.log(a * a); }; + (() => { console.log("0"); })(); + !function(x) { + (() => { console.log("1"); })(); + let baz = e => e + e; + console.log(baz(x)); + }(1); + fn(3); + } + expect_stdout: [ "0", "1", "2", "9" ] + node_version: ">=6" +}