| Index: node_modules/vulcanize/node_modules/uglify-js/test/compress/switch.js
|
| diff --git a/node_modules/vulcanize/node_modules/uglify-js/test/compress/switch.js b/node_modules/vulcanize/node_modules/uglify-js/test/compress/switch.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..62e39cf7bcecb16f4cdbe213617df8dd6bdfedfa
|
| --- /dev/null
|
| +++ b/node_modules/vulcanize/node_modules/uglify-js/test/compress/switch.js
|
| @@ -0,0 +1,260 @@
|
| +constant_switch_1: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + switch (1+1) {
|
| + case 1: foo(); break;
|
| + case 1+1: bar(); break;
|
| + case 1+1+1: baz(); break;
|
| + }
|
| + }
|
| + expect: {
|
| + bar();
|
| + }
|
| +}
|
| +
|
| +constant_switch_2: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + switch (1) {
|
| + case 1: foo();
|
| + case 1+1: bar(); break;
|
| + case 1+1+1: baz();
|
| + }
|
| + }
|
| + expect: {
|
| + foo();
|
| + bar();
|
| + }
|
| +}
|
| +
|
| +constant_switch_3: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + switch (10) {
|
| + case 1: foo();
|
| + case 1+1: bar(); break;
|
| + case 1+1+1: baz();
|
| + default:
|
| + def();
|
| + }
|
| + }
|
| + expect: {
|
| + def();
|
| + }
|
| +}
|
| +
|
| +constant_switch_4: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + switch (2) {
|
| + case 1:
|
| + x();
|
| + if (foo) break;
|
| + y();
|
| + break;
|
| + case 1+1:
|
| + bar();
|
| + default:
|
| + def();
|
| + }
|
| + }
|
| + expect: {
|
| + bar();
|
| + def();
|
| + }
|
| +}
|
| +
|
| +constant_switch_5: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + switch (1) {
|
| + case 1:
|
| + x();
|
| + if (foo) break;
|
| + y();
|
| + break;
|
| + case 1+1:
|
| + bar();
|
| + default:
|
| + def();
|
| + }
|
| + }
|
| + expect: {
|
| + // the break inside the if ruins our job
|
| + // we can still get rid of irrelevant cases.
|
| + switch (1) {
|
| + case 1:
|
| + x();
|
| + if (foo) break;
|
| + y();
|
| + }
|
| + // XXX: we could optimize this better by inventing an outer
|
| + // labeled block, but that's kinda tricky.
|
| + }
|
| +}
|
| +
|
| +constant_switch_6: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + OUT: {
|
| + foo();
|
| + switch (1) {
|
| + case 1:
|
| + x();
|
| + if (foo) break OUT;
|
| + y();
|
| + case 1+1:
|
| + bar();
|
| + break;
|
| + default:
|
| + def();
|
| + }
|
| + }
|
| + }
|
| + expect: {
|
| + OUT: {
|
| + foo();
|
| + x();
|
| + if (foo) break OUT;
|
| + y();
|
| + bar();
|
| + }
|
| + }
|
| +}
|
| +
|
| +constant_switch_7: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + OUT: {
|
| + foo();
|
| + switch (1) {
|
| + case 1:
|
| + x();
|
| + if (foo) break OUT;
|
| + for (var x = 0; x < 10; x++) {
|
| + if (x > 5) break; // this break refers to the for, not to the switch; thus it
|
| + // shouldn't ruin our optimization
|
| + console.log(x);
|
| + }
|
| + y();
|
| + case 1+1:
|
| + bar();
|
| + break;
|
| + default:
|
| + def();
|
| + }
|
| + }
|
| + }
|
| + expect: {
|
| + OUT: {
|
| + foo();
|
| + x();
|
| + if (foo) break OUT;
|
| + for (var x = 0; x < 10; x++) {
|
| + if (x > 5) break;
|
| + console.log(x);
|
| + }
|
| + y();
|
| + bar();
|
| + }
|
| + }
|
| +}
|
| +
|
| +constant_switch_8: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + OUT: switch (1) {
|
| + case 1:
|
| + x();
|
| + for (;;) break OUT;
|
| + y();
|
| + break;
|
| + case 1+1:
|
| + bar();
|
| + default:
|
| + def();
|
| + }
|
| + }
|
| + expect: {
|
| + OUT: {
|
| + x();
|
| + for (;;) break OUT;
|
| + y();
|
| + }
|
| + }
|
| +}
|
| +
|
| +constant_switch_9: {
|
| + options = { dead_code: true, evaluate: true };
|
| + input: {
|
| + OUT: switch (1) {
|
| + case 1:
|
| + x();
|
| + for (;;) if (foo) break OUT;
|
| + y();
|
| + case 1+1:
|
| + bar();
|
| + default:
|
| + def();
|
| + }
|
| + }
|
| + expect: {
|
| + OUT: {
|
| + x();
|
| + for (;;) if (foo) break OUT;
|
| + y();
|
| + bar();
|
| + def();
|
| + }
|
| + }
|
| +}
|
| +
|
| +drop_default_1: {
|
| + options = { dead_code: true };
|
| + input: {
|
| + switch (foo) {
|
| + case 'bar': baz();
|
| + default:
|
| + }
|
| + }
|
| + expect: {
|
| + switch (foo) {
|
| + case 'bar': baz();
|
| + }
|
| + }
|
| +}
|
| +
|
| +drop_default_2: {
|
| + options = { dead_code: true };
|
| + input: {
|
| + switch (foo) {
|
| + case 'bar': baz(); break;
|
| + default:
|
| + break;
|
| + }
|
| + }
|
| + expect: {
|
| + switch (foo) {
|
| + case 'bar': baz();
|
| + }
|
| + }
|
| +}
|
| +
|
| +keep_default: {
|
| + options = { dead_code: true };
|
| + input: {
|
| + switch (foo) {
|
| + case 'bar': baz();
|
| + default:
|
| + something();
|
| + break;
|
| + }
|
| + }
|
| + expect: {
|
| + switch (foo) {
|
| + case 'bar': baz();
|
| + default:
|
| + something();
|
| + }
|
| + }
|
| +}
|
|
|