diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2017-12-26 18:29:28 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-26 18:29:28 +0800 |
commit | 05e7d34ed480429cc26c8eedd675263cd0d94a3e (patch) | |
tree | 6a5717b6de771c860ca0eb25d3680779fa395226 /lib | |
parent | 86607156e3c68fe2a56d728563691d7dbcb7519d (diff) | |
download | tracifyjs-05e7d34ed480429cc26c8eedd675263cd0d94a3e.tar.gz tracifyjs-05e7d34ed480429cc26c8eedd675263cd0d94a3e.zip |
improve `unused` over duplicate variable names (#2656)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/compress.js b/lib/compress.js index 8cfb56be..8df6bbd5 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2645,14 +2645,14 @@ merge(Compressor.prototype, { var tw = new TreeWalker(function(node, descend){ if (node === self) return; if (node instanceof AST_Defun) { + var node_def = node.name.definition(); if (!drop_funcs && scope === self) { - var node_def = node.name.definition(); if (!(node_def.id in in_use_ids)) { in_use_ids[node_def.id] = true; in_use.push(node_def); } } - initializations.add(node.name.name, node); + initializations.add(node_def.id, node); return true; // don't go in nested scopes } if (node instanceof AST_SymbolFunarg && scope === self) { @@ -2671,7 +2671,7 @@ merge(Compressor.prototype, { } } if (def.value) { - initializations.add(def.name.name, def.value); + initializations.add(node_def.id, def.value); if (def.value.has_side_effects(compressor)) { def.value.walk(tw); } @@ -2686,13 +2686,10 @@ merge(Compressor.prototype, { // initialization code to figure out if it uses other // symbols (that may not be in_use). tw = new TreeWalker(scan_ref_scoped); - for (var i = 0; i < in_use.length; ++i) { - in_use[i].orig.forEach(function(decl){ - // undeclared globals will be instanceof AST_SymbolRef - var init = initializations.get(decl.name); - if (init) init.forEach(function(init){ - init.walk(tw); - }); + for (var i = 0; i < in_use.length; i++) { + var init = initializations.get(in_use[i].id); + if (init) init.forEach(function(init) { + init.walk(tw); }); } // pass 3: we should drop declarations not in_use |