| // Copyright (c) 2017, 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. |
| |
| /*@testedFeatures=inference*/ |
| library test; |
| |
| class C<T> { |
| T t; |
| C(this.t); |
| } |
| |
| test() { |
| var /*@type=C<int>*/ x = new /*@typeArgs=int*/ C(42); |
| |
| num y; |
| C<int> c_int = new /*@typeArgs=int*/ C( |
| /*info:DOWN_CAST_IMPLICIT*/ y); |
| |
| // These hints are not reported because we resolve with a null error listener. |
| C<num> c_num = new /*@typeArgs=num*/ C(123); |
| C<num> c_num2 = (new /*@typeArgs=num*/ C(456)).. /*@target=C::t*/ t = 1.0; |
| |
| // Down't infer from explicit dynamic. |
| var /*@type=C<dynamic>*/ c_dynamic = new C<dynamic>(42); |
| x. /*@target=C::t*/ t = /*error:INVALID_ASSIGNMENT*/ 'hello'; |
| } |
| |
| main() {} |