| Index: pkg/analyzer/lib/src/task/driver.dart
|
| diff --git a/pkg/analyzer/lib/src/task/driver.dart b/pkg/analyzer/lib/src/task/driver.dart
|
| index ff5767db903edd1f5eabbf0ca856578b1fcb41a4..fd620a22b796e18cf6259faa9194e6b46a3071b3 100644
|
| --- a/pkg/analyzer/lib/src/task/driver.dart
|
| +++ b/pkg/analyzer/lib/src/task/driver.dart
|
| @@ -12,10 +12,12 @@ import 'package:analyzer/src/generated/engine.dart'
|
| hide AnalysisTask, AnalysisContextImpl;
|
| import 'package:analyzer/src/generated/java_engine.dart';
|
| import 'package:analyzer/src/generated/resolver.dart';
|
| +import 'package:analyzer/src/generated/source.dart';
|
| import 'package:analyzer/src/generated/utilities_general.dart';
|
| import 'package:analyzer/src/task/inputs.dart';
|
| import 'package:analyzer/src/task/manager.dart';
|
| import 'package:analyzer/task/model.dart';
|
| +import 'package:analyzer/src/generated/error.dart';
|
|
|
| final PerformanceTag workOrderMoveNextPerfTag =
|
| new PerformanceTag('WorkOrder.moveNext');
|
| @@ -44,7 +46,8 @@ class AnalysisDriver {
|
| /**
|
| * The map of [ComputedResult] controllers.
|
| */
|
| - final Map<ResultDescriptor, StreamController<ComputedResult>> resultComputedControllers =
|
| + final Map<ResultDescriptor,
|
| + StreamController<ComputedResult>> resultComputedControllers =
|
| <ResultDescriptor, StreamController<ComputedResult>>{};
|
|
|
| /**
|
| @@ -197,8 +200,10 @@ class AnalysisDriver {
|
| * [descriptor] is computed.
|
| */
|
| Stream<ComputedResult> onResultComputed(ResultDescriptor descriptor) {
|
| - return resultComputedControllers.putIfAbsent(descriptor, () =>
|
| - new StreamController<ComputedResult>.broadcast(sync: true)).stream;
|
| + return resultComputedControllers
|
| + .putIfAbsent(descriptor,
|
| + () => new StreamController<ComputedResult>.broadcast(sync: true))
|
| + .stream;
|
| }
|
|
|
| /**
|
| @@ -476,8 +481,9 @@ class InfiniteTaskLoopException extends AnalysisException {
|
| * Initialize a newly created exception to represent a failed attempt to
|
| * perform the given [task] due to the given [dependencyCycle].
|
| */
|
| - InfiniteTaskLoopException(AnalysisTask task, this.dependencyCycle) : super(
|
| - 'Infinite loop while performing task ${task.descriptor.name} for ${task.target}');
|
| + InfiniteTaskLoopException(AnalysisTask task, this.dependencyCycle)
|
| + : super(
|
| + 'Infinite loop while performing task ${task.descriptor.name} for ${task.target}');
|
| }
|
|
|
| /**
|
| @@ -565,10 +571,10 @@ class WorkItem {
|
| * described by the given descriptor.
|
| */
|
| WorkItem(this.context, this.target, this.descriptor, this.spawningResult) {
|
| - AnalysisTarget actualTarget = identical(
|
| - target, AnalysisContextTarget.request)
|
| - ? new AnalysisContextTarget(context)
|
| - : target;
|
| + AnalysisTarget actualTarget =
|
| + identical(target, AnalysisContextTarget.request)
|
| + ? new AnalysisContextTarget(context)
|
| + : target;
|
| Map<String, TaskInput> inputDescriptors =
|
| descriptor.createTaskInputs(actualTarget);
|
| builder = new TopLevelTaskInputBuilder(inputDescriptors);
|
| @@ -679,11 +685,25 @@ class WorkItem {
|
| */
|
| abstract class WorkManager {
|
| /**
|
| + * Notifies the manager about changes in the explicit source list.
|
| + */
|
| + void applyChange(List<Source> addedSources, List<Source> changedSources,
|
| + List<Source> removedSources);
|
| +
|
| + /**
|
| * Notifies the managers that the given set of priority [targets] was set.
|
| */
|
| void applyPriorityTargets(List<AnalysisTarget> targets);
|
|
|
| /**
|
| + * Return a list of all of the errors associated with the given [source].
|
| + * The list of errors will be empty if the source is not known to the context
|
| + * or if there are no errors in the source. The errors contained in the list
|
| + * can be incomplete.
|
| + */
|
| + List<AnalysisError> getErrors(Source source);
|
| +
|
| + /**
|
| * Return the next [TargetedResult] that this work manager wants to be
|
| * computed, or `null` if this manager doesn't need any new results.
|
| */
|
| @@ -700,6 +720,16 @@ abstract class WorkManager {
|
| WorkOrderPriority getNextResultPriority();
|
|
|
| /**
|
| + * Notifies the manager about analysis options changes.
|
| + */
|
| + void onAnalysisOptionsChanged();
|
| +
|
| + /**
|
| + * Notifies the manager about [SourceFactory] changes.
|
| + */
|
| + void onSourceFactoryChanged();
|
| +
|
| + /**
|
| * Notifies the manager that the given [outputs] were produced for
|
| * the given [target].
|
| */
|
|
|