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 class Clonable<T> {} | 8 class Clonable<T> {} |
9 | 9 |
10 class Pair<T extends Clonable<T>, U extends Clonable<U>> { | 10 class Pair<T extends Clonable<T>, U extends Clonable<U>> { |
11 T t; | 11 T t; |
12 U u; | 12 U u; |
13 Pair(this.t, this.u); | 13 Pair(this.t, this.u); |
14 Pair._(); | 14 Pair._(); |
15 Pair<U, T> get reversed => new /*@typeArgs=Pair::U, Pair::T*/ Pair(u, t); | 15 Pair<U, T> get reversed => new /*@typeArgs=Pair::U, Pair::T*/ Pair( |
| 16 /*@target=Pair::u*/ u, |
| 17 /*@target=Pair::t*/ t); |
16 } | 18 } |
17 | 19 |
18 main() { | 20 main() { |
19 final /*@type=Pair<Clonable<dynamic>, Clonable<dynamic>>*/ x = | 21 final /*@type=Pair<Clonable<dynamic>, Clonable<dynamic>>*/ x = |
20 new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<d
ynamic>, Clonable<dynamic>*/ Pair | 22 new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<d
ynamic>, Clonable<dynamic>*/ Pair |
21 ._(); | 23 ._(); |
22 } | 24 } |
OLD | NEW |