| 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 => /*@typeArgs=U, T*/ new Pair(u, t); | 15 Pair<U, T> get reversed => new /*@typeArgs=U, T*/ Pair(u, t); |
| 16 } | 16 } |
| 17 | 17 |
| 18 main() { | 18 main() { |
| 19 final /*@type=Pair<Clonable<dynamic>, Clonable<dynamic>>*/ x = /*@typeArgs=Clo
nable<dynamic>, Clonable<dynamic>*/ new /*error:COULD_NOT_INFER,error:COULD_NOT_
INFER*/ Pair | 19 final /*@type=Pair<Clonable<dynamic>, Clonable<dynamic>>*/ x = |
| 20 ._(); | 20 new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<d
ynamic>, Clonable<dynamic>*/ Pair |
| 21 ._(); |
| 21 } | 22 } |
| OLD | NEW |