| // 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 Resource {} |
| |
| class Folder extends Resource {} |
| |
| Resource getResource(String str) => null; |
| |
| class Foo<T> { |
| Foo(T t); |
| } |
| |
| main() { |
| // List inside map |
| var /*@ type=Map<String*, List<Folder*>*>* */ map = <String, List<Folder>>{ |
| 'pkgA': /*@ typeArgs=Folder* */ [ |
| /*info:DOWN_CAST_IMPLICIT*/ getResource('/pkgA/lib/') |
| ], |
| 'pkgB': /*@ typeArgs=Folder* */ [ |
| /*info:DOWN_CAST_IMPLICIT*/ getResource('/pkgB/lib/') |
| ] |
| }; |
| // Also try map inside list |
| var /*@ type=List<Map<String*, Folder*>*>* */ list = <Map<String, Folder>>[ |
| /*@ typeArgs=String*, Folder* */ { |
| 'pkgA': /*info:DOWN_CAST_IMPLICIT*/ getResource('/pkgA/lib/') |
| }, |
| /*@ typeArgs=String*, Folder* */ { |
| 'pkgB': /*info:DOWN_CAST_IMPLICIT*/ getResource('/pkgB/lib/') |
| }, |
| ]; |
| // Instance creation too |
| var /*@ type=Foo<List<Folder*>*>* */ foo = |
| new Foo<List<Folder>>(/*@ typeArgs=Folder* */ [ |
| /*info:DOWN_CAST_IMPLICIT*/ getResource('/pkgA/lib/') |
| ]); |
| } |