Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: pkg/analyzer/lib/src/generated/incremental_resolver.dart

Issue 1355503004: Fix for updating HINTS during incremental resolution with TM. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 engine.incremental_resolver; 5 library engine.incremental_resolver;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:math' as math; 8 import 'dart:math' as math;
9 9
10 import 'package:analyzer/src/context/cache.dart' 10 import 'package:analyzer/src/context/cache.dart'
(...skipping 846 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 @override 857 @override
858 DeltaResult validate(InternalAnalysisContext context, AnalysisTarget target, 858 DeltaResult validate(InternalAnalysisContext context, AnalysisTarget target,
859 ResultDescriptor descriptor) { 859 ResultDescriptor descriptor) {
860 // don't invalidate results of standard Dart tasks 860 // don't invalidate results of standard Dart tasks
861 bool isByTask(TaskDescriptor taskDescriptor) { 861 bool isByTask(TaskDescriptor taskDescriptor) {
862 return taskDescriptor.results.contains(descriptor); 862 return taskDescriptor.results.contains(descriptor);
863 } 863 }
864 if (descriptor == CONTENT) { 864 if (descriptor == CONTENT) {
865 return DeltaResult.KEEP_CONTINUE; 865 return DeltaResult.KEEP_CONTINUE;
866 } 866 }
867 if (target is Source && target != source) { 867 if (target is LibrarySpecificUnit && target.unit != source) {
868 if (isByTask(DartErrorsTask.DESCRIPTOR) || 868 if (isByTask(GatherUsedLocalElementsTask.DESCRIPTOR) ||
869 isByTask(LibraryErrorsReadyTask.DESCRIPTOR)) { 869 isByTask(GatherUsedImportedElementsTask.DESCRIPTOR)) {
870 return DeltaResult.KEEP_CONTINUE; 870 return DeltaResult.KEEP_CONTINUE;
871 } 871 }
872 } 872 }
873 if (target is LibrarySpecificUnit &&
874 target.unit != source &&
875 target.library != source) {
876 if (isByTask(GatherUsedLocalElementsTask.DESCRIPTOR) ||
877 isByTask(GatherUsedImportedElementsTask.DESCRIPTOR) ||
878 isByTask(GenerateHintsTask.DESCRIPTOR) ||
879 isByTask(LibraryUnitErrorsTask.DESCRIPTOR)) {
880 return DeltaResult.KEEP_CONTINUE;
881 }
882 }
883 if (isByTask(BuildCompilationUnitElementTask.DESCRIPTOR) || 873 if (isByTask(BuildCompilationUnitElementTask.DESCRIPTOR) ||
884 isByTask(BuildDirectiveElementsTask.DESCRIPTOR) || 874 isByTask(BuildDirectiveElementsTask.DESCRIPTOR) ||
885 isByTask(BuildEnumMemberElementsTask.DESCRIPTOR) || 875 isByTask(BuildEnumMemberElementsTask.DESCRIPTOR) ||
886 isByTask(BuildExportNamespaceTask.DESCRIPTOR) || 876 isByTask(BuildExportNamespaceTask.DESCRIPTOR) ||
887 isByTask(BuildLibraryElementTask.DESCRIPTOR) || 877 isByTask(BuildLibraryElementTask.DESCRIPTOR) ||
888 isByTask(BuildPublicNamespaceTask.DESCRIPTOR) || 878 isByTask(BuildPublicNamespaceTask.DESCRIPTOR) ||
889 isByTask(BuildSourceExportClosureTask.DESCRIPTOR) || 879 isByTask(BuildSourceExportClosureTask.DESCRIPTOR) ||
890 isByTask(BuildSourceImportExportClosureTask.DESCRIPTOR) || 880 isByTask(BuildSourceImportExportClosureTask.DESCRIPTOR) ||
891 isByTask(ComputeConstantDependenciesTask.DESCRIPTOR) || 881 isByTask(ComputeConstantDependenciesTask.DESCRIPTOR) ||
892 isByTask(ComputeConstantValueTask.DESCRIPTOR) || 882 isByTask(ComputeConstantValueTask.DESCRIPTOR) ||
883 isByTask(DartErrorsTask.DESCRIPTOR) ||
893 isByTask(EvaluateUnitConstantsTask.DESCRIPTOR) || 884 isByTask(EvaluateUnitConstantsTask.DESCRIPTOR) ||
885 isByTask(GenerateHintsTask.DESCRIPTOR) ||
894 isByTask(InferInstanceMembersInUnitTask.DESCRIPTOR) || 886 isByTask(InferInstanceMembersInUnitTask.DESCRIPTOR) ||
895 isByTask(InferStaticVariableTypesInUnitTask.DESCRIPTOR) || 887 isByTask(InferStaticVariableTypesInUnitTask.DESCRIPTOR) ||
888 isByTask(LibraryErrorsReadyTask.DESCRIPTOR) ||
889 isByTask(LibraryUnitErrorsTask.DESCRIPTOR) ||
896 isByTask(ParseDartTask.DESCRIPTOR) || 890 isByTask(ParseDartTask.DESCRIPTOR) ||
897 isByTask(PartiallyResolveUnitReferencesTask.DESCRIPTOR) || 891 isByTask(PartiallyResolveUnitReferencesTask.DESCRIPTOR) ||
898 isByTask(ScanDartTask.DESCRIPTOR) || 892 isByTask(ScanDartTask.DESCRIPTOR) ||
899 isByTask(ResolveFunctionBodiesInUnitTask.DESCRIPTOR) || 893 isByTask(ResolveFunctionBodiesInUnitTask.DESCRIPTOR) ||
900 isByTask(ResolveLibraryReferencesTask.DESCRIPTOR) || 894 isByTask(ResolveLibraryReferencesTask.DESCRIPTOR) ||
901 isByTask(ResolveLibraryTypeNamesTask.DESCRIPTOR) || 895 isByTask(ResolveLibraryTypeNamesTask.DESCRIPTOR) ||
902 isByTask(ResolveUnitTypeNamesTask.DESCRIPTOR) || 896 isByTask(ResolveUnitTypeNamesTask.DESCRIPTOR) ||
903 isByTask(ResolveVariableReferencesTask.DESCRIPTOR) || 897 isByTask(ResolveVariableReferencesTask.DESCRIPTOR) ||
904 isByTask(VerifyUnitTask.DESCRIPTOR)) { 898 isByTask(VerifyUnitTask.DESCRIPTOR)) {
905 return DeltaResult.KEEP_CONTINUE; 899 return DeltaResult.KEEP_CONTINUE;
906 } 900 }
907 // invalidate all the other results 901 // invalidate all the other results
908 return DeltaResult.INVALIDATE; 902 return DeltaResult.INVALIDATE_NO_DELTA;
909 } 903 }
910 } 904 }
911 905
912 /** 906 /**
913 * Instances of the class [IncrementalResolver] resolve the smallest portion of 907 * Instances of the class [IncrementalResolver] resolve the smallest portion of
914 * an AST structure that we currently know how to resolve. 908 * an AST structure that we currently know how to resolve.
915 */ 909 */
916 class IncrementalResolver { 910 class IncrementalResolver {
917 /** 911 /**
918 * The element of the compilation unit being resolved. 912 * The element of the compilation unit being resolved.
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 void _updateEntry() { 1281 void _updateEntry() {
1288 if (oldEntry != null) { 1282 if (oldEntry != null) {
1289 _updateEntry_OLD(); 1283 _updateEntry_OLD();
1290 } else { 1284 } else {
1291 _updateEntry_NEW(); 1285 _updateEntry_NEW();
1292 } 1286 }
1293 } 1287 }
1294 1288
1295 void _updateEntry_NEW() { 1289 void _updateEntry_NEW() {
1296 _updateErrors_NEW(INFER_STATIC_VARIABLE_TYPES_ERRORS, _resolveErrors); 1290 _updateErrors_NEW(INFER_STATIC_VARIABLE_TYPES_ERRORS, _resolveErrors);
1297 _updateErrors_NEW(LIBRARY_UNIT_ERRORS, _resolveErrors);
1298 _updateErrors_NEW(PARTIALLY_RESOLVE_REFERENCES_ERRORS, _resolveErrors); 1291 _updateErrors_NEW(PARTIALLY_RESOLVE_REFERENCES_ERRORS, _resolveErrors);
1299 _updateErrors_NEW(RESOLVE_FUNCTION_BODIES_ERRORS, _resolveErrors); 1292 _updateErrors_NEW(RESOLVE_FUNCTION_BODIES_ERRORS, _resolveErrors);
1300 _updateErrors_NEW(RESOLVE_TYPE_NAMES_ERRORS, []); 1293 _updateErrors_NEW(RESOLVE_TYPE_NAMES_ERRORS, []);
1301 _updateErrors_NEW(VARIABLE_REFERENCE_ERRORS, []); 1294 _updateErrors_NEW(VARIABLE_REFERENCE_ERRORS, []);
1302 _updateErrors_NEW(VERIFY_ERRORS, _verifyErrors); 1295 _updateErrors_NEW(VERIFY_ERRORS, _verifyErrors);
1303 // invalidate results we don't update incrementally 1296 // invalidate results we don't update incrementally
1304 newUnitEntry.setState(USED_IMPORTED_ELEMENTS, CacheState.INVALID); 1297 newUnitEntry.setState(USED_IMPORTED_ELEMENTS, CacheState.INVALID);
1305 newUnitEntry.setState(USED_LOCAL_ELEMENTS, CacheState.INVALID); 1298 newUnitEntry.setState(USED_LOCAL_ELEMENTS, CacheState.INVALID);
1306 newUnitEntry.setState(HINTS, CacheState.INVALID); 1299 newUnitEntry.setState(HINTS, CacheState.INVALID);
1307 } 1300 }
(...skipping 24 matching lines...) Expand all
1332 } 1325 }
1333 } 1326 }
1334 // done 1327 // done
1335 return errors; 1328 return errors;
1336 } 1329 }
1337 1330
1338 void _updateErrors_NEW(ResultDescriptor<List<AnalysisError>> descriptor, 1331 void _updateErrors_NEW(ResultDescriptor<List<AnalysisError>> descriptor,
1339 List<AnalysisError> newErrors) { 1332 List<AnalysisError> newErrors) {
1340 List<AnalysisError> oldErrors = newUnitEntry.getValue(descriptor); 1333 List<AnalysisError> oldErrors = newUnitEntry.getValue(descriptor);
1341 List<AnalysisError> errors = _updateErrors(oldErrors, newErrors); 1334 List<AnalysisError> errors = _updateErrors(oldErrors, newErrors);
1342 newUnitEntry.setValueIncremental(descriptor, errors); 1335 newUnitEntry.setValueIncremental(descriptor, errors, true);
1343 } 1336 }
1344 1337
1345 void _updateErrors_OLD(DataDescriptor<List<AnalysisError>> descriptor, 1338 void _updateErrors_OLD(DataDescriptor<List<AnalysisError>> descriptor,
1346 List<AnalysisError> newErrors) { 1339 List<AnalysisError> newErrors) {
1347 List<AnalysisError> oldErrors = 1340 List<AnalysisError> oldErrors =
1348 oldEntry.getValueInLibrary(descriptor, _librarySource); 1341 oldEntry.getValueInLibrary(descriptor, _librarySource);
1349 List<AnalysisError> errors = _updateErrors(oldErrors, newErrors); 1342 List<AnalysisError> errors = _updateErrors(oldErrors, newErrors);
1350 oldEntry.setValueInLibrary(descriptor, _librarySource, errors); 1343 oldEntry.setValueInLibrary(descriptor, _librarySource, errors);
1351 } 1344 }
1352 1345
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
1705 1698
1706 void _updateEntry() { 1699 void _updateEntry() {
1707 if (_oldEntry != null) { 1700 if (_oldEntry != null) {
1708 _updateEntry_OLD(); 1701 _updateEntry_OLD();
1709 } else { 1702 } else {
1710 _updateEntry_NEW(); 1703 _updateEntry_NEW();
1711 } 1704 }
1712 } 1705 }
1713 1706
1714 void _updateEntry_NEW() { 1707 void _updateEntry_NEW() {
1715 _newSourceEntry.setState(DART_ERRORS, CacheState.INVALID);
1716 // scan results 1708 // scan results
1717 List<TargetedResult> scanDeps = <TargetedResult>[ 1709 _newSourceEntry.setValueIncremental(SCAN_ERRORS, _newScanErrors, true);
1718 new TargetedResult(_unitSource, CONTENT) 1710 _newSourceEntry.setValueIncremental(LINE_INFO, _newLineInfo, false);
1719 ];
1720 _newSourceEntry.setState(SCAN_ERRORS, CacheState.INVALID);
1721 _newSourceEntry.setValue(SCAN_ERRORS, _newScanErrors, scanDeps);
1722 _newSourceEntry.setValue(LINE_INFO, _newLineInfo, scanDeps);
1723 // parse results 1711 // parse results
1724 List<TargetedResult> parseDeps = <TargetedResult>[ 1712 _newSourceEntry.setValueIncremental(PARSE_ERRORS, _newScanErrors, true);
1725 new TargetedResult(_unitSource, TOKEN_STREAM) 1713 _newSourceEntry.setValueIncremental(PARSED_UNIT, _newScanErrors, false);
1726 ];
1727 _newSourceEntry.setState(PARSE_ERRORS, CacheState.INVALID);
1728 _newSourceEntry.setValue(PARSE_ERRORS, _newParseErrors, parseDeps);
1729 _newSourceEntry.setValue(PARSED_UNIT, _oldUnit, parseDeps);
1730 } 1714 }
1731 1715
1732 void _updateEntry_OLD() { 1716 void _updateEntry_OLD() {
1733 _oldEntry.setValue(SourceEntry.LINE_INFO, _newLineInfo); 1717 _oldEntry.setValue(SourceEntry.LINE_INFO, _newLineInfo);
1734 _oldEntry.setValue(DartEntry.SCAN_ERRORS, _newScanErrors); 1718 _oldEntry.setValue(DartEntry.SCAN_ERRORS, _newScanErrors);
1735 _oldEntry.setValue(DartEntry.PARSE_ERRORS, _newParseErrors); 1719 _oldEntry.setValue(DartEntry.PARSE_ERRORS, _newParseErrors);
1736 } 1720 }
1737 1721
1738 /** 1722 /**
1739 * Checks if [token] has a balanced number of open and closed curly brackets. 1723 * Checks if [token] has a balanced number of open and closed curly brackets.
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
2136 @override 2120 @override
2137 String toString() => name; 2121 String toString() => name;
2138 } 2122 }
2139 2123
2140 class _TokenPair { 2124 class _TokenPair {
2141 final _TokenDifferenceKind kind; 2125 final _TokenDifferenceKind kind;
2142 final Token oldToken; 2126 final Token oldToken;
2143 final Token newToken; 2127 final Token newToken;
2144 _TokenPair(this.kind, this.oldToken, this.newToken); 2128 _TokenPair(this.kind, this.oldToken, this.newToken);
2145 } 2129 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/context/cache.dart ('k') | pkg/analyzer/test/generated/incremental_resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698