| Index: pkg/compiler/lib/src/compiler.dart
|
| diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
|
| index a99134f8ba338f2b050ebcd486949a9b934f1a00..225aa1f925214b0451dd2962b0c3fa8b1dd804d4 100644
|
| --- a/pkg/compiler/lib/src/compiler.dart
|
| +++ b/pkg/compiler/lib/src/compiler.dart
|
| @@ -176,6 +176,11 @@ class CodegenRegistry extends Registry {
|
| void registerInstantiation(InterfaceType type) {
|
| world.registerInstantiatedType(type, this);
|
| }
|
| +
|
| + void registerAsyncMarker(FunctionElement element) {
|
| + backend.registerAsyncMarker(element, world, this);
|
| + }
|
| +
|
| }
|
|
|
| /// [WorkItem] used exclusively by the [CodegenEnqueuer].
|
| @@ -229,6 +234,8 @@ abstract class Registry {
|
| void registerInstantiation(InterfaceType type);
|
|
|
| void registerGetOfStaticFunction(FunctionElement element);
|
| +
|
| + void registerAsyncMarker(FunctionElement element);
|
| }
|
|
|
| abstract class Backend {
|
| @@ -516,6 +523,10 @@ abstract class Backend {
|
| void forgetElement(Element element) {}
|
|
|
| void registerMainHasArguments(Enqueuer enqueuer) {}
|
| +
|
| + void registerAsyncMarker(FunctionElement element,
|
| + Enqueuer enqueuer,
|
| + Registry registry) {}
|
| }
|
|
|
| /// Backend callbacks function specific to the resolution phase.
|
| @@ -740,12 +751,6 @@ abstract class Compiler implements DiagnosticListener {
|
|
|
| final bool suppressWarnings;
|
|
|
| - /// `true` if async/await features are supported.
|
| - final bool enableAsyncAwait;
|
| -
|
| - /// `true` if the compiler uses the [JavaScriptBackend].
|
| - final bool emitJavaScript;
|
| -
|
| /// If `true`, some values are cached for reuse in incremental compilation.
|
| /// Incremental compilation is basically calling [run] more than once.
|
| final bool hasIncrementalSupport;
|
| @@ -768,6 +773,7 @@ abstract class Compiler implements DiagnosticListener {
|
| CompilerTask measuredTask;
|
| Element _currentElement;
|
| LibraryElement coreLibrary;
|
| + LibraryElement asyncLibrary;
|
|
|
| LibraryElement mainApp;
|
| FunctionElement mainFunction;
|
| @@ -1007,14 +1013,11 @@ abstract class Compiler implements DiagnosticListener {
|
| this.suppressWarnings: false,
|
| bool hasIncrementalSupport: false,
|
| this.enableExperimentalMirrors: false,
|
| - bool enableAsyncAwait: false,
|
| this.allowNativeExtensions: false,
|
| this.generateCodeWithCompileTimeErrors: false,
|
| api.CompilerOutputProvider outputProvider,
|
| List<String> strips: const []})
|
| - : this.emitJavaScript = emitJavaScript,
|
| - this.enableAsyncAwait = enableAsyncAwait || !emitJavaScript,
|
| - this.disableTypeInferenceFlag =
|
| + : this.disableTypeInferenceFlag =
|
| disableTypeInferenceFlag || !emitJavaScript,
|
| this.analyzeOnly =
|
| analyzeOnly || analyzeSignaturesOnly || analyzeAllFlag,
|
| @@ -1242,6 +1245,7 @@ abstract class Compiler implements DiagnosticListener {
|
| mirrorSystemClass = findRequiredElement(library, 'MirrorSystem');
|
| mirrorsUsedClass = findRequiredElement(library, 'MirrorsUsed');
|
| } else if (uri == DART_ASYNC) {
|
| + asyncLibrary = library;
|
| deferredLibraryClass = findRequiredElement(library, 'DeferredLibrary');
|
| _coreTypes.futureClass = findRequiredElement(library, 'Future');
|
| _coreTypes.streamClass = findRequiredElement(library, 'Stream');
|
|
|