| // 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; |
| |
| typedef V F<U, V>(U u); |
| |
| class Foo<T> { |
| Bar<T> get v1 => new /*@ typeArgs=Foo::T* */ Bar(); |
| Bar<List<T>> get v2 => new /*@ typeArgs=List<Foo::T*>* */ Bar(); |
| Bar<F<T, T>> get v3 => new /*@ typeArgs=(Foo::T*) ->* Foo::T* */ Bar(); |
| Bar<F<F<T, T>, T>> get v4 => |
| new /*@ typeArgs=((Foo::T*) ->* Foo::T*) ->* Foo::T* */ Bar(); |
| List<T> get v5 => /*@ typeArgs=Foo::T* */ []; |
| List<F<T, T>> get v6 => /*@ typeArgs=(Foo::T*) ->* Foo::T* */ []; |
| Map<T, T> get v7 => /*@ typeArgs=Foo::T*, Foo::T* */ {}; |
| Map<F<T, T>, T> get v8 => /*@ typeArgs=(Foo::T*) ->* Foo::T*, Foo::T* */ {}; |
| Map<T, F<T, T>> get v9 => /*@ typeArgs=Foo::T*, (Foo::T*) ->* Foo::T* */ {}; |
| } |
| |
| class Bar<T> { |
| const Bar(); |
| } |
| |
| main() {} |