| 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) {
|
|
|