OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library analyzer.src.context.cache; | 5 library analyzer.src.context.cache; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 | 8 |
9 import 'package:analyzer/src/generated/engine.dart' | 9 import 'package:analyzer/src/generated/engine.dart' |
10 show AnalysisEngine, CacheState, InternalAnalysisContext, RetentionPriority; | 10 show AnalysisEngine, CacheState, InternalAnalysisContext, RetentionPriority; |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 ResultData data = _partition._getDataFor(dependedOnResult, orNull: true); | 446 ResultData data = _partition._getDataFor(dependedOnResult, orNull: true); |
447 if (data != null) { | 447 if (data != null) { |
448 data.dependentResults.remove(thisResult); | 448 data.dependentResults.remove(thisResult); |
449 } | 449 } |
450 }); | 450 }); |
451 // Invalidate results that depend on this result. | 451 // Invalidate results that depend on this result. |
452 List<TargetedResult> dependentResults = thisData.dependentResults; | 452 List<TargetedResult> dependentResults = thisData.dependentResults; |
453 thisData.dependentResults = <TargetedResult>[]; | 453 thisData.dependentResults = <TargetedResult>[]; |
454 dependentResults.forEach((TargetedResult dependentResult) { | 454 dependentResults.forEach((TargetedResult dependentResult) { |
455 CacheEntry entry = _partition.get(dependentResult.target); | 455 CacheEntry entry = _partition.get(dependentResult.target); |
456 entry._invalidate(dependentResult.result, true); | 456 if (entry != null) { |
| 457 entry._invalidate(dependentResult.result, true); |
| 458 } |
457 }); | 459 }); |
458 // If empty, remove the entry altogether. | 460 // If empty, remove the entry altogether. |
459 if (_resultMap.isEmpty) { | 461 if (_resultMap.isEmpty) { |
460 _partition._targetMap.remove(target); | 462 _partition._targetMap.remove(target); |
461 } | 463 } |
462 } | 464 } |
463 | 465 |
464 /** | 466 /** |
465 * Invalidates all the results of this entry, with propagation. | 467 * Invalidates all the results of this entry, with propagation. |
466 */ | 468 */ |
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
932 class UniversalCachePartition extends CachePartition { | 934 class UniversalCachePartition extends CachePartition { |
933 /** | 935 /** |
934 * Initialize a newly created cache partition, belonging to the given | 936 * Initialize a newly created cache partition, belonging to the given |
935 * [context]. | 937 * [context]. |
936 */ | 938 */ |
937 UniversalCachePartition(InternalAnalysisContext context) : super(context); | 939 UniversalCachePartition(InternalAnalysisContext context) : super(context); |
938 | 940 |
939 @override | 941 @override |
940 bool isResponsibleFor(AnalysisTarget target) => true; | 942 bool isResponsibleFor(AnalysisTarget target) => true; |
941 } | 943 } |
OLD | NEW |