| // 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. |
| // @dart=2.9 |
| /*@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; |
| |
| // Don'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() {} |