| 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.task.dart_work_manager; | 5 library analyzer.src.task.dart_work_manager; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 | 8 |
| 9 import 'package:analyzer/src/context/cache.dart'; | 9 import 'package:analyzer/src/context/cache.dart'; |
| 10 import 'package:analyzer/src/generated/engine.dart' | 10 import 'package:analyzer/src/generated/engine.dart' |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 final HashMap<Source, List<Source>> partLibrariesMap = | 81 final HashMap<Source, List<Source>> partLibrariesMap = |
| 82 new HashMap<Source, List<Source>>(); | 82 new HashMap<Source, List<Source>>(); |
| 83 | 83 |
| 84 /** | 84 /** |
| 85 * Initialize a newly created manager. | 85 * Initialize a newly created manager. |
| 86 */ | 86 */ |
| 87 DartWorkManager(this.context) { | 87 DartWorkManager(this.context) { |
| 88 analysisCache.onResultInvalidated.listen((InvalidatedResult event) { | 88 analysisCache.onResultInvalidated.listen((InvalidatedResult event) { |
| 89 if (event.descriptor == LIBRARY_ERRORS_READY) { | 89 if (event.descriptor == LIBRARY_ERRORS_READY) { |
| 90 CacheEntry entry = event.entry; | 90 CacheEntry entry = event.entry; |
| 91 if (entry.getValue(SOURCE_KIND) == SourceKind.LIBRARY) { | 91 if (entry.explicitlyAdded && |
| 92 entry.getValue(SOURCE_KIND) == SourceKind.LIBRARY) { |
| 92 librarySourceQueue.add(entry.target); | 93 librarySourceQueue.add(entry.target); |
| 93 } | 94 } |
| 94 } | 95 } |
| 95 }); | 96 }); |
| 96 } | 97 } |
| 97 | 98 |
| 98 /** | 99 /** |
| 99 * Returns the correctly typed result of `context.analysisCache`. | 100 * Returns the correctly typed result of `context.analysisCache`. |
| 100 */ | 101 */ |
| 101 AnalysisCache get analysisCache => context.analysisCache; | 102 AnalysisCache get analysisCache => context.analysisCache; |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 // Optionally gather Dart sources to invalidate URIs resolution. | 386 // Optionally gather Dart sources to invalidate URIs resolution. |
| 386 if (invalidateUris && _isDartSource(target)) { | 387 if (invalidateUris && _isDartSource(target)) { |
| 387 dartSources.add(target); | 388 dartSources.add(target); |
| 388 } | 389 } |
| 389 // LibrarySpecificUnit(s) are roots of Dart resolution. | 390 // LibrarySpecificUnit(s) are roots of Dart resolution. |
| 390 // When one is invalidated, invalidation is propagated to all resolution. | 391 // When one is invalidated, invalidation is propagated to all resolution. |
| 391 if (target is LibrarySpecificUnit) { | 392 if (target is LibrarySpecificUnit) { |
| 392 unitTargets.add(target); | 393 unitTargets.add(target); |
| 393 Source library = target.library; | 394 Source library = target.library; |
| 394 if (context.exists(library)) { | 395 if (context.exists(library)) { |
| 395 librarySourceQueue.add(library); | 396 CacheEntry entry = iterator.value; |
| 397 if (entry.explicitlyAdded) { |
| 398 librarySourceQueue.add(library); |
| 399 } |
| 396 } | 400 } |
| 397 } | 401 } |
| 398 } | 402 } |
| 399 // Invalidate targets and values. | 403 // Invalidate targets and values. |
| 400 unitTargets.forEach(partition.remove); | 404 unitTargets.forEach(partition.remove); |
| 401 for (Source dartSource in dartSources) { | 405 for (Source dartSource in dartSources) { |
| 402 CacheEntry entry = partition.get(dartSource); | 406 CacheEntry entry = partition.get(dartSource); |
| 403 if (entry != null) { | 407 if (entry != null) { |
| 404 // TODO(scheglov) we invalidate too much. | 408 // TODO(scheglov) we invalidate too much. |
| 405 // Would be nice to invalidate just URLs resolution. | 409 // Would be nice to invalidate just URLs resolution. |
| 406 entry.setState(PARSED_UNIT, CacheState.INVALID); | 410 entry.setState(PARSED_UNIT, CacheState.INVALID); |
| 407 entry.setState(IMPORTED_LIBRARIES, CacheState.INVALID); | 411 entry.setState(IMPORTED_LIBRARIES, CacheState.INVALID); |
| 408 entry.setState(EXPLICITLY_IMPORTED_LIBRARIES, CacheState.INVALID); | 412 entry.setState(EXPLICITLY_IMPORTED_LIBRARIES, CacheState.INVALID); |
| 409 entry.setState(EXPORTED_LIBRARIES, CacheState.INVALID); | 413 entry.setState(EXPORTED_LIBRARIES, CacheState.INVALID); |
| 410 entry.setState(INCLUDED_PARTS, CacheState.INVALID); | 414 entry.setState(INCLUDED_PARTS, CacheState.INVALID); |
| 415 entry.setState(LIBRARY_SPECIFIC_UNITS, CacheState.INVALID); |
| 416 entry.setState(UNITS, CacheState.INVALID); |
| 411 } | 417 } |
| 412 } | 418 } |
| 413 } | 419 } |
| 414 | 420 |
| 415 /** | 421 /** |
| 416 * Invalidate [CONTAINING_LIBRARIES] for the given [source]. | 422 * Invalidate [CONTAINING_LIBRARIES] for the given [source]. |
| 417 * [CONTAINING_LIBRARIES] does not have dependencies, so we manage it here. | 423 * [CONTAINING_LIBRARIES] does not have dependencies, so we manage it here. |
| 418 * The [source] may be a part, or a library whose contents is updated so | 424 * The [source] may be a part, or a library whose contents is updated so |
| 419 * will be a part. | 425 * will be a part. |
| 420 */ | 426 */ |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 } | 473 } |
| 468 } | 474 } |
| 469 | 475 |
| 470 bool _shouldErrorsBeComputed(Source source) => | 476 bool _shouldErrorsBeComputed(Source source) => |
| 471 context.shouldErrorsBeAnalyzed(source, null); | 477 context.shouldErrorsBeAnalyzed(source, null); |
| 472 | 478 |
| 473 static bool _isDartSource(AnalysisTarget target) { | 479 static bool _isDartSource(AnalysisTarget target) { |
| 474 return target is Source && AnalysisEngine.isDartFileName(target.fullName); | 480 return target is Source && AnalysisEngine.isDartFileName(target.fullName); |
| 475 } | 481 } |
| 476 } | 482 } |
| OLD | NEW |