OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 /*@testedFeatures=inference*/ | 5 /*@testedFeatures=inference*/ |
6 library test; | 6 library test; |
7 | 7 |
8 import 'dart:async'; | 8 import 'dart:async'; |
9 | 9 |
10 class MyFuture<T> implements Future<T> { | 10 class MyFuture<T> implements Future<T> { |
11 MyFuture() {} | 11 MyFuture() {} |
12 MyFuture.value(T x) {} | 12 MyFuture.value(T x) {} |
13 dynamic noSuchMethod(invocation); | 13 dynamic noSuchMethod(invocation); |
14 MyFuture<S> then<S>(FutureOr<S> f(T x), {Function onError}) => null; | 14 MyFuture<S> then<S>(FutureOr<S> f(T x), {Function onError}) => null; |
15 } | 15 } |
16 | 16 |
17 void main() { | 17 void main() { |
18 Future f; | 18 Future f; |
19 Future<int> t1 = /*@promotedType=none*/ f. /*@typeArgs=int*/ then( | 19 Future<int> t1 = /*@promotedType=none*/ f |
20 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async => | 20 . /*@typeArgs=int*/ /*@target=Future::then*/ then( |
21 await new MyFuture<int>.value(3)); | 21 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async => |
22 Future<int> t2 = /*@promotedType=none*/ f. /*@typeArgs=int*/ then( | 22 await new MyFuture<int>.value(3)); |
23 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async { | 23 Future<int> t2 = /*@promotedType=none*/ f |
| 24 . /*@typeArgs=int*/ /*@target=Future::then*/ then( |
| 25 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async { |
24 return await new MyFuture<int>.value(3); | 26 return await new MyFuture<int>.value(3); |
25 }); | 27 }); |
26 Future<int> t3 = /*@promotedType=none*/ f. /*@typeArgs=int*/ then( | 28 Future<int> t3 = /*@promotedType=none*/ f |
27 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async => 3); | 29 . /*@typeArgs=int*/ /*@target=Future::then*/ then( |
28 Future<int> t4 = /*@promotedType=none*/ f. /*@typeArgs=int*/ then( | 30 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async => 3); |
29 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async { | 31 Future<int> t4 = /*@promotedType=none*/ f |
| 32 . /*@typeArgs=int*/ /*@target=Future::then*/ then( |
| 33 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async { |
30 return 3; | 34 return 3; |
31 }); | 35 }); |
32 Future<int> t5 = /*@promotedType=none*/ f. /*@typeArgs=int*/ then( | 36 Future<int> t5 = /*@promotedType=none*/ f |
33 /*@returnType=MyFuture<int>*/ (/*@type=dynamic*/ _) => | 37 . /*@typeArgs=int*/ /*@target=Future::then*/ then( |
34 new MyFuture<int>.value(3)); | 38 /*@returnType=MyFuture<int>*/ (/*@type=dynamic*/ _) => |
35 Future<int> t6 = /*@promotedType=none*/ f. /*@typeArgs=int*/ then( | 39 new MyFuture<int>.value(3)); |
36 /*@returnType=MyFuture<int>*/ (/*@type=dynamic*/ _) { | 40 Future<int> t6 = /*@promotedType=none*/ f |
| 41 . /*@typeArgs=int*/ /*@target=Future::then*/ then( |
| 42 /*@returnType=MyFuture<int>*/ (/*@type=dynamic*/ _) { |
37 return new MyFuture<int>.value(3); | 43 return new MyFuture<int>.value(3); |
38 }); | 44 }); |
39 Future<int> t7 = /*@promotedType=none*/ f. /*@typeArgs=int*/ then( | 45 Future<int> t7 = /*@promotedType=none*/ f |
40 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async => | 46 . /*@typeArgs=int*/ /*@target=Future::then*/ then( |
41 new MyFuture<int>.value(3)); | 47 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async => |
42 Future<int> t8 = /*@promotedType=none*/ f. /*@typeArgs=int*/ then( | 48 new MyFuture<int>.value(3)); |
43 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async { | 49 Future<int> t8 = /*@promotedType=none*/ f |
| 50 . /*@typeArgs=int*/ /*@target=Future::then*/ then( |
| 51 /*@returnType=Future<int>*/ (/*@type=dynamic*/ _) async { |
44 return new MyFuture<int>.value(3); | 52 return new MyFuture<int>.value(3); |
45 }); | 53 }); |
46 } | 54 } |
OLD | NEW |