improve performance when handling unused variables in `collapse_vars` (#3084)
authorAlex Lam S.L <alexlamsl@gmail.com>
Sun, 15 Apr 2018 04:38:31 +0000 (12:38 +0800)
committerGitHub <noreply@github.com>
Sun, 15 Apr 2018 04:38:31 +0000 (12:38 +0800)
fixes #3082

lib/compress.js

index 999e03c..f82d99e 100644 (file)
@@ -1348,8 +1348,9 @@ merge(Compressor.prototype, {
                 if (expr instanceof AST_VarDef) {
                     var def = expr.name.definition();
                     if (!member(expr.name, def.orig)) return;
-                    var declared = def.orig.length - def.eliminated;
                     var referenced = def.references.length - def.replaced;
+                    if (!referenced) return;
+                    var declared = def.orig.length - def.eliminated;
                     if (declared > 1 && !(expr.name instanceof AST_SymbolFunarg)
                         || (referenced > 1 ? mangleable_var(expr) : !compressor.exposed(def))) {
                         return make_node(AST_SymbolRef, expr.name, expr.name);