Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(222)

Unified Diff: tests/language/inlined_throw_test.dart

Issue 13947004: dart2js: Allow 'throw' when inlining (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/language/inlined_throw_test.dart
diff --git a/tests/language/inlined_throw_test.dart b/tests/language/inlined_throw_test.dart
index 02a9a08402863afa68b7fbc2a96ea77f4002254d..43949493b1392e043495133f383f3b906930b385 100644
--- a/tests/language/inlined_throw_test.dart
+++ b/tests/language/inlined_throw_test.dart
@@ -73,6 +73,12 @@ boo() {
yo() {
throw kast("yo");
}
+bin() {
+ return 5 * kast("bin");
+}
+binCallThrow() {
+ return callMe() * kast("binct");
+}
hoo() {
x[kast("hoo")] = 0;
x[kast("hoo")];
@@ -87,6 +93,26 @@ switcheroo() {
}
}
+class ThrowConstructor {
+ ThrowConstructor() :
+ foo = callMeTrue(),
+ bar = kast("ThrowConstructor") {
+ called = false;
+ }
+
+ bool foo;
+ var bar;
+}
+
+throwConstructor() {
+ called = false;
+ return new ThrowConstructor();
+}
+
+cascade() {
+ return new List()..add(callMeTrue())..add(kast("cascade"));
+}
+
interpole() => "inter${kast('tada!')}pole";
interpoleCallThrow() => "inter${callMeTrue()}...${kast('tada!')}pole";
@@ -142,6 +168,81 @@ dovileContinue() {
return(x);
}
+dovileBreakContinue(x) {
+ do {
+ callMe();
+ if (x == 1) break;
+ continue;
+ } while (kast("vile"));
+ return(x);
+}
+
+faar1() {
+ callMe();
+ for (kast("faar"); called = false; called = false) {
+ called = false;
+ }
+}
+
+faar2() {
+ for (callMe(); kast("faar"); called = false) {
+ called = false;
+ }
+}
+
+faar3() {
+ for (; true; kast("faar")) {
+ callMe();
+ }
+ called = false;
+}
+
+faar4() {
+ callMe();
+ for (kast("faar"); called = false; called = false) {
+ called = false;
+ continue;
+ }
+}
+
+faar5() {
+ for (callMe(); kast("faar"); called = false) {
+ called = false;
+ continue;
+ }
+}
+
+faar6() {
+ for (; true; kast("faar")) {
+ callMe();
+ continue;
+ }
+ called = false;
+}
+
+faar7() {
+ callMe();
+ for (kast("faar"); called = false; called = false) {
+ called = false;
+ break;
+ }
+}
+
+faar8() {
+ for (callMe(); kast("faar"); called = false) {
+ called = false;
+ break;
+ }
+}
+
+faar9() {
+ for (; true; kast("faar")) {
+ callMe();
+ break;
+ called = false;
+ }
+}
+
main() {
Expect.throws(hest);
Expect.throws(hest2);
@@ -161,6 +262,8 @@ main() {
Expect.throws(unary);
testCallThenThrow(boo);
Expect.throws(yo);
+ Expect.throws(bin);
+ testCallThenThrow(binCallThrow);
Expect.throws(hoo);
Expect.throws(switcheroo);
Expect.throws(interpole);
@@ -178,4 +281,16 @@ main() {
testCallThenThrow(dovile);
testCall(dovileBreak);
testCallThenThrow(dovileContinue);
+ testCallThenThrow(throwConstructor);
+ testCallThenThrow(cascade);
+ dovileBreakContinue(1);
+ testCallThenThrow(faar1);
+ testCallThenThrow(faar2);
+ testCallThenThrow(faar3);
+ testCallThenThrow(faar4);
+ testCallThenThrow(faar5);
+ testCallThenThrow(faar6);
+ testCallThenThrow(faar7);
+ testCallThenThrow(faar8);
+ testCall(faar9);
}

Powered by Google App Engine
This is Rietveld 408576698