OLD | NEW |
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 analysis.server; | 5 library analysis.server; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:collection'; | 8 import 'dart:collection'; |
9 import 'dart:math' show max; | 9 import 'dart:math' show max; |
10 | 10 |
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
726 if (_onAnalysisCompleteCompleter != null) { | 726 if (_onAnalysisCompleteCompleter != null) { |
727 _onAnalysisCompleteCompleter.complete(); | 727 _onAnalysisCompleteCompleter.complete(); |
728 _onAnalysisCompleteCompleter = null; | 728 _onAnalysisCompleteCompleter = null; |
729 } | 729 } |
730 ServerPerformanceStatistics.idle.makeCurrent(); | 730 ServerPerformanceStatistics.idle.makeCurrent(); |
731 } | 731 } |
732 } | 732 } |
733 } | 733 } |
734 | 734 |
735 /** | 735 /** |
736 * Trigger reanalysis of all files from disk. | 736 * Trigger reanalysis of all files in the given list of analysis [roots], or |
| 737 * everything if the analysis roots is `null`. |
737 */ | 738 */ |
738 void reanalyze() { | 739 void reanalyze(List<Resource> roots) { |
739 // Clear any operations that are pending. | 740 // Clear any operations that are pending. |
740 operationQueue.clear(); | 741 if (roots == null) { |
| 742 operationQueue.clear(); |
| 743 } else { |
| 744 for (AnalysisContext context in _getContexts(roots)) { |
| 745 operationQueue.contextRemoved(context); |
| 746 } |
| 747 } |
741 // Instruct the contextDirectoryManager to rebuild all contexts from | 748 // Instruct the contextDirectoryManager to rebuild all contexts from |
742 // scratch. | 749 // scratch. |
743 contextDirectoryManager.refresh(); | 750 contextDirectoryManager.refresh(roots); |
744 } | 751 } |
745 | 752 |
746 /** | 753 /** |
747 * Schedules execution of the given [ServerOperation]. | 754 * Schedules execution of the given [ServerOperation]. |
748 */ | 755 */ |
749 void scheduleOperation(ServerOperation operation) { | 756 void scheduleOperation(ServerOperation operation) { |
750 addOperation(operation); | 757 addOperation(operation); |
751 _schedulePerformOperation(); | 758 _schedulePerformOperation(); |
752 } | 759 } |
753 | 760 |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1089 // | 1096 // |
1090 // Update the defaults used to create new contexts. | 1097 // Update the defaults used to create new contexts. |
1091 // | 1098 // |
1092 AnalysisOptionsImpl options = contextDirectoryManager.defaultOptions; | 1099 AnalysisOptionsImpl options = contextDirectoryManager.defaultOptions; |
1093 optionUpdaters.forEach((OptionUpdater optionUpdater) { | 1100 optionUpdaters.forEach((OptionUpdater optionUpdater) { |
1094 optionUpdater(options); | 1101 optionUpdater(options); |
1095 }); | 1102 }); |
1096 } | 1103 } |
1097 | 1104 |
1098 /** | 1105 /** |
| 1106 * Return a set of contexts containing all of the resources in the given list |
| 1107 * of [resources]. |
| 1108 */ |
| 1109 Set<AnalysisContext> _getContexts(List<Resource> resources) { |
| 1110 Set<AnalysisContext> contexts = new HashSet<AnalysisContext>(); |
| 1111 resources.forEach((Resource resource) { |
| 1112 if (resource is Folder) { |
| 1113 contexts.addAll(contextDirectoryManager.contextsInAnalysisRoot(resource)
); |
| 1114 } |
| 1115 }); |
| 1116 return contexts; |
| 1117 } |
| 1118 |
| 1119 /** |
1099 * Returns the [CompilationUnit] of the Dart file with the given [source] that | 1120 * Returns the [CompilationUnit] of the Dart file with the given [source] that |
1100 * should be used to resend notifications for already resolved unit. | 1121 * should be used to resend notifications for already resolved unit. |
1101 * Returns `null` if the file is not a part of any context, library has not | 1122 * Returns `null` if the file is not a part of any context, library has not |
1102 * been yet resolved, or any problem happened. | 1123 * been yet resolved, or any problem happened. |
1103 */ | 1124 */ |
1104 CompilationUnit _getResolvedCompilationUnitToResendNotification( | 1125 CompilationUnit _getResolvedCompilationUnitToResendNotification( |
1105 AnalysisContext context, Source source) { | 1126 AnalysisContext context, Source source) { |
1106 List<Source> librarySources = context.getLibrariesContaining(source); | 1127 List<Source> librarySources = context.getLibrariesContaining(source); |
1107 if (librarySources.isEmpty) { | 1128 if (librarySources.isEmpty) { |
1108 return null; | 1129 return null; |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1423 /** | 1444 /** |
1424 * The [PerformanceTag] for time spent in server request handlers. | 1445 * The [PerformanceTag] for time spent in server request handlers. |
1425 */ | 1446 */ |
1426 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); | 1447 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); |
1427 | 1448 |
1428 /** | 1449 /** |
1429 * The [PerformanceTag] for time spent in split store microtasks. | 1450 * The [PerformanceTag] for time spent in split store microtasks. |
1430 */ | 1451 */ |
1431 static PerformanceTag splitStore = new PerformanceTag('splitStore'); | 1452 static PerformanceTag splitStore = new PerformanceTag('splitStore'); |
1432 } | 1453 } |
OLD | NEW |