fix corner case in `merge_vars` (#4455)
authorAlex Lam S.L <alexlamsl@gmail.com>
Fri, 25 Dec 2020 11:27:05 +0000 (11:27 +0000)
committerGitHub <noreply@github.com>
Fri, 25 Dec 2020 11:27:05 +0000 (19:27 +0800)
fixes #4454

lib/compress.js
test/compress/async.js

index 33aa5b9..0718e5c 100644 (file)
@@ -5187,7 +5187,7 @@ merge(Compressor.prototype, {
             } else if ((ldef = self.variables.get(def.name)) !== def) {
                 if (ldef && root === segment) references[ldef.id] = false;
                 return references[def.id] = false;
-            } else if (compressor.exposed(def) || sym.name == "arguments") {
+            } else if (compressor.exposed(def) || sym.name == "arguments" || sym.name == "await") {
                 return references[def.id] = false;
             } else {
                 var refs = declarations.get(def.id) || [];
index bf4d55c..19b90f5 100644 (file)
@@ -640,3 +640,59 @@ issue_4417: {
     expect_stdout: "undefined"
     node_version: ">=8"
 }
+
+issue_4454_1: {
+    rename = false
+    options = {
+        merge_vars: true,
+    }
+    input: {
+        function f(a) {
+            (async function(b = console.log(a)) {})();
+            var await = 42..toString();
+            console.log(await);
+        }
+        f("PASS");
+    }
+    expect: {
+        function f(a) {
+            (async function(b = console.log(a)) {})();
+            var await = 42..toString();
+            console.log(await);
+        }
+        f("PASS");
+    }
+    expect_stdout: [
+        "PASS",
+        "42",
+    ]
+    node_version: ">=8"
+}
+
+issue_4454_2: {
+    rename = true
+    options = {
+        merge_vars: true,
+    }
+    input: {
+        function f(a) {
+            (async function(b = console.log(a)) {})();
+            var await = 42..toString();
+            console.log(await);
+        }
+        f("PASS");
+    }
+    expect: {
+        function f(b) {
+            (async function(c = console.log(b)) {})();
+            var b = 42..toString();
+            console.log(b);
+        }
+        f("PASS");
+    }
+    expect_stdout: [
+        "PASS",
+        "42",
+    ]
+    node_version: ">=8"
+}