fix side effects in switch condition for singular blocks
This commit is contained in:
parent
c076e7b60d
commit
3fc717a531
|
|
@ -2599,7 +2599,15 @@ merge(Compressor.prototype, {
|
|||
has_break = true;
|
||||
});
|
||||
self.walk(tw);
|
||||
if (!has_break) return make_node(AST_BlockStatement, self, body[0]).optimize(compressor);
|
||||
if (!has_break) {
|
||||
body = body[0].body.slice();
|
||||
body.unshift(make_node(AST_SimpleStatement, self.expression, {
|
||||
body: self.expression
|
||||
}));
|
||||
return make_node(AST_BlockStatement, self, {
|
||||
body: body
|
||||
}).optimize(compressor);
|
||||
}
|
||||
}
|
||||
return self;
|
||||
|
||||
|
|
|
|||
|
|
@ -1399,6 +1399,7 @@ issue_1670_1: {
|
|||
evaluate: true,
|
||||
dead_code: true,
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
|
|
@ -1429,6 +1430,7 @@ issue_1670_2: {
|
|||
dead_code: true,
|
||||
passes: 2,
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
|
|
@ -1458,6 +1460,7 @@ issue_1670_3: {
|
|||
evaluate: true,
|
||||
dead_code: true,
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
|
|
@ -1488,6 +1491,7 @@ issue_1670_4: {
|
|||
dead_code: true,
|
||||
passes: 2,
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
|
|
@ -1516,6 +1520,7 @@ issue_1670_5: {
|
|||
evaluate: true,
|
||||
keep_fargs: false,
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
|
|
@ -1544,6 +1549,7 @@ issue_1670_6: {
|
|||
evaluate: true,
|
||||
keep_fargs: false,
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
constant_switch_1: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
switch (1+1) {
|
||||
case 1: foo(); break;
|
||||
|
|
@ -13,7 +17,11 @@ constant_switch_1: {
|
|||
}
|
||||
|
||||
constant_switch_2: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
switch (1) {
|
||||
case 1: foo();
|
||||
|
|
@ -28,7 +36,11 @@ constant_switch_2: {
|
|||
}
|
||||
|
||||
constant_switch_3: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
switch (10) {
|
||||
case 1: foo();
|
||||
|
|
@ -44,7 +56,11 @@ constant_switch_3: {
|
|||
}
|
||||
|
||||
constant_switch_4: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
switch (2) {
|
||||
case 1:
|
||||
|
|
@ -65,7 +81,11 @@ constant_switch_4: {
|
|||
}
|
||||
|
||||
constant_switch_5: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
switch (1) {
|
||||
case 1:
|
||||
|
|
@ -94,7 +114,11 @@ constant_switch_5: {
|
|||
}
|
||||
|
||||
constant_switch_6: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
OUT: {
|
||||
foo();
|
||||
|
|
@ -123,7 +147,11 @@ constant_switch_6: {
|
|||
}
|
||||
|
||||
constant_switch_7: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
OUT: {
|
||||
foo();
|
||||
|
|
@ -161,7 +189,11 @@ constant_switch_7: {
|
|||
}
|
||||
|
||||
constant_switch_8: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
OUT: switch (1) {
|
||||
case 1:
|
||||
|
|
@ -185,7 +217,11 @@ constant_switch_8: {
|
|||
}
|
||||
|
||||
constant_switch_9: {
|
||||
options = { dead_code: true, evaluate: true };
|
||||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
OUT: switch (1) {
|
||||
case 1:
|
||||
|
|
@ -263,6 +299,7 @@ issue_1663: {
|
|||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
var a = 100, b = 10;
|
||||
|
|
@ -414,6 +451,7 @@ issue_1674: {
|
|||
options = {
|
||||
dead_code: true,
|
||||
evaluate: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
switch (0) {
|
||||
|
|
@ -721,3 +759,24 @@ beautify: {
|
|||
"}",
|
||||
]
|
||||
}
|
||||
|
||||
issue_1758: {
|
||||
options = {
|
||||
dead_code: true,
|
||||
}
|
||||
input: {
|
||||
var a = 1, b = 2;
|
||||
switch (a--) {
|
||||
default:
|
||||
b++;
|
||||
}
|
||||
console.log(a, b);
|
||||
}
|
||||
expect: {
|
||||
var a = 1, b = 2;
|
||||
a--;
|
||||
b++;
|
||||
console.log(a, b);
|
||||
}
|
||||
expect_stdout: "0 3"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user