blob: 605c8f09b84987a3556f74f9717549b849853e2f [file] [log] [blame]
// 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() => null;
}
T F<T>() => null;
Future f() async {
dynamic d;
Object o;
for (var /*@type=dynamic*/ x in /*@typeArgs=Iterable<dynamic>*/ 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=dynamic*/ x in /*@typeArgs=Stream<dynamic>*/ 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>()) {}
}