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(); |
+ } |
+ } |
+} |