blob: 2f0d7f68c313d7decb464c102ef26441e6a7b8ec [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>()) {}
}