| Index: pkg/analyzer/lib/src/context/context.dart
|
| diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
|
| index def719f33a6b86f433cc2600274ea11f8b930b00..c5b356d59572f9190f6a05b22907c11331587413 100644
|
| --- a/pkg/analyzer/lib/src/context/context.dart
|
| +++ b/pkg/analyzer/lib/src/context/context.dart
|
| @@ -194,6 +194,13 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| ResultProvider resultProvider;
|
|
|
| /**
|
| + * The map of [InvalidatedResultEvent] controllers.
|
| + */
|
| + final Map<ResultDescriptor, StreamController<InvalidatedResultEvent>>
|
| + _resultInvalidatedControllers =
|
| + <ResultDescriptor, StreamController<InvalidatedResultEvent>>{};
|
| +
|
| + /**
|
| * The most recently incrementally resolved source, or `null` when it was
|
| * already validated, or the most recent change was not incrementally resolved.
|
| */
|
| @@ -682,10 +689,19 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| if (sdk == null) {
|
| return new AnalysisCache(<CachePartition>[_privatePartition]);
|
| }
|
| - return new AnalysisCache(<CachePartition>[
|
| + AnalysisCache cache = new AnalysisCache(<CachePartition>[
|
| AnalysisEngine.instance.partitionManager.forSdk(sdk),
|
| _privatePartition
|
| ]);
|
| + cache.onResultInvalidated.listen((InvalidatedResult event) {
|
| + StreamController<InvalidatedResultEvent> controller =
|
| + _resultInvalidatedControllers[event.descriptor];
|
| + if (controller != null) {
|
| + controller.add(new InvalidatedResultEvent(
|
| + this, event.entry.target, event.descriptor, event.value));
|
| + }
|
| + });
|
| + return cache;
|
| }
|
|
|
| /**
|
| @@ -1104,6 +1120,14 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| }
|
|
|
| @override
|
| + Stream<InvalidatedResultEvent> onResultInvalidated(
|
| + ResultDescriptor descriptor) {
|
| + return _resultInvalidatedControllers.putIfAbsent(descriptor, () {
|
| + return new StreamController<InvalidatedResultEvent>.broadcast(sync: true);
|
| + }).stream;
|
| + }
|
| +
|
| + @override
|
| CompilationUnit parseCompilationUnit(Source source) {
|
| if (!AnalysisEngine.isDartFileName(source.shortName)) {
|
| return null;
|
|
|