better fix for #2506 (#3099)
authorAlex Lam S.L <alexlamsl@gmail.com>
Tue, 24 Apr 2018 20:46:07 +0000 (04:46 +0800)
committerGitHub <noreply@github.com>
Tue, 24 Apr 2018 20:46:07 +0000 (04:46 +0800)
lib/compress.js
test/compress/collapse_vars.js

index d82a1a4..06ed35f 100644 (file)
@@ -1031,19 +1031,14 @@ merge(Compressor.prototype, {
                             return node;
                         }
                         var def = candidate.name.definition();
-                        var value = candidate.value;
                         if (def.references.length - def.replaced == 1 && !compressor.exposed(def)) {
                             def.replaced++;
-                            if (funarg && is_identifier_atom(value)) {
-                                return value.transform(compressor);
-                            } else {
-                                return maintain_this_binding(parent, node, value);
-                            }
+                            return maintain_this_binding(parent, node, candidate.value);
                         }
                         return make_node(AST_Assign, candidate, {
                             operator: "=",
                             left: make_node(AST_SymbolRef, candidate.name, candidate.name),
-                            right: value
+                            right: candidate.value
                         });
                     }
                     candidate.write_only = false;
index 950ebd0..d106056 100644 (file)
@@ -3751,7 +3751,7 @@ issue_2506: {
         function f0(bar) {
             function f1(Infinity_2) {
                 function f13(NaN) {
-                    if (false <= NaN & this >> 1 >= 0) {
+                    if (false <= NaN & f0 >> 1 >= 0) {
                         c++;
                     }
                 }
@@ -3767,7 +3767,7 @@ issue_2506: {
         function f0(bar) {
             (function(Infinity_2) {
                 (function(NaN) {
-                    if (false <= 0/0 & this >> 1 >= 0)
+                    if (false <= 0/0 & f0 >> 1 >= 0)
                         c++;
                 })(0, c++);
             })();