| 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 operation.analysis; | 5 library operation.analysis; |
| 6 | 6 |
| 7 import 'package:analysis_server/src/analysis_server.dart'; | 7 import 'package:analysis_server/src/analysis_server.dart'; |
| 8 import 'package:analysis_server/src/computer/computer_highlights.dart'; | 8 import 'package:analysis_server/src/computer/computer_highlights.dart'; |
| 9 import 'package:analysis_server/src/computer/computer_navigation.dart'; | 9 import 'package:analysis_server/src/computer/computer_navigation.dart'; |
| 10 import 'package:analysis_server/src/computer/computer_occurrences.dart'; | 10 import 'package:analysis_server/src/computer/computer_occurrences.dart'; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 // errors | 77 // errors |
| 78 if (server.shouldSendErrorsNotificationFor(file)) { | 78 if (server.shouldSendErrorsNotificationFor(file)) { |
| 79 server.scheduleOperation( | 79 server.scheduleOperation( |
| 80 new _NotificationErrorsOperation(file, lineInfo, errors)); | 80 new _NotificationErrorsOperation(file, lineInfo, errors)); |
| 81 } | 81 } |
| 82 } | 82 } |
| 83 | 83 |
| 84 | 84 |
| 85 void sendAnalysisNotificationErrors(AnalysisServer server, String file, | 85 void sendAnalysisNotificationErrors(AnalysisServer server, String file, |
| 86 LineInfo lineInfo, List<AnalysisError> errors) { | 86 LineInfo lineInfo, List<AnalysisError> errors) { |
| 87 try { | 87 _sendNotification(server, () { |
| 88 if (errors == null) { | 88 if (errors == null) { |
| 89 errors = <AnalysisError>[]; | 89 errors = <AnalysisError>[]; |
| 90 } | 90 } |
| 91 var serverErrors = | 91 var serverErrors = |
| 92 protocol.doAnalysisError_listFromEngine(lineInfo, errors); | 92 protocol.doAnalysisError_listFromEngine(lineInfo, errors); |
| 93 var params = new protocol.AnalysisErrorsParams(file, serverErrors); | 93 var params = new protocol.AnalysisErrorsParams(file, serverErrors); |
| 94 server.sendNotification(params.toNotification()); | 94 server.sendNotification(params.toNotification()); |
| 95 } catch (exception, stackTrace) { | 95 }); |
| 96 server.sendServerErrorNotification(exception, stackTrace); | |
| 97 } | |
| 98 } | 96 } |
| 99 | 97 |
| 100 | |
| 101 void sendAnalysisNotificationHighlights(AnalysisServer server, String file, | 98 void sendAnalysisNotificationHighlights(AnalysisServer server, String file, |
| 102 CompilationUnit dartUnit) { | 99 CompilationUnit dartUnit) { |
| 103 try { | 100 _sendNotification(server, () { |
| 104 var regions = new DartUnitHighlightsComputer(dartUnit).compute(); | 101 var regions = new DartUnitHighlightsComputer(dartUnit).compute(); |
| 105 var params = new protocol.AnalysisHighlightsParams(file, regions); | 102 var params = new protocol.AnalysisHighlightsParams(file, regions); |
| 106 server.sendNotification(params.toNotification()); | 103 server.sendNotification(params.toNotification()); |
| 107 } catch (exception, stackTrace) { | 104 }); |
| 108 server.sendServerErrorNotification(exception, stackTrace); | |
| 109 } | |
| 110 } | 105 } |
| 111 | 106 |
| 112 | 107 |
| 113 void sendAnalysisNotificationNavigation(AnalysisServer server, String file, | 108 void sendAnalysisNotificationNavigation(AnalysisServer server, String file, |
| 114 CompilationUnit dartUnit) { | 109 CompilationUnit dartUnit) { |
| 115 try { | 110 _sendNotification(server, () { |
| 116 var computer = new DartUnitNavigationComputer(dartUnit); | 111 var computer = new DartUnitNavigationComputer(dartUnit); |
| 117 computer.compute(); | 112 computer.compute(); |
| 118 var params = new protocol.AnalysisNavigationParams( | 113 var params = new protocol.AnalysisNavigationParams( |
| 119 file, | 114 file, |
| 120 computer.regions, | 115 computer.regions, |
| 121 computer.targets, | 116 computer.targets, |
| 122 computer.files); | 117 computer.files); |
| 123 server.sendNotification(params.toNotification()); | 118 server.sendNotification(params.toNotification()); |
| 124 } catch (exception, stackTrace) { | 119 }); |
| 125 server.sendServerErrorNotification(exception, stackTrace); | |
| 126 } | |
| 127 } | 120 } |
| 128 | 121 |
| 129 | 122 |
| 130 void sendAnalysisNotificationOccurrences(AnalysisServer server, String file, | 123 void sendAnalysisNotificationOccurrences(AnalysisServer server, String file, |
| 131 CompilationUnit dartUnit) { | 124 CompilationUnit dartUnit) { |
| 132 try { | 125 _sendNotification(server, () { |
| 133 var occurrences = new DartUnitOccurrencesComputer(dartUnit).compute(); | 126 var occurrences = new DartUnitOccurrencesComputer(dartUnit).compute(); |
| 134 var params = new protocol.AnalysisOccurrencesParams(file, occurrences); | 127 var params = new protocol.AnalysisOccurrencesParams(file, occurrences); |
| 135 server.sendNotification(params.toNotification()); | 128 server.sendNotification(params.toNotification()); |
| 136 } catch (exception, stackTrace) { | 129 }); |
| 137 server.sendServerErrorNotification(exception, stackTrace); | |
| 138 } | |
| 139 } | 130 } |
| 140 | 131 |
| 141 | 132 |
| 142 void sendAnalysisNotificationOutline(AnalysisServer server, String file, | 133 void sendAnalysisNotificationOutline(AnalysisServer server, String file, |
| 143 LineInfo lineInfo, CompilationUnit dartUnit) { | 134 LineInfo lineInfo, CompilationUnit dartUnit) { |
| 144 try { | 135 _sendNotification(server, () { |
| 145 var computer = new DartUnitOutlineComputer(file, lineInfo, dartUnit); | 136 var computer = new DartUnitOutlineComputer(file, lineInfo, dartUnit); |
| 146 var outline = computer.compute(); | 137 var outline = computer.compute(); |
| 147 var params = new protocol.AnalysisOutlineParams(file, outline); | 138 var params = new protocol.AnalysisOutlineParams(file, outline); |
| 148 server.sendNotification(params.toNotification()); | 139 server.sendNotification(params.toNotification()); |
| 149 } catch (exception, stackTrace) { | 140 }); |
| 150 server.sendServerErrorNotification(exception, stackTrace); | |
| 151 } | |
| 152 } | 141 } |
| 153 | 142 |
| 154 | 143 |
| 155 void sendAnalysisNotificationOverrides(AnalysisServer server, String file, | 144 void sendAnalysisNotificationOverrides(AnalysisServer server, String file, |
| 156 CompilationUnit dartUnit) { | 145 CompilationUnit dartUnit) { |
| 157 try { | 146 _sendNotification(server, () { |
| 158 var overrides = new DartUnitOverridesComputer(dartUnit).compute(); | 147 var overrides = new DartUnitOverridesComputer(dartUnit).compute(); |
| 159 var params = new protocol.AnalysisOverridesParams(file, overrides); | 148 var params = new protocol.AnalysisOverridesParams(file, overrides); |
| 160 server.sendNotification(params.toNotification()); | 149 server.sendNotification(params.toNotification()); |
| 161 } catch (exception, stackTrace) { | 150 }); |
| 162 server.sendServerErrorNotification(exception, stackTrace); | |
| 163 } | |
| 164 } | 151 } |
| 165 | 152 |
| 166 | 153 |
| 154 /** |
| 155 * Runs the given notification producing function [f], catching exceptions. |
| 156 */ |
| 157 void _sendNotification(AnalysisServer server, f()) { |
| 158 ServerPerformanceStatistics.notices.makeCurrentWhile(() { |
| 159 try { |
| 160 f(); |
| 161 } catch (exception, stackTrace) { |
| 162 server.sendServerErrorNotification(exception, stackTrace); |
| 163 } |
| 164 }); |
| 165 } |
| 166 |
| 167 |
| 167 /** | 168 /** |
| 168 * Instances of [PerformAnalysisOperation] perform a single analysis task. | 169 * Instances of [PerformAnalysisOperation] perform a single analysis task. |
| 169 */ | 170 */ |
| 170 class PerformAnalysisOperation extends ServerOperation { | 171 class PerformAnalysisOperation extends ServerOperation { |
| 171 static const int IDLE_CACHE_SIZE = AnalysisOptionsImpl.DEFAULT_CACHE_SIZE; | 172 static const int IDLE_CACHE_SIZE = AnalysisOptionsImpl.DEFAULT_CACHE_SIZE; |
| 172 static const int WORKING_CACHE_SIZE = 512; | 173 static const int WORKING_CACHE_SIZE = 512; |
| 173 | 174 |
| 174 final AnalysisContext context; | 175 final AnalysisContext context; |
| 175 final bool isContinue; | 176 final bool isContinue; |
| 176 | 177 |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 abstract class _SingleFileOperation extends SourceSensitiveOperation { | 422 abstract class _SingleFileOperation extends SourceSensitiveOperation { |
| 422 final String file; | 423 final String file; |
| 423 | 424 |
| 424 _SingleFileOperation(this.file); | 425 _SingleFileOperation(this.file); |
| 425 | 426 |
| 426 @override | 427 @override |
| 427 bool shouldBeDiscardedOnSourceChange(Source source) { | 428 bool shouldBeDiscardedOnSourceChange(Source source) { |
| 428 return source.fullName == file; | 429 return source.fullName == file; |
| 429 } | 430 } |
| 430 } | 431 } |
| OLD | NEW |