gate various label-related transformations (#3812)
authorAlex Lam S.L <alexlamsl@gmail.com>
Wed, 22 Apr 2020 21:27:26 +0000 (22:27 +0100)
committerGitHub <noreply@github.com>
Wed, 22 Apr 2020 21:27:26 +0000 (05:27 +0800)
lib/compress.js
test/compress/labels.js
test/compress/loops.js
test/compress/transform.js

index 6926b35..2878385 100644 (file)
@@ -3962,11 +3962,12 @@ merge(Compressor.prototype, {
     });
 
     OPT(AST_LabeledStatement, function(self, compressor) {
-        if (self.body instanceof AST_Break
+        if (compressor.option("dead_code")
+            && self.body instanceof AST_Break
             && compressor.loopcontrol_target(self.body) === self.body) {
             return make_node(AST_EmptyStatement, self);
         }
-        return self.label.references.length == 0 ? self.body : self;
+        return compressor.option("unused") && self.label.references.length == 0 ? self.body : self;
     });
 
     OPT(AST_Block, function(self, compressor) {
index 0023283..13ac8e3 100644 (file)
@@ -3,6 +3,7 @@ labels_1: {
         conditionals: true,
         dead_code: true,
         if_return: true,
+        unused: true,
     }
     input: {
         out: {
@@ -21,6 +22,7 @@ labels_2: {
         conditionals: true,
         dead_code: true,
         if_return: true,
+        unused: true,
     }
     input: {
         out: {
@@ -61,6 +63,7 @@ labels_4: {
         conditionals: true,
         dead_code: true,
         if_return: true,
+        unused: true,
     }
     input: {
         out: for (var i = 0; i < 5; ++i) {
@@ -105,6 +108,9 @@ labels_5: {
 }
 
 labels_6: {
+    options = {
+        dead_code: true,
+    }
     input: {
         out: break out;
     };
@@ -159,6 +165,7 @@ labels_9: {
         conditionals: true,
         dead_code: true,
         if_return: true,
+        unused: true,
     }
     input: {
         out: while (foo) {
index 4487447..aef1b90 100644 (file)
@@ -549,6 +549,7 @@ issue_2740_2: {
         dead_code: true,
         loops: true,
         passes: 2,
+        unused: true,
     }
     input: {
         L1: while (x()) {
@@ -564,6 +565,7 @@ issue_2740_3: {
     options = {
         dead_code: true,
         loops: true,
+        unused: true,
     }
     input: {
         L1: for (var x = 0; x < 3; x++) {
@@ -589,6 +591,7 @@ issue_2740_4: {
         dead_code: true,
         loops: true,
         passes: 2,
+        unused: true,
     }
     input: {
         L1: for (var x = 0; x < 3; x++) {
@@ -613,6 +616,7 @@ issue_2740_5: {
         dead_code: true,
         loops: true,
         passes: 2,
+        unused: true,
     }
     input: {
         L1: for (var x = 0; x < 3; x++) {
@@ -763,6 +767,7 @@ issue_3631_1: {
         loops: true,
         reduce_vars: true,
         toplevel: true,
+        unused: true,
     }
     input: {
         var c = 0;
@@ -789,6 +794,7 @@ issue_3631_2: {
         loops: true,
         reduce_vars: true,
         toplevel: true,
+        unused: true,
     }
     input: {
         L: for (var a = 1; a--; console.log(b)) {
index 66f19bd..d8e1ee7 100644 (file)
@@ -69,6 +69,7 @@ label_if_break: {
         dead_code: true,
         evaluate: true,
         side_effects: true,
+        unused: true,
     }
     input: {
         L: if (true) {