| Index: pkg/analyzer/lib/src/fasta/analyzer_diet_listener.dart
|
| diff --git a/pkg/analyzer/lib/src/fasta/analyzer_diet_listener.dart b/pkg/analyzer/lib/src/fasta/analyzer_diet_listener.dart
|
| index 33c107f1110b149a7359f82f17af8a85fcf49354..f7ecea4236ee0ebb412e5ea5533ef57690afad44 100644
|
| --- a/pkg/analyzer/lib/src/fasta/analyzer_diet_listener.dart
|
| +++ b/pkg/analyzer/lib/src/fasta/analyzer_diet_listener.dart
|
| @@ -47,13 +47,9 @@ import 'package:kernel/core_types.dart' show CoreTypes;
|
|
|
| import 'package:kernel/kernel.dart' as kernel show DartType;
|
|
|
| -import 'element_store.dart' show ElementStore;
|
| -
|
| import 'ast_builder.dart' show AstBuilder;
|
|
|
| class AnalyzerDietListener extends DietListener {
|
| - final ElementStore elementStore;
|
| -
|
| /// The body builder for the method currently being compiled, or `null` if no
|
| /// method is currently being compiled.
|
| ///
|
| @@ -69,36 +65,8 @@ class AnalyzerDietListener extends DietListener {
|
| /// These are used strictly for validation purposes.
|
| List<int> _typeOffsets;
|
|
|
| - /// Indicates whether a kernel representation of the code should be generated.
|
| - ///
|
| - /// When `false`, an analyzer AST is generated, and type inference is copied
|
| - /// over to it, but the result is not converted to a kernel representation.
|
| - ///
|
| - /// TODO(paulberry): remove this once "kompile" functionality is no longer
|
| - /// needed.
|
| - final bool generateKernel;
|
| -
|
| - /// Indicates whether a resolved AST should be generated.
|
| - ///
|
| - /// When `false`, an analyzer AST is generated, but none of the types or
|
| - /// elements pointed to by the AST are guaranteed to be correct.
|
| - ///
|
| - /// This is needed in order to support the old "kompile" use case, since the
|
| - /// tests of that functionality were based on the behavior prior to
|
| - /// integrating resolution and type inference with analyzer.
|
| - ///
|
| - /// TODO(paulberry): remove this once "kompile" functionality is no longer
|
| - /// needed.
|
| - final bool doResolution;
|
| -
|
| - AnalyzerDietListener(
|
| - SourceLibraryBuilder library,
|
| - this.elementStore,
|
| - ClassHierarchy hierarchy,
|
| - CoreTypes coreTypes,
|
| - TypeInferenceEngine typeInferenceEngine,
|
| - this.generateKernel,
|
| - this.doResolution)
|
| + AnalyzerDietListener(SourceLibraryBuilder library, ClassHierarchy hierarchy,
|
| + CoreTypes coreTypes, TypeInferenceEngine typeInferenceEngine)
|
| : super(library, hierarchy, coreTypes, typeInferenceEngine);
|
|
|
| @override
|
| @@ -135,8 +103,7 @@ class AnalyzerDietListener extends DietListener {
|
| StackListener createListener(
|
| ModifierBuilder builder, Scope memberScope, bool isInstanceMember,
|
| [Scope formalParameterScope, TypeInferenceListener listener]) {
|
| - return new AstBuilder(null, library, builder, elementStore, memberScope,
|
| - false, generateKernel, uri);
|
| + return new AstBuilder(null, library, builder, memberScope, false, uri);
|
| }
|
|
|
| @override
|
| @@ -154,36 +121,36 @@ class AnalyzerDietListener extends DietListener {
|
| dynamic body) {
|
| // TODO(paulberry): this duplicates a lot of code from
|
| // DietListener.parseFunctionBody.
|
| - if (doResolution) {
|
| - // At this point the analyzer AST has been built, but it doesn't contain
|
| - // resolution data or inferred types. Run the body builder and gather
|
| - // this information.
|
| - Parser parser = new Parser(_bodyBuilder);
|
| - List bodyBuilderMetadataConstants;
|
| - if (metadata != null) {
|
| - parser.parseMetadataStar(metadata);
|
| - bodyBuilderMetadataConstants = _bodyBuilder.pop();
|
| - }
|
| - token = parser.parseFormalParametersOpt(token, kind);
|
| - var bodyBuilderFormals = _bodyBuilder.pop();
|
| - _bodyBuilder.checkEmpty(token.charOffset);
|
| - token = parser.parseInitializersOpt(token);
|
| - bool isExpression = false;
|
| - bool allowAbstract = asyncModifier == AsyncMarker.Sync;
|
| - parser.parseFunctionBody(token, isExpression, allowAbstract);
|
| - var bodyBuilderBody = _bodyBuilder.pop();
|
| - _bodyBuilder.checkEmpty(token.charOffset);
|
| - _bodyBuilder.finishFunction(bodyBuilderMetadataConstants,
|
| - bodyBuilderFormals, asyncModifier, bodyBuilderBody);
|
| -
|
| - // Now apply the resolution data and inferred types to the analyzer AST.
|
| - var translatedTypes = _translateTypes(_kernelTypes);
|
| - var resolutionApplier =
|
| - new ValidatingResolutionApplier(translatedTypes, _typeOffsets);
|
| - ast.AstNode bodyAsAstNode = body;
|
| - bodyAsAstNode.accept(resolutionApplier);
|
| - resolutionApplier.checkDone();
|
| +
|
| + // At this point the analyzer AST has been built, but it doesn't contain
|
| + // resolution data or inferred types. Run the body builder and gather
|
| + // this information.
|
| + Parser parser = new Parser(_bodyBuilder);
|
| + List bodyBuilderMetadataConstants;
|
| + if (metadata != null) {
|
| + parser.parseMetadataStar(metadata);
|
| + bodyBuilderMetadataConstants = _bodyBuilder.pop();
|
| }
|
| + token = parser.parseFormalParametersOpt(token, kind);
|
| + var bodyBuilderFormals = _bodyBuilder.pop();
|
| + _bodyBuilder.checkEmpty(token.charOffset);
|
| + token = parser.parseInitializersOpt(token);
|
| + bool isExpression = false;
|
| + bool allowAbstract = asyncModifier == AsyncMarker.Sync;
|
| + parser.parseFunctionBody(token, isExpression, allowAbstract);
|
| + var bodyBuilderBody = _bodyBuilder.pop();
|
| + _bodyBuilder.checkEmpty(token.charOffset);
|
| + _bodyBuilder.finishFunction(bodyBuilderMetadataConstants,
|
| + bodyBuilderFormals, asyncModifier, bodyBuilderBody);
|
| +
|
| + // Now apply the resolution data and inferred types to the analyzer AST.
|
| + var translatedTypes = _translateTypes(_kernelTypes);
|
| + var resolutionApplier =
|
| + new ValidatingResolutionApplier(translatedTypes, _typeOffsets);
|
| + ast.AstNode bodyAsAstNode = body;
|
| + bodyAsAstNode.accept(resolutionApplier);
|
| + resolutionApplier.checkDone();
|
| +
|
| listener.finishFunction(metadataConstants, formals, asyncModifier, body);
|
| }
|
|
|
|
|