Index: test/codegen/language/async_switch_test.dart |
diff --git a/test/codegen/language/async_switch_test.dart b/test/codegen/language/async_switch_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1e37321117273282779f7889c288e3221af03f03 |
--- /dev/null |
+++ b/test/codegen/language/async_switch_test.dart |
@@ -0,0 +1,91 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+import "dart:async"; |
+import "package:expect/expect.dart"; |
+import "package:async_helper/async_helper.dart"; |
+ |
+foo1(a) async { |
+ int k = 0; |
+ switch(a) { |
+ case 1: |
+ await 3; |
+ k += 1; |
+ break; |
+ case 2: |
+ k += a; |
+ return k+2; |
+ default: k = 2; /// withDefault: ok |
+ } |
+ return k; |
+} |
+ |
+foo2(a) async { |
+ int k = 0; |
+ switch(await a) { |
+ case 1: |
+ await 3; |
+ k += 1; |
+ break; |
+ case 2: |
+ k += await a; |
+ return k+2; |
+ default: k = 2; /// withDefault: ok |
+ } |
+ return k; |
+} |
+ |
+foo3(a) async { |
+ int k = 0; |
+ switch(a) { |
+ case 1: |
+ k += 1; |
+ break; |
+ case 2: |
+ k += a; |
+ return k+2; |
+ default: k = 2; /// withDefault: ok |
+ } |
+ return k; |
+} |
+ |
+foo4(value) async { |
+ int k = 0; |
+ switch(await value) { |
+ case 1: |
+ k += 1; |
+ break; |
+ case 2: |
+ k += 2; |
+ return 2 + k; |
+ default: k = 2; /// withDefault: ok |
+ } |
+ return k; |
+} |
+ |
+futureOf(a) async => await a; |
+ |
+test() async { |
+ Expect.equals(1, await foo1(1)); |
+ Expect.equals(4, await foo1(2)); |
+ Expect.equals(2, await foo1(3)); /// withDefault: ok |
+ Expect.equals(0, await foo1(3)); /// none: ok |
+ Expect.equals(1, await foo2(futureOf(1))); |
+ Expect.equals(4, await foo2(futureOf(2))); |
+ Expect.equals(2, await foo2(futureOf(3))); /// withDefault: ok |
+ Expect.equals(0, await foo2(futureOf(3))); /// none: ok |
+ Expect.equals(1, await foo3(1)); |
+ Expect.equals(4, await foo3(2)); |
+ Expect.equals(2, await foo3(3)); /// withDefault: ok |
+ Expect.equals(0, await foo3(3)); /// none: ok |
+ Expect.equals(1, await foo4(futureOf(1))); |
+ Expect.equals(4, await foo4(futureOf(2))); |
+ Expect.equals(2, await foo4(futureOf(3))); /// withDefault: ok |
+ Expect.equals(0, await foo4(futureOf(3))); /// none: ok |
+} |
+ |
+void main() { |
+ asyncStart(); |
+ test().then((_) => asyncEnd()); |
+} |