Chromium Code Reviews| Index: pkg/analyzer/test/generated/resolver_test.dart |
| diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart |
| index 6ed5d4cb199d9d63b6540c727561df51c7ecb80a..b8a5d790e19c517a4295e06f66b106febf3acd15 100644 |
| --- a/pkg/analyzer/test/generated/resolver_test.dart |
| +++ b/pkg/analyzer/test/generated/resolver_test.dart |
| @@ -254,6 +254,12 @@ class AnalysisContextFactory { |
| // TODO(brianwilkerson) This is missing the optional parameters. |
| MethodElementImpl listenMethod = |
| ElementFactory.methodElement('listen', returnType, parameterTypes); |
| + (listenMethod.type as FunctionTypeImpl).typeArguments = |
|
Jennifer Messerly
2015/10/29 16:36:41
The mock SDK's element model wasn't fully populate
|
| + streamElement.type.typeArguments; |
| + (parameterTypes[0] as FunctionTypeImpl).typeArguments = |
| + streamElement.type.typeArguments; |
| + (parameterTypes[0].element as FunctionElementImpl) |
| + .enclosingElement = listenMethod; |
| streamElement.methods = <MethodElement>[listenMethod]; |
| asyncUnit.types = <ClassElement>[ |
| @@ -13112,6 +13118,39 @@ f(Stream<String> stream) async { |
| } |
| } |
| + void test_forEach_async_inheritedStream() { |
| + // From https://github.com/dart-lang/sdk/issues/24191, this ensures that |
| + // `await for` works for types where the generic parameter doesn't |
| + // correspond to the type of the Stream's data. |
| + String code = r''' |
| +import 'dart:async'; |
| +abstract class MyCustomStream<T> implements Stream<List<T>> {} |
|
Jennifer Messerly
2015/10/29 16:36:41
thanks to Paul for this test case :)
|
| +f(MyCustomStream<String> stream) async { |
| + await for (var e in stream) { |
| + e; |
| + } |
| +}'''; |
| + Source source = addSource(code); |
| + LibraryElement library = resolve2(source); |
| + assertNoErrors(source); |
| + verify([source]); |
| + CompilationUnit unit = resolveCompilationUnit(source, library); |
| + InterfaceType listOfStringType = |
| + typeProvider.listType.substitute4([typeProvider.stringType]); |
| + // in the declaration |
| + { |
| + SimpleIdentifier identifier = EngineTestCase.findNode( |
| + unit, code, "e in", (node) => node is SimpleIdentifier); |
| + expect(identifier.propagatedType, equals(listOfStringType)); |
| + } |
| + // in the loop body |
| + { |
| + SimpleIdentifier identifier = EngineTestCase.findNode( |
| + unit, code, "e;", (node) => node is SimpleIdentifier); |
| + expect(identifier.propagatedType, equals(listOfStringType)); |
| + } |
| + } |
| + |
| void test_functionExpression_asInvocationArgument() { |
| String code = r''' |
| class MyMap<K, V> { |