diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2021-02-15 22:46:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-16 06:46:45 +0800 |
commit | fa8aa204a0bec791b00bd6ceb3682e2a06167900 (patch) | |
tree | 73b48cff63365035a70fb7298ab590dce68bbacf /lib/compress.js | |
parent | 76b27891c6f834d35da3b6dc6d25ad53c4f3bc36 (diff) | |
download | tracifyjs-fa8aa204a0bec791b00bd6ceb3682e2a06167900.tar.gz tracifyjs-fa8aa204a0bec791b00bd6ceb3682e2a06167900.zip |
fix corner case in `reduce_vars` (#4654)
fixes #4653
Diffstat (limited to 'lib/compress.js')
-rw-r--r-- | lib/compress.js | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/lib/compress.js b/lib/compress.js index 5adeb566..b4f9c3a8 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -853,18 +853,21 @@ merge(Compressor.prototype, { } return true; - function walk_prop(node) { - if (node instanceof AST_Dot) { - walk_prop(node.expression); - } else if (node instanceof AST_Sub) { - walk_prop(node.expression); - node.property.walk(tw); - } else if (node instanceof AST_SymbolRef) { - var d = node.definition(); - push_ref(d, node); - node.fixed = d.fixed; + function walk_prop(lhs) { + if (lhs instanceof AST_Dot) { + walk_prop(lhs.expression); + } else if (lhs instanceof AST_Sub) { + walk_prop(lhs.expression); + lhs.property.walk(tw); + } else if (lhs instanceof AST_SymbolRef) { + var d = lhs.definition(); + push_ref(d, lhs); + if (d.fixed) { + lhs.fixed = d.fixed; + lhs.fixed.assigns = [ node ]; + } } else { - node.walk(tw); + lhs.walk(tw); } } }); |