Index: test/codegen/language/async_test.dart |
diff --git a/test/codegen/language/async_test.dart b/test/codegen/language/async_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..444f0a7752e1c7ab791bd57b4bc86076145d8274 |
--- /dev/null |
+++ b/test/codegen/language/async_test.dart |
@@ -0,0 +1,105 @@ |
+// Copyright (c) 2014, 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 'package:expect/expect.dart'; |
+ |
+import 'dart:async'; |
+ |
+topLevelFunction() async { } |
+ |
+Future<int> topLevelWithParameter(int a) async { |
+ return 7 + a; |
+} |
+ |
+topLevelWithParameterWrongType(int a) async { |
+ return 7 + a; |
+} |
+ |
+var what = 'async getter'; |
+Future<String> get topLevelGetter async { |
+ return 'I want to be an ${what}'; |
+} |
+ |
+class A { |
+ static int staticVar = 1; |
+ |
+ static staticMethod(int param) async => staticVar + param; |
+ static get staticGetter async => staticVar + 3; |
+ |
+ int _x; |
+ A(this._x); |
+ |
+ operator+(A other) async { |
+ return new A(_x + other._x); |
+ } |
+ |
+ get value => _x; |
+} |
+ |
+class B { |
+ final _y; |
+ const B._internal(this._y); |
+ |
+ B() : _y = null; |
+} |
+ |
+ |
+main() { |
+ var asyncReturn; |
+ |
+ asyncReturn = topLevelFunction(); |
+ Expect.isTrue(asyncReturn is Future); |
+ |
+ asyncReturn = topLevelWithParameter(4); |
+ Expect.isTrue(asyncReturn is Future); |
+ asyncReturn.then((int result) => Expect.equals(result, 11)); |
+ |
+ asyncReturn = topLevelGetter; |
+ Expect.isTrue(asyncReturn is Future); |
+ asyncReturn.then((String result) => |
+ Expect.stringEquals(result, 'I want to be an async getter')); |
+ |
+ asyncReturn = A.staticMethod(2); |
+ Expect.isTrue(asyncReturn is Future); |
+ asyncReturn.then((int result) => Expect.equals(result, 3)); |
+ |
+ asyncReturn = A.staticGetter; |
+ Expect.isTrue(asyncReturn is Future); |
+ asyncReturn.then((int result) => Expect.equals(result, 4)); |
+ |
+ A a = new A(13); |
+ |
+ var b = new A(9); |
+ asyncReturn = a + b; |
+ Expect.isTrue(asyncReturn is Future); |
+ asyncReturn.then((A result) => Expect.equals(result.value, 22)); |
+ |
+ var foo = 17; |
+ bar(int p1, p2) async { |
+ var z = 8; |
+ return p2 + z + foo; |
+ } |
+ asyncReturn = bar(1,2); |
+ Expect.isTrue(asyncReturn is Future); |
+ asyncReturn.then((int result) => Expect.equals(result, 27)); |
+ |
+ var moreNesting = (int shadowP1, String p2, num p3) { |
+ var z = 3; |
+ aa(int shadowP1) async { |
+ return foo + z + p3 + shadowP1; |
+ } |
+ return aa(6); |
+ }; |
+ asyncReturn = moreNesting(1, "ignore", 2); |
+ Expect.isTrue(asyncReturn is Future); |
+ asyncReturn.then((int result) => Expect.equals(result, 28)); |
+ |
+ var checkAsync = (var someFunc) { |
+ var toTest = someFunc(); |
+ Expect.isTrue(toTest is Future); |
+ toTest.then((int result) => Expect.equals(result, 4)); |
+ }; |
+ checkAsync(() async => 4); |
+} |