| // Copyright (c) 2018, 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. |
| // @dart=2.9 |
| /*@testedFeatures=inference*/ |
| library test; |
| |
| import 'dart:async'; |
| |
| abstract class MyFuture implements Future<int> {} |
| |
| void test() async { |
| int x0; |
| Future<int> x1; |
| Future<Future<int>> x2; |
| Future<FutureOr<int>> x3; |
| Future<MyFuture> x4; |
| FutureOr<int> x5; |
| FutureOr<Future<int>> x6; |
| FutureOr<FutureOr<int>> x7; |
| FutureOr<MyFuture> x8; |
| MyFuture x9; |
| |
| /*@ returnType=Future<int*>* */ test0() async => x0; |
| /*@ returnType=Future<int*>* */ test1() async => x1; |
| /*@ returnType=Future<Future<int*>*>* */ test2() async => x2; |
| /*@ returnType=Future<FutureOr<int*>*>* */ test3() async => x3; |
| /*@ returnType=Future<MyFuture*>* */ test4() async => x4; |
| /*@ returnType=Future<int*>* */ test5() async => x5; |
| /*@ returnType=Future<Future<int*>*>* */ test6() async => x6; |
| /*@ returnType=Future<FutureOr<int*>*>* */ test7() async => x7; |
| /*@ returnType=Future<MyFuture*>* */ test8() async => x8; |
| /*@ returnType=Future<int*>* */ test9() async => x9; |
| |
| var /*@ type=int* */ y0 = await x0; |
| var /*@ type=int* */ y1 = await x1; |
| var /*@ type=Future<int*>* */ y2 = await x2; |
| var /*@ type=FutureOr<int*>* */ y3 = await x3; |
| var /*@ type=MyFuture* */ y4 = await x4; |
| var /*@ type=int* */ y5 = await x5; |
| var /*@ type=Future<int*>* */ y6 = await x6; |
| var /*@ type=FutureOr<int*>* */ y7 = await x7; |
| var /*@ type=MyFuture* */ y8 = await x8; |
| var /*@ type=int* */ y9 = await x9; |
| } |
| |
| main() {} |