aboutsummaryrefslogtreecommitdiff
path: root/test/compress
diff options
context:
space:
mode:
authorMihai Bazon <mihai@bazon.net>2012-10-18 15:14:57 +0300
committerMihai Bazon <mihai@bazon.net>2012-10-18 15:14:57 +0300
commitafb7faa6fadee46a6ab46232eddba2121c77549b (patch)
tree5d472b568192e15812dbf74c63790abf78ce984b /test/compress
parent6aa56f92fe07edfc677d390a2e26b37c98da0968 (diff)
downloadtracifyjs-afb7faa6fadee46a6ab46232eddba2121c77549b.tar.gz
tracifyjs-afb7faa6fadee46a6ab46232eddba2121c77549b.zip
more optimizations for some break/continue cases
Diffstat (limited to 'test/compress')
-rw-r--r--test/compress/labels.js163
1 files changed, 163 insertions, 0 deletions
diff --git a/test/compress/labels.js b/test/compress/labels.js
new file mode 100644
index 00000000..044b7a7e
--- /dev/null
+++ b/test/compress/labels.js
@@ -0,0 +1,163 @@
+labels_1: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ input: {
+ out: {
+ if (foo) break out;
+ console.log("bar");
+ }
+ };
+ expect: {
+ foo || console.log("bar");
+ }
+}
+
+labels_2: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ input: {
+ out: {
+ if (foo) print("stuff");
+ else break out;
+ console.log("here");
+ }
+ };
+ expect: {
+ if (foo) {
+ print("stuff");
+ console.log("here");
+ }
+ }
+}
+
+labels_3: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ input: {
+ for (var i = 0; i < 5; ++i) {
+ if (i < 3) continue;
+ console.log(i);
+ }
+ };
+ expect: {
+ for (var i = 0; i < 5; ++i)
+ i < 3 || console.log(i);
+ }
+}
+
+labels_4: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ input: {
+ out: for (var i = 0; i < 5; ++i) {
+ if (i < 3) continue out;
+ console.log(i);
+ }
+ };
+ expect: {
+ for (var i = 0; i < 5; ++i)
+ i < 3 || console.log(i);
+ }
+}
+
+labels_5: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ // should keep the break-s in the following
+ input: {
+ while (foo) {
+ if (bar) break;
+ console.log("foo");
+ }
+ out: while (foo) {
+ if (bar) break out;
+ console.log("foo");
+ }
+ };
+ expect: {
+ while (foo) {
+ if (bar) break;
+ console.log("foo");
+ }
+ out: while (foo) {
+ if (bar) break out;
+ console.log("foo");
+ }
+ }
+}
+
+labels_6: {
+ input: {
+ out: break out;
+ };
+ expect: {}
+}
+
+labels_7: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ input: {
+ while (foo) {
+ x();
+ y();
+ continue;
+ }
+ };
+ expect: {
+ while (foo) {
+ x();
+ y();
+ }
+ }
+}
+
+labels_8: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ input: {
+ while (foo) {
+ x();
+ y();
+ break;
+ }
+ };
+ expect: {
+ while (foo) {
+ x();
+ y();
+ break;
+ }
+ }
+}
+
+labels_9: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ input: {
+ out: while (foo) {
+ x();
+ y();
+ continue out;
+ z();
+ k();
+ }
+ };
+ expect: {
+ while (foo) {
+ x();
+ y();
+ }
+ }
+}
+
+labels_10: {
+ options = { if_return: true, conditionals: true, dead_code: true };
+ input: {
+ out: while (foo) {
+ x();
+ y();
+ break out;
+ z();
+ k();
+ }
+ };
+ expect: {
+ out: while (foo) {
+ x();
+ y();
+ break out;
+ }
+ }
+}