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;
|
has_break = true;
|
||||||
});
|
});
|
||||||
self.walk(tw);
|
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;
|
return self;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1399,6 +1399,7 @@ issue_1670_1: {
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
dead_code: true,
|
dead_code: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
|
|
@ -1429,6 +1430,7 @@ issue_1670_2: {
|
||||||
dead_code: true,
|
dead_code: true,
|
||||||
passes: 2,
|
passes: 2,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
|
|
@ -1458,6 +1460,7 @@ issue_1670_3: {
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
dead_code: true,
|
dead_code: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
|
|
@ -1488,6 +1491,7 @@ issue_1670_4: {
|
||||||
dead_code: true,
|
dead_code: true,
|
||||||
passes: 2,
|
passes: 2,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
|
|
@ -1516,6 +1520,7 @@ issue_1670_5: {
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
keep_fargs: false,
|
keep_fargs: false,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
|
|
@ -1544,6 +1549,7 @@ issue_1670_6: {
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
keep_fargs: false,
|
keep_fargs: false,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
constant_switch_1: {
|
constant_switch_1: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
switch (1+1) {
|
switch (1+1) {
|
||||||
case 1: foo(); break;
|
case 1: foo(); break;
|
||||||
|
|
@ -13,7 +17,11 @@ constant_switch_1: {
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_switch_2: {
|
constant_switch_2: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
switch (1) {
|
switch (1) {
|
||||||
case 1: foo();
|
case 1: foo();
|
||||||
|
|
@ -28,7 +36,11 @@ constant_switch_2: {
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_switch_3: {
|
constant_switch_3: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
switch (10) {
|
switch (10) {
|
||||||
case 1: foo();
|
case 1: foo();
|
||||||
|
|
@ -44,7 +56,11 @@ constant_switch_3: {
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_switch_4: {
|
constant_switch_4: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
switch (2) {
|
switch (2) {
|
||||||
case 1:
|
case 1:
|
||||||
|
|
@ -65,7 +81,11 @@ constant_switch_4: {
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_switch_5: {
|
constant_switch_5: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
switch (1) {
|
switch (1) {
|
||||||
case 1:
|
case 1:
|
||||||
|
|
@ -94,7 +114,11 @@ constant_switch_5: {
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_switch_6: {
|
constant_switch_6: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
OUT: {
|
OUT: {
|
||||||
foo();
|
foo();
|
||||||
|
|
@ -123,7 +147,11 @@ constant_switch_6: {
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_switch_7: {
|
constant_switch_7: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
OUT: {
|
OUT: {
|
||||||
foo();
|
foo();
|
||||||
|
|
@ -161,7 +189,11 @@ constant_switch_7: {
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_switch_8: {
|
constant_switch_8: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
OUT: switch (1) {
|
OUT: switch (1) {
|
||||||
case 1:
|
case 1:
|
||||||
|
|
@ -185,7 +217,11 @@ constant_switch_8: {
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_switch_9: {
|
constant_switch_9: {
|
||||||
options = { dead_code: true, evaluate: true };
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
input: {
|
input: {
|
||||||
OUT: switch (1) {
|
OUT: switch (1) {
|
||||||
case 1:
|
case 1:
|
||||||
|
|
@ -263,6 +299,7 @@ issue_1663: {
|
||||||
options = {
|
options = {
|
||||||
dead_code: true,
|
dead_code: true,
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
var a = 100, b = 10;
|
var a = 100, b = 10;
|
||||||
|
|
@ -414,6 +451,7 @@ issue_1674: {
|
||||||
options = {
|
options = {
|
||||||
dead_code: true,
|
dead_code: true,
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
switch (0) {
|
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