Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Unified Diff: pkg/compiler/lib/src/resolution/members.dart

Issue 1918903004: Make support for async/await syntax optional in the frontend. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 e349185be07df29c49c17e18987f09b44d2d8520..c8d92934b75dde2fcaa67641173300f0e31447d4 100644
--- a/pkg/compiler/lib/src/resolution/members.dart
+++ b/pkg/compiler/lib/src/resolution/members.dart
@@ -3536,13 +3536,18 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
}
ResolutionResult visitYield(Yield node) {
- if (!currentAsyncMarker.isYielding) {
- reporter.reportErrorMessage(node, MessageKind.INVALID_YIELD);
- }
- if (currentAsyncMarker.isAsync) {
- coreClasses.streamClass.ensureResolved(resolution);
+ if (!compiler.backend.supportsAsyncAwait) {
+ reporter.reportErrorMessage(node.yieldToken,
+ MessageKind.ASYNC_AWAIT_NOT_SUPPORTED);
} else {
- 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();
@@ -3672,10 +3677,15 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
}
ResolutionResult visitAwait(Await node) {
- if (!currentAsyncMarker.isAsync) {
- reporter.reportErrorMessage(node, MessageKind.INVALID_AWAIT);
+ if (!compiler.backend.supportsAsyncAwait) {
+ reporter.reportErrorMessage(node.awaitToken,
+ MessageKind.ASYNC_AWAIT_NOT_SUPPORTED);
+ } else {
+ if (!currentAsyncMarker.isAsync) {
+ reporter.reportErrorMessage(node, MessageKind.INVALID_AWAIT);
+ }
+ coreClasses.futureClass.ensureResolved(resolution);
}
- coreClasses.futureClass.ensureResolved(resolution);
visit(node.expression);
return const NoneResult();
}
@@ -4194,14 +4204,20 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
}
ResolutionResult visitAsyncForIn(AsyncForIn node) {
- if (!currentAsyncMarker.isAsync) {
- reporter.reportErrorMessage(
- node.awaitToken, MessageKind.INVALID_AWAIT_FOR_IN);
+ if (!compiler.backend.supportsAsyncAwait) {
+ reporter.reportErrorMessage(node.awaitToken,
+ MessageKind.ASYNC_AWAIT_NOT_SUPPORTED);
+ } else {
+ 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));
+ registry.registerDynamicUse(
+ new DynamicUse(Selectors.moveNext, null));
}
- registry.registerFeature(Feature.ASYNC_FOR_IN);
- registry.registerDynamicUse(new DynamicUse(Selectors.current, null));
- registry.registerDynamicUse(new DynamicUse(Selectors.moveNext, null));
-
visit(node.expression);
Scope blockScope = new BlockScope(scope);

Powered by Google App Engine
This is Rietveld 408576698