| 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..e34d1aa863c16e3ecb567d5e0bbb0cd00179e44a 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 [InvalidatedResult] controllers.
|
| + */
|
| + final Map<ResultDescriptor, StreamController<InvalidatedResult>>
|
| + _resultInvalidatedControllers =
|
| + <ResultDescriptor, StreamController<InvalidatedResult>>{};
|
| +
|
| + /**
|
| * 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,14 @@ 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) {
|
| + _resultInvalidatedControllers[event.descriptor]?.add(event);
|
| + });
|
| + return cache;
|
| }
|
|
|
| /**
|
| @@ -1104,6 +1115,13 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| }
|
|
|
| @override
|
| + Stream<InvalidatedResult> onResultInvalidated(ResultDescriptor descriptor) {
|
| + return _resultInvalidatedControllers.putIfAbsent(descriptor, () {
|
| + return new StreamController<InvalidatedResult>.broadcast(sync: true);
|
| + }).stream;
|
| + }
|
| +
|
| + @override
|
| CompilationUnit parseCompilationUnit(Source source) {
|
| if (!AnalysisEngine.isDartFileName(source.shortName)) {
|
| return null;
|
|
|