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 673fa5ffbd8e8c0a030e4e6eda3987a80c992829..610f610d392e7774c112cb587a7bbe10e26617da 100644 |
--- a/pkg/compiler/lib/src/resolution/members.dart |
+++ b/pkg/compiler/lib/src/resolution/members.dart |
@@ -492,23 +492,17 @@ class ResolverTask extends CompilerTask { |
} |
static void processAsyncMarker(Compiler compiler, |
- BaseFunctionElementX element) { |
+ BaseFunctionElementX element, |
+ Registry registry) { |
FunctionExpression functionExpression = element.node; |
AsyncModifier asyncModifier = functionExpression.asyncModifier; |
if (asyncModifier != null) { |
- if (!compiler.enableAsyncAwait) { |
- compiler.reportError(asyncModifier, |
- MessageKind.EXPERIMENTAL_ASYNC_AWAIT, |
- {'modifier': element.asyncMarker}); |
- } else if (!compiler.analyzeOnly) { |
- compiler.reportError(asyncModifier, |
- MessageKind.EXPERIMENTAL_ASYNC_AWAIT, |
- {'modifier': element.asyncMarker}); |
- } |
if (asyncModifier.isAsynchronous) { |
element.asyncMarker = asyncModifier.isYielding |
? AsyncMarker.ASYNC_STAR : AsyncMarker.ASYNC; |
+ Backend backend = compiler.backend; |
+ |
} else { |
element.asyncMarker = AsyncMarker.SYNC_STAR; |
} |
@@ -526,6 +520,7 @@ class ResolverTask extends CompilerTask { |
MessageKind.YIELDING_MODIFIER_ON_ARROW_BODY, |
{'modifier': element.asyncMarker}); |
} |
+ registry.registerAsyncMarker(element); |
} |
} |
@@ -552,6 +547,7 @@ class ResolverTask extends CompilerTask { |
ResolutionRegistry registry = visitor.registry; |
registry.defineFunction(tree, element); |
visitor.setupFunction(tree, element); |
+ processAsyncMarker(compiler, element, registry); |
if (element.isGenerativeConstructor) { |
// Even if there is no initializer list we still have to do the |
@@ -626,7 +622,6 @@ class ResolverTask extends CompilerTask { |
} else { |
element.parseNode(compiler); |
element.computeType(compiler); |
- processAsyncMarker(compiler, element); |
FunctionElementX implementation = element; |
if (element.isExternal) { |
implementation = compiler.backend.resolveExternalFunction(element); |
@@ -2477,7 +2472,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
function.functionSignatureCache = |
SignatureResolver.analyze(compiler, node.parameters, node.returnType, |
function, registry, createRealParameters: true); |
- ResolverTask.processAsyncMarker(compiler, function); |
+ ResolverTask.processAsyncMarker(compiler, function, registry); |
checkLocalDefinitionName(node, function); |
registry.defineFunction(node, function); |
if (doAddToScope) { |