gate OPT(AST_Switch) with switches

This commit is contained in:
alexlamsl 2017-04-02 14:07:53 +08:00
parent dd0e753e90
commit cf0fbbfb7d
4 changed files with 48 additions and 3 deletions

View File

@ -77,6 +77,7 @@ function Compressor(options, false_by_default) {
screw_ie8 : true, screw_ie8 : true,
sequences : !false_by_default, sequences : !false_by_default,
side_effects : !false_by_default, side_effects : !false_by_default,
switches : !false_by_default,
top_retain : null, top_retain : null,
toplevel : !!(options && options["top_retain"]), toplevel : !!(options && options["top_retain"]),
unsafe : false, unsafe : false,
@ -2526,6 +2527,7 @@ merge(Compressor.prototype, {
}); });
OPT(AST_Switch, function(self, compressor){ OPT(AST_Switch, function(self, compressor){
if (!compressor.option("switches")) return self;
var branch; var branch;
var value = self.expression.evaluate(compressor); var value = self.expression.evaluate(compressor);
if (value !== self.expression) { if (value !== self.expression) {

View File

@ -2,6 +2,7 @@ case_1: {
options = { options = {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
switches: true,
} }
input: { input: {
var a = 0, b = 1; var a = 0, b = 1;

View File

@ -1400,6 +1400,7 @@ issue_1670_1: {
dead_code: true, dead_code: true,
reduce_vars: true, reduce_vars: true,
side_effects: true, side_effects: true,
switches: true,
unused: true, unused: true,
} }
input: { input: {
@ -1431,6 +1432,7 @@ issue_1670_2: {
passes: 2, passes: 2,
reduce_vars: true, reduce_vars: true,
side_effects: true, side_effects: true,
switches: true,
unused: true, unused: true,
} }
input: { input: {
@ -1461,6 +1463,7 @@ issue_1670_3: {
dead_code: true, dead_code: true,
reduce_vars: true, reduce_vars: true,
side_effects: true, side_effects: true,
switches: true,
unused: true, unused: true,
} }
input: { input: {
@ -1492,6 +1495,7 @@ issue_1670_4: {
passes: 2, passes: 2,
reduce_vars: true, reduce_vars: true,
side_effects: true, side_effects: true,
switches: true,
unused: true, unused: true,
} }
input: { input: {
@ -1521,6 +1525,7 @@ issue_1670_5: {
keep_fargs: false, keep_fargs: false,
reduce_vars: true, reduce_vars: true,
side_effects: true, side_effects: true,
switches: true,
unused: true, unused: true,
} }
input: { input: {
@ -1550,6 +1555,7 @@ issue_1670_6: {
keep_fargs: false, keep_fargs: false,
reduce_vars: true, reduce_vars: true,
side_effects: true, side_effects: true,
switches: true,
unused: true, unused: true,
} }
input: { input: {

View File

@ -3,6 +3,7 @@ constant_switch_1: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
switch (1+1) { switch (1+1) {
@ -21,6 +22,7 @@ constant_switch_2: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
switch (1) { switch (1) {
@ -40,6 +42,7 @@ constant_switch_3: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
switch (10) { switch (10) {
@ -60,6 +63,7 @@ constant_switch_4: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
switch (2) { switch (2) {
@ -85,6 +89,7 @@ constant_switch_5: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
switch (1) { switch (1) {
@ -118,6 +123,7 @@ constant_switch_6: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
OUT: { OUT: {
@ -151,6 +157,7 @@ constant_switch_7: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
OUT: { OUT: {
@ -193,6 +200,7 @@ constant_switch_8: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
OUT: switch (1) { OUT: switch (1) {
@ -221,6 +229,7 @@ constant_switch_9: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
OUT: switch (1) { OUT: switch (1) {
@ -246,7 +255,10 @@ constant_switch_9: {
} }
drop_default_1: { drop_default_1: {
options = { dead_code: true }; options = {
dead_code: true,
switches: true,
}
input: { input: {
switch (foo) { switch (foo) {
case 'bar': baz(); case 'bar': baz();
@ -261,7 +273,10 @@ drop_default_1: {
} }
drop_default_2: { drop_default_2: {
options = { dead_code: true }; options = {
dead_code: true,
switches: true,
}
input: { input: {
switch (foo) { switch (foo) {
case 'bar': baz(); break; case 'bar': baz(); break;
@ -277,7 +292,10 @@ drop_default_2: {
} }
keep_default: { keep_default: {
options = { dead_code: true }; options = {
dead_code: true,
switches: true,
}
input: { input: {
switch (foo) { switch (foo) {
case 'bar': baz(); case 'bar': baz();
@ -300,6 +318,7 @@ issue_1663: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
var a = 100, b = 10; var a = 100, b = 10;
@ -331,6 +350,7 @@ issue_1663: {
drop_case: { drop_case: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
switch (foo) { switch (foo) {
@ -349,6 +369,7 @@ drop_case: {
keep_case: { keep_case: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
switch (foo) { switch (foo) {
@ -369,6 +390,7 @@ issue_376: {
options = { options = {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
switches: true,
} }
input: { input: {
switch (true) { switch (true) {
@ -391,6 +413,7 @@ issue_376: {
issue_441_1: { issue_441_1: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
switch (foo) { switch (foo) {
@ -418,6 +441,7 @@ issue_441_1: {
issue_441_2: { issue_441_2: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
switch (foo) { switch (foo) {
@ -452,6 +476,7 @@ issue_1674: {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
switch (0) { switch (0) {
@ -473,6 +498,7 @@ issue_1679: {
options = { options = {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
switches: true,
} }
input: { input: {
var a = 100, b = 10; var a = 100, b = 10;
@ -520,6 +546,7 @@ issue_1680_1: {
options = { options = {
dead_code: true, dead_code: true,
evaluate: true, evaluate: true,
switches: true,
} }
input: { input: {
function f(x) { function f(x) {
@ -560,6 +587,7 @@ issue_1680_1: {
issue_1680_2: { issue_1680_2: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
var a = 100, b = 10; var a = 100, b = 10;
@ -595,6 +623,7 @@ issue_1680_2: {
issue_1690_1: { issue_1690_1: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
switch (console.log("PASS")) {} switch (console.log("PASS")) {}
@ -608,6 +637,7 @@ issue_1690_1: {
issue_1690_2: { issue_1690_2: {
options = { options = {
dead_code: false, dead_code: false,
switches: true,
} }
input: { input: {
switch (console.log("PASS")) {} switch (console.log("PASS")) {}
@ -623,6 +653,7 @@ if_switch_typeof: {
conditionals: true, conditionals: true,
dead_code: true, dead_code: true,
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
if (a) switch(typeof b) {} if (a) switch(typeof b) {}
@ -635,6 +666,7 @@ if_switch_typeof: {
issue_1698: { issue_1698: {
options = { options = {
side_effects: true, side_effects: true,
switches: true,
} }
input: { input: {
var a = 1; var a = 1;
@ -656,6 +688,7 @@ issue_1698: {
issue_1705_1: { issue_1705_1: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
var a = 0; var a = 0;
@ -684,6 +717,7 @@ issue_1705_2: {
reduce_vars: true, reduce_vars: true,
sequences: true, sequences: true,
side_effects: true, side_effects: true,
switches: true,
toplevel: true, toplevel: true,
unused: true, unused: true,
} }
@ -704,6 +738,7 @@ issue_1705_2: {
issue_1705_3: { issue_1705_3: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
switch (a) { switch (a) {
@ -763,6 +798,7 @@ beautify: {
issue_1758: { issue_1758: {
options = { options = {
dead_code: true, dead_code: true,
switches: true,
} }
input: { input: {
var a = 1, b = 2; var a = 1, b = 2;