Chromium Code Reviews| Index: pkg/analyzer/lib/src/task/dart.dart |
| diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart |
| index b12498636dddb2338e4740a25a91526256f8b9a0..7d53e095d20250ee72a9a0503b4dab94970b4291 100644 |
| --- a/pkg/analyzer/lib/src/task/dart.dart |
| +++ b/pkg/analyzer/lib/src/task/dart.dart |
| @@ -252,6 +252,17 @@ final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT5 = |
| cachingPolicy: ELEMENT_CACHING_POLICY); |
| /** |
| + * The partial [LibraryElement] associated with a library. |
| + * |
| + * [LIBRARY_ELEMENT5] plus resolved elements and types for all expressions. |
| + * |
| + * The result is only available for [Source]s representing a library. |
| + */ |
| +final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT6 = |
| + new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT6', null, |
| + cachingPolicy: ELEMENT_CACHING_POLICY); |
| + |
| +/** |
| * The flag specifying whether all analysis errors are computed in a specific |
| * library. |
| * |
| @@ -1217,8 +1228,8 @@ class BuildFunctionTypeAliasesTask extends SourceBasedAnalysisTask { |
| } |
| /** |
| - * This task finishes building [LIBRARY_ELEMENT] by forcing building |
| - * constructors for classes in the defining and part units of a library. |
| + * This task builds [LIBRARY_ELEMENT6] by forcing building constructors for |
| + * all the classes of the defining and part units of a library. |
| */ |
| class BuildLibraryConstructorsTask extends SourceBasedAnalysisTask { |
| /** |
| @@ -1231,7 +1242,7 @@ class BuildLibraryConstructorsTask extends SourceBasedAnalysisTask { |
| */ |
| static final TaskDescriptor DESCRIPTOR = new TaskDescriptor( |
| 'BuildLibraryConstructorsTask', createTask, buildInputs, |
| - <ResultDescriptor>[LIBRARY_ELEMENT]); |
| + <ResultDescriptor>[LIBRARY_ELEMENT6]); |
| BuildLibraryConstructorsTask( |
| InternalAnalysisContext context, AnalysisTarget target) |
| @@ -1243,7 +1254,7 @@ class BuildLibraryConstructorsTask extends SourceBasedAnalysisTask { |
| @override |
| void internalPerform() { |
| LibraryElement library = getRequiredInput(LIBRARY_INPUT); |
| - outputs[LIBRARY_ELEMENT] = library; |
| + outputs[LIBRARY_ELEMENT6] = library; |
| } |
| /** |
| @@ -1802,7 +1813,7 @@ class ComputeConstantDependenciesTask extends ConstantEvaluationAnalysisTask { |
| } |
| /** |
| - * Create a [ResolveReferencesTask] based on the given [target] in |
| + * Create a [ResolveUnitReferencesTask] based on the given [target] in |
| * the given [context]. |
| */ |
| static ComputeConstantDependenciesTask createTask( |
| @@ -2114,6 +2125,7 @@ class EvaluateUnitConstantsTask extends SourceBasedAnalysisTask { |
| */ |
| static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
| return <String, TaskInput>{ |
| + 'libraryElement': LIBRARY_ELEMENT.of(target.library), |
|
Brian Wilkerson
2015/06/11 13:52:54
In a future CL, we should probably add comments in
|
| UNIT_INPUT: RESOLVED_UNIT6.of(target), |
| CONSTANT_VALUES: |
| COMPILATION_UNIT_CONSTANTS.of(target).toListOf(CONSTANT_VALUE) |
| @@ -2509,6 +2521,8 @@ class LibraryErrorsReadyTask extends SourceBasedAnalysisTask { |
| */ |
| static Map<String, TaskInput> buildInputs(Source library) { |
| return <String, TaskInput>{ |
| + 'allLibraryElements': |
| + IMPORT_EXPORT_SOURCE_CLOSURE.of(library).toListOf(LIBRARY_ELEMENT), |
| 'allErrors': UNITS.of(library).toListOf(DART_ERRORS) |
| }; |
| } |
| @@ -2859,6 +2873,62 @@ class PublicNamespaceBuilder { |
| } |
| /** |
| + * A task that finishes resolution by requesting [RESOLVED_UNIT6] for every |
| + * unit in the libraries closure and produces [LIBRARY_ELEMENT]. |
| + */ |
| +class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask { |
| + /** |
| + * The name of the [LIBRARY_ELEMENT6] input. |
| + */ |
| + static const String LIBRARY_INPUT = 'LIBRARY_INPUT'; |
| + |
| + /** |
| + * The task descriptor describing this kind of task. |
| + */ |
| + static final TaskDescriptor DESCRIPTOR = new TaskDescriptor( |
| + 'ResolveLibraryReferencesTask', createTask, buildInputs, |
| + <ResultDescriptor>[LIBRARY_ELEMENT]); |
| + |
| + ResolveLibraryReferencesTask( |
| + InternalAnalysisContext context, AnalysisTarget target) |
| + : super(context, target); |
| + |
| + @override |
| + TaskDescriptor get descriptor => DESCRIPTOR; |
| + |
| + @override |
| + void internalPerform() { |
| + LibraryElement library = getRequiredInput(LIBRARY_INPUT); |
| + outputs[LIBRARY_ELEMENT] = library; |
| + } |
| + |
| + /** |
| + * Return a map from the names of the inputs of this kind of task to the task |
| + * input descriptors describing those inputs for a task with the |
| + * given [target]. |
| + */ |
| + static Map<String, TaskInput> buildInputs(Source libSource) { |
| + return <String, TaskInput>{ |
| + LIBRARY_INPUT: LIBRARY_ELEMENT6.of(libSource), |
| + 'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE |
| + .of(libSource) |
| + .toMapOf(UNITS) |
| + .toFlattenList((Source library, Source unit) => |
| + RESOLVED_UNIT6.of(new LibrarySpecificUnit(library, unit))), |
| + }; |
| + } |
| + |
| + /** |
| + * Create a [ResolveLibraryReferencesTask] based on the given [target] in |
| + * the given [context]. |
| + */ |
| + static ResolveLibraryReferencesTask createTask( |
| + AnalysisContext context, AnalysisTarget target) { |
| + return new ResolveLibraryReferencesTask(context, target); |
| + } |
| +} |
| + |
| +/** |
| * An artifitial task that does nothing except to force type names resolution |
| * for the defining and part units of a library. |
| */ |
| @@ -2917,9 +2987,9 @@ class ResolveLibraryTypeNamesTask extends SourceBasedAnalysisTask { |
| /** |
| * A task that builds [RESOLVED_UNIT6] for a unit. |
| */ |
| -class ResolveReferencesTask extends SourceBasedAnalysisTask { |
| +class ResolveUnitReferencesTask extends SourceBasedAnalysisTask { |
| /** |
| - * The name of the [LIBRARY_ELEMENT] input. |
| + * The name of the [LIBRARY_ELEMENT6] input. |
| */ |
| static const String LIBRARY_INPUT = 'LIBRARY_INPUT'; |
| @@ -2937,12 +3007,13 @@ class ResolveReferencesTask extends SourceBasedAnalysisTask { |
| * The task descriptor describing this kind of task. |
| */ |
| static final TaskDescriptor DESCRIPTOR = new TaskDescriptor( |
| - 'ResolveReferencesTask', createTask, buildInputs, <ResultDescriptor>[ |
| + 'ResolveUnitReferencesTask', createTask, buildInputs, <ResultDescriptor>[ |
| RESOLVE_REFERENCES_ERRORS, |
| RESOLVED_UNIT6 |
| ]); |
| - ResolveReferencesTask(InternalAnalysisContext context, AnalysisTarget target) |
| + ResolveUnitReferencesTask( |
| + InternalAnalysisContext context, AnalysisTarget target) |
| : super(context, target); |
| @override |
| @@ -2981,19 +3052,19 @@ class ResolveReferencesTask extends SourceBasedAnalysisTask { |
| */ |
| static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
| return <String, TaskInput>{ |
| - LIBRARY_INPUT: LIBRARY_ELEMENT.of(target.library), |
| + LIBRARY_INPUT: LIBRARY_ELEMENT6.of(target.library), |
| UNIT_INPUT: RESOLVED_UNIT5.of(target), |
| TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
| }; |
| } |
| /** |
| - * Create a [ResolveReferencesTask] based on the given [target] in |
| + * Create a [ResolveUnitReferencesTask] based on the given [target] in |
| * the given [context]. |
| */ |
| - static ResolveReferencesTask createTask( |
| + static ResolveUnitReferencesTask createTask( |
| AnalysisContext context, AnalysisTarget target) { |
| - return new ResolveReferencesTask(context, target); |
| + return new ResolveUnitReferencesTask(context, target); |
| } |
| } |
| @@ -3084,7 +3155,7 @@ class ResolveUnitTypeNamesTask extends SourceBasedAnalysisTask { |
| */ |
| class ResolveVariableReferencesTask extends SourceBasedAnalysisTask { |
| /** |
| - * The name of the [LIBRARY_ELEMENT] input. |
| + * The name of the [LIBRARY_ELEMENT6] input. |
| */ |
| static const String LIBRARY_INPUT = 'LIBRARY_INPUT'; |
| @@ -3146,8 +3217,8 @@ class ResolveVariableReferencesTask extends SourceBasedAnalysisTask { |
| return <String, TaskInput>{ |
| 'fullyBuiltLibraryElements': IMPORT_EXPORT_SOURCE_CLOSURE |
| .of(target.library) |
| - .toListOf(LIBRARY_ELEMENT), |
| - LIBRARY_INPUT: LIBRARY_ELEMENT.of(target.library), |
| + .toListOf(LIBRARY_ELEMENT6), |
| + LIBRARY_INPUT: LIBRARY_ELEMENT6.of(target.library), |
| UNIT_INPUT: RESOLVED_UNIT4.of(target), |
| TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
| }; |
| @@ -3332,6 +3403,7 @@ class VerifyUnitTask extends SourceBasedAnalysisTask { |
| */ |
| static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
| return <String, TaskInput>{ |
| + 'libraryElement': LIBRARY_ELEMENT.of(target.library), |
| UNIT_INPUT: RESOLVED_UNIT.of(target), |
| TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
| }; |