fix corner case in `collapse_vars` (#4797)
authorAlex Lam S.L <alexlamsl@gmail.com>
Wed, 17 Mar 2021 23:50:55 +0000 (23:50 +0000)
committerGitHub <noreply@github.com>
Wed, 17 Mar 2021 23:50:55 +0000 (07:50 +0800)
lib/compress.js
test/compress/yields.js

index 0d4f7ab..c655803 100644 (file)
@@ -2428,6 +2428,7 @@ merge(Compressor.prototype, {
                     if (parent.condition !== node) return node;
                     return find_stop_value(parent, level + 1);
                 }
+                if (parent instanceof AST_Yield) return find_stop_value(parent, level + 1);
                 return null;
             }
 
index 05972e5..d21ebcb 100644 (file)
@@ -247,6 +247,30 @@ collapse_vars_4: {
     node_version: ">=4"
 }
 
+collapse_vars_5: {
+    options = {
+        collapse_vars: true,
+    }
+    input: {
+        var a = function* f(b, c) {
+            b = yield c = b;
+            console.log(c);
+        }("PASS");
+        a.next();
+        a.next("FAIL");
+    }
+    expect: {
+        var a = function* f(b, c) {
+            b = yield c = b;
+            console.log(c);
+        }("PASS");
+        a.next();
+        a.next("FAIL");
+    }
+    expect_stdout: "PASS"
+    node_version: ">=4"
+}
+
 collapse_property_lambda: {
     options = {
         collapse_vars: true,