| 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 |