| 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 773515cb53760f158eedd4532049376f862e8451..c6844d95d11dd6a90ef96ce76067b0334910de91 100644 | 
| --- a/pkg/analyzer/lib/src/task/dart.dart | 
| +++ b/pkg/analyzer/lib/src/task/dart.dart | 
| @@ -306,6 +306,17 @@ final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT7 = | 
| cachingPolicy: ELEMENT_CACHING_POLICY); | 
|  | 
| /** | 
| + * The partial [LibraryElement] associated with a library. | 
| + * | 
| + * The same as a [LIBRARY_ELEMENT7]. | 
| + * | 
| + * The result is only available for [Source]s representing a library. | 
| + */ | 
| +final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT8 = | 
| +    new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT8', null, | 
| +        cachingPolicy: ELEMENT_CACHING_POLICY); | 
| + | 
| +/** | 
| * The flag specifying whether all analysis errors are computed in a specific | 
| * library. | 
| * | 
| @@ -2391,7 +2402,7 @@ class EvaluateUnitConstantsTask extends SourceBasedAnalysisTask { | 
| static Map<String, TaskInput> buildInputs(AnalysisTarget target) { | 
| LibrarySpecificUnit unit = target; | 
| return <String, TaskInput>{ | 
| -      'libraryElement': LIBRARY_ELEMENT.of(unit.library), | 
| +      'libraryElement': LIBRARY_ELEMENT8.of(unit.library), | 
| UNIT_INPUT: RESOLVED_UNIT10.of(unit), | 
| CONSTANT_VALUES: | 
| COMPILATION_UNIT_CONSTANTS.of(unit).toListOf(CONSTANT_VALUE) | 
| @@ -3201,7 +3212,8 @@ class LibraryErrorsReadyTask extends SourceBasedAnalysisTask { | 
| static Map<String, TaskInput> buildInputs(AnalysisTarget target) { | 
| Source source = target; | 
| return <String, TaskInput>{ | 
| -      'allErrors': UNITS.of(source).toListOf(DART_ERRORS) | 
| +      'allErrors': UNITS.of(source).toListOf(DART_ERRORS), | 
| +      'libraryElement': LIBRARY_ELEMENT.of(source) | 
| }; | 
| } | 
|  | 
| @@ -4426,11 +4438,11 @@ class ResolveInstanceFieldsInUnitTask extends SourceBasedAnalysisTask { | 
|  | 
| /** | 
| * A task that finishes resolution by requesting [RESOLVED_UNIT10] for every | 
| - * unit in the libraries closure and produces [LIBRARY_ELEMENT]. | 
| + * unit in the libraries closure and produces [LIBRARY_ELEMENT8]. | 
| */ | 
| class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask { | 
| /** | 
| -   * The name of the [LIBRARY_ELEMENT5] input. | 
| +   * The name of the [LIBRARY_ELEMENT7] input. | 
| */ | 
| static const String LIBRARY_INPUT = 'LIBRARY_INPUT'; | 
|  | 
| @@ -4446,7 +4458,7 @@ class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask { | 
| 'ResolveLibraryReferencesTask', | 
| createTask, | 
| buildInputs, | 
| -      <ResultDescriptor>[LIBRARY_ELEMENT, REFERENCED_NAMES]); | 
| +      <ResultDescriptor>[LIBRARY_ELEMENT8, REFERENCED_NAMES]); | 
|  | 
| ResolveLibraryReferencesTask( | 
| InternalAnalysisContext context, AnalysisTarget target) | 
| @@ -4470,7 +4482,7 @@ class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask { | 
| // | 
| // Record outputs. | 
| // | 
| -    outputs[LIBRARY_ELEMENT] = library; | 
| +    outputs[LIBRARY_ELEMENT8] = library; | 
| outputs[REFERENCED_NAMES] = referencedNames; | 
| } | 
|  | 
| @@ -4482,7 +4494,7 @@ class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask { | 
| static Map<String, TaskInput> buildInputs(AnalysisTarget target) { | 
| Source source = target; | 
| return <String, TaskInput>{ | 
| -      LIBRARY_INPUT: LIBRARY_ELEMENT5.of(source), | 
| +      LIBRARY_INPUT: LIBRARY_ELEMENT7.of(source), | 
| UNITS_INPUT: LIBRARY_SPECIFIC_UNITS.of(source).toListOf(RESOLVED_UNIT10), | 
| 'thisLibraryClosureIsReady': READY_RESOLVED_UNIT10.of(source), | 
| }; | 
| @@ -4499,6 +4511,71 @@ class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask { | 
| } | 
|  | 
| /** | 
| + * A task that finishes resolution by requesting [RESOLVED_UNIT11] for every | 
| + * unit in the libraries closure and produces [LIBRARY_ELEMENT]. | 
| + */ | 
| +class ResolveLibraryTask extends SourceBasedAnalysisTask { | 
| +  /** | 
| +   * The name of the [LIBRARY_ELEMENT8] input. | 
| +   */ | 
| +  static const String LIBRARY_INPUT = 'LIBRARY_INPUT'; | 
| + | 
| +  /** | 
| +   * The name of the list of [RESOLVED_UNIT11] input. | 
| +   */ | 
| +  static const String UNITS_INPUT = 'UNITS_INPUT'; | 
| + | 
| +  /** | 
| +   * The task descriptor describing this kind of task. | 
| +   */ | 
| +  static final TaskDescriptor DESCRIPTOR = new TaskDescriptor( | 
| +      'ResolveLibraryTask', | 
| +      createTask, | 
| +      buildInputs, | 
| +      <ResultDescriptor>[LIBRARY_ELEMENT]); | 
| + | 
| +  ResolveLibraryTask(InternalAnalysisContext context, AnalysisTarget target) | 
| +      : super(context, target); | 
| + | 
| +  @override | 
| +  TaskDescriptor get descriptor => DESCRIPTOR; | 
| + | 
| +  @override | 
| +  void internalPerform() { | 
| +    // | 
| +    // Prepare inputs. | 
| +    // | 
| +    LibraryElement library = getRequiredInput(LIBRARY_INPUT); | 
| +    // | 
| +    // Record outputs. | 
| +    // | 
| +    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(AnalysisTarget target) { | 
| +    Source source = target; | 
| +    return <String, TaskInput>{ | 
| +      LIBRARY_INPUT: LIBRARY_ELEMENT8.of(source), | 
| +      'thisLibraryClosureIsReady': READY_RESOLVED_UNIT.of(source), | 
| +    }; | 
| +  } | 
| + | 
| +/** | 
| + * Create a [ResolveLibraryTask] based on the given [target] in the given | 
| + * [context]. | 
| + */ | 
| +  static ResolveLibraryTask createTask( | 
| +      AnalysisContext context, AnalysisTarget target) { | 
| +    return new ResolveLibraryTask(context, target); | 
| +  } | 
| +} | 
| + | 
| +/** | 
| * An artificial task that does nothing except to force type names resolution | 
| * for the defining and part units of a library. | 
| */ | 
|  |