diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2021-07-19 15:35:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-19 22:35:45 +0800 |
commit | 85968dee5453dfb3cc0cb5c67f363eccd58b08c6 (patch) | |
tree | c54fe62d6d20e10a55b0454e3616a608143dfde3 | |
parent | a7e7865e6bb446d7bcb26fa96d57041c65001d01 (diff) | |
download | tracifyjs-85968dee5453dfb3cc0cb5c67f363eccd58b08c6.tar.gz tracifyjs-85968dee5453dfb3cc0cb5c67f363eccd58b08c6.zip |
fix corner case in `inline` (#5088)
fixes #5087
-rw-r--r-- | lib/compress.js | 4 | ||||
-rw-r--r-- | test/compress/destructured.js | 59 |
2 files changed, 62 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js index 0de072ad..c5d75d42 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -9957,8 +9957,10 @@ merge(Compressor.prototype, { })); function process(ref, name) { + var def = name.definition(); + def.references.push(ref); var symbol = make_node(AST_SymbolVar, name, name); - name.definition().orig.push(symbol); + def.orig.push(symbol); append_var(decls, expressions, symbol); } } diff --git a/test/compress/destructured.js b/test/compress/destructured.js index 4ba32f3e..879e9529 100644 --- a/test/compress/destructured.js +++ b/test/compress/destructured.js @@ -2998,3 +2998,62 @@ issue_5085_2: { expect_stdout: "PASS" node_version: ">=6" } + +issue_5087_1: { + options = { + collapse_vars: true, + inline: true, + properties: true, + sequences: true, + side_effects: true, + unused: true, + } + input: { + var a = "PASS"; + (function() { + (function() { + (function([ b ]) { + b && console.log(b); + })([ a ]); + })(); + })(); + } + expect: { + var a = "PASS"; + (function() { + var b; + (b = a) && console.log(b); + })(); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +issue_5087_2: { + options = { + collapse_vars: true, + inline: true, + passes: 2, + properties: true, + reduce_vars: true, + sequences: true, + side_effects: true, + unused: true, + } + input: { + var a = "PASS"; + (function() { + (function() { + (function([ b ]) { + b && console.log(b); + })([ a ]); + })(); + })(); + } + expect: { + var a = "PASS"; + a && console.log(a); + } + expect_stdout: "PASS" + node_version: ">=6" +} |