| Index: pkg/compiler/lib/src/resolution/members.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
|
| index 460b34ef6da702008b527bc72c89685b85f82ab9..84260216ab087dab211310d3aa68fabd2a6659da 100644
|
| --- a/pkg/compiler/lib/src/resolution/members.dart
|
| +++ b/pkg/compiler/lib/src/resolution/members.dart
|
| @@ -3687,8 +3687,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
|
|
| ResolutionResult visitYield(Yield node) {
|
| - coreClasses.streamClass.ensureResolved(resolution);
|
| - coreClasses.iterableClass.ensureResolved(resolution);
|
| + if (!currentAsyncMarker.isYielding) {
|
| + reporter.reportErrorMessage(node, MessageKind.INVALID_YIELD);
|
| + }
|
| + if (currentAsyncMarker.isAsync) {
|
| + coreClasses.streamClass.ensureResolved(resolution);
|
| + } else {
|
| + coreClasses.iterableClass.ensureResolved(resolution);
|
| + }
|
| visit(node.expression);
|
| return const NoneResult();
|
| }
|
| @@ -3825,6 +3831,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
|
|
| ResolutionResult visitAwait(Await node) {
|
| + if (!currentAsyncMarker.isAsync) {
|
| + reporter.reportErrorMessage(node, MessageKind.INVALID_AWAIT);
|
| + }
|
| coreClasses.futureClass.ensureResolved(resolution);
|
| visit(node.expression);
|
| return const NoneResult();
|
| @@ -4350,6 +4359,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
|
|
| ResolutionResult visitAsyncForIn(AsyncForIn node) {
|
| + if (!currentAsyncMarker.isAsync) {
|
| + reporter.reportErrorMessage(
|
| + node.awaitToken, MessageKind.INVALID_AWAIT_FOR_IN);
|
| + }
|
| registry.registerFeature(Feature.ASYNC_FOR_IN);
|
| registry.registerDynamicUse(
|
| new DynamicUse(Selectors.current, null));
|
|
|