| // 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; |
| |
| import 'dart:async'; |
| |
| abstract class MyStream<T> extends Stream<T> { |
| factory MyStream() => throw ''; |
| } |
| |
| T F<T>() => throw ''; |
| |
| Future f() async { |
| dynamic d; |
| Object o; |
| for (var /*@type=Object?*/ x in /*@typeArgs=Iterable<Object?>*/ F()) {} |
| for (dynamic x in /*@typeArgs=Iterable<dynamic>*/ F()) {} |
| for (Object x in /*@typeArgs=Iterable<Object>*/ F()) {} |
| for (d in /*@typeArgs=Iterable<dynamic>*/ F()) {} |
| for (o in /*@typeArgs=Iterable<Object>*/ F()) {} |
| await for (var /*@type=Object?*/ x in /*@typeArgs=Stream<Object?>*/ F()) {} |
| await for (dynamic x in /*@typeArgs=Stream<dynamic>*/ F()) {} |
| await for (Object x in /*@typeArgs=Stream<Object>*/ F()) {} |
| await for (d in /*@typeArgs=Stream<dynamic>*/ F()) {} |
| await for (o in /*@typeArgs=Stream<Object>*/ F()) {} |
| } |
| |
| Future main() async { |
| for (int x in /*@typeArgs=int*/ [1, 2, 3]) {} |
| for (num x in /*@typeArgs=num*/ [1, 2, 3]) {} |
| for (var /*@type=int*/ x in /*@typeArgs=int*/ [1, 2, 3]) {} |
| await for (int x in new /*@typeArgs=int*/ MyStream()) {} |
| await for (var /*@type=int*/ x in new MyStream<int>()) {} |
| } |