| 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 25 matching lines...) Expand all Loading... |
| 36 void scheduleNotificationOperations(AnalysisServer server, String file, | 36 void scheduleNotificationOperations(AnalysisServer server, String file, |
| 37 LineInfo lineInfo, AnalysisContext context, CompilationUnit parsedDartUnit, | 37 LineInfo lineInfo, AnalysisContext context, CompilationUnit parsedDartUnit, |
| 38 CompilationUnit resolvedDartUnit, List<AnalysisError> errors) { | 38 CompilationUnit resolvedDartUnit, List<AnalysisError> errors) { |
| 39 // Dart | 39 // Dart |
| 40 CompilationUnit dartUnit = | 40 CompilationUnit dartUnit = |
| 41 resolvedDartUnit != null ? resolvedDartUnit : parsedDartUnit; | 41 resolvedDartUnit != null ? resolvedDartUnit : parsedDartUnit; |
| 42 if (resolvedDartUnit != null) { | 42 if (resolvedDartUnit != null) { |
| 43 if (server.hasAnalysisSubscription( | 43 if (server.hasAnalysisSubscription( |
| 44 protocol.AnalysisService.HIGHLIGHTS, file)) { | 44 protocol.AnalysisService.HIGHLIGHTS, file)) { |
| 45 server.scheduleOperation( | 45 server.scheduleOperation( |
| 46 new _DartHighlightsOperation(file, resolvedDartUnit)); | 46 new _DartHighlightsOperation(context, file, resolvedDartUnit)); |
| 47 } | 47 } |
| 48 if (server.hasAnalysisSubscription( | 48 if (server.hasAnalysisSubscription( |
| 49 protocol.AnalysisService.NAVIGATION, file)) { | 49 protocol.AnalysisService.NAVIGATION, file)) { |
| 50 server.scheduleOperation( | 50 server.scheduleOperation( |
| 51 new _DartNavigationOperation(file, resolvedDartUnit)); | 51 new _DartNavigationOperation(context, file, resolvedDartUnit)); |
| 52 } | 52 } |
| 53 if (server.hasAnalysisSubscription( | 53 if (server.hasAnalysisSubscription( |
| 54 protocol.AnalysisService.OCCURRENCES, file)) { | 54 protocol.AnalysisService.OCCURRENCES, file)) { |
| 55 server.scheduleOperation( | 55 server.scheduleOperation( |
| 56 new _DartOccurrencesOperation(file, resolvedDartUnit)); | 56 new _DartOccurrencesOperation(context, file, resolvedDartUnit)); |
| 57 } | 57 } |
| 58 if (server.hasAnalysisSubscription( | 58 if (server.hasAnalysisSubscription( |
| 59 protocol.AnalysisService.OVERRIDES, file)) { | 59 protocol.AnalysisService.OVERRIDES, file)) { |
| 60 server.scheduleOperation( | 60 server.scheduleOperation( |
| 61 new _DartOverridesOperation(file, resolvedDartUnit)); | 61 new _DartOverridesOperation(context, file, resolvedDartUnit)); |
| 62 } | 62 } |
| 63 } | 63 } |
| 64 if (dartUnit != null) { | 64 if (dartUnit != null) { |
| 65 if (server.hasAnalysisSubscription( | 65 if (server.hasAnalysisSubscription( |
| 66 protocol.AnalysisService.OUTLINE, file)) { | 66 protocol.AnalysisService.OUTLINE, file)) { |
| 67 server.scheduleOperation( | 67 server.scheduleOperation( |
| 68 new _DartOutlineOperation(file, lineInfo, dartUnit)); | 68 new _DartOutlineOperation(context, file, lineInfo, dartUnit)); |
| 69 } | 69 } |
| 70 } | 70 } |
| 71 // errors | 71 // errors |
| 72 if (server.shouldSendErrorsNotificationFor(file)) { | 72 if (server.shouldSendErrorsNotificationFor(file)) { |
| 73 server.scheduleOperation( | 73 server.scheduleOperation( |
| 74 new _NotificationErrorsOperation(file, lineInfo, errors)); | 74 new _NotificationErrorsOperation(context, file, lineInfo, errors)); |
| 75 } | 75 } |
| 76 } | 76 } |
| 77 | 77 |
| 78 void sendAnalysisNotificationErrors(AnalysisServer server, String file, | 78 void sendAnalysisNotificationErrors(AnalysisServer server, String file, |
| 79 LineInfo lineInfo, List<AnalysisError> errors) { | 79 LineInfo lineInfo, List<AnalysisError> errors) { |
| 80 _sendNotification(server, () { | 80 _sendNotification(server, () { |
| 81 if (errors == null) { | 81 if (errors == null) { |
| 82 errors = <AnalysisError>[]; | 82 errors = <AnalysisError>[]; |
| 83 } | 83 } |
| 84 var serverErrors = | 84 var serverErrors = |
| 85 protocol.doAnalysisError_listFromEngine(lineInfo, errors); | 85 protocol.doAnalysisError_listFromEngine(lineInfo, errors); |
| 86 var params = new protocol.AnalysisErrorsParams(file, serverErrors); | 86 var params = new protocol.AnalysisErrorsParams(file, serverErrors); |
| 87 server.sendNotification(params.toNotification()); | 87 server.sendNotification(params.toNotification()); |
| 88 }); | 88 }); |
| 89 } | 89 } |
| 90 | 90 |
| 91 void sendAnalysisNotificationFlushResults( |
| 92 AnalysisServer server, List<String> files) { |
| 93 _sendNotification(server, () { |
| 94 if (files != null && files.isNotEmpty) { |
| 95 var params = new protocol.AnalysisFlushResultsParams(files); |
| 96 server.sendNotification(params.toNotification()); |
| 97 } |
| 98 }); |
| 99 } |
| 100 |
| 91 void sendAnalysisNotificationHighlights( | 101 void sendAnalysisNotificationHighlights( |
| 92 AnalysisServer server, String file, CompilationUnit dartUnit) { | 102 AnalysisServer server, String file, CompilationUnit dartUnit) { |
| 93 _sendNotification(server, () { | 103 _sendNotification(server, () { |
| 94 var regions = new DartUnitHighlightsComputer(dartUnit).compute(); | 104 var regions = new DartUnitHighlightsComputer(dartUnit).compute(); |
| 95 var params = new protocol.AnalysisHighlightsParams(file, regions); | 105 var params = new protocol.AnalysisHighlightsParams(file, regions); |
| 96 server.sendNotification(params.toNotification()); | 106 server.sendNotification(params.toNotification()); |
| 97 }); | 107 }); |
| 98 } | 108 } |
| 99 | 109 |
| 100 void sendAnalysisNotificationNavigation( | 110 void sendAnalysisNotificationNavigation( |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 }); | 159 }); |
| 150 } | 160 } |
| 151 | 161 |
| 152 /** | 162 /** |
| 153 * Instances of [PerformAnalysisOperation] perform a single analysis task. | 163 * Instances of [PerformAnalysisOperation] perform a single analysis task. |
| 154 */ | 164 */ |
| 155 class PerformAnalysisOperation extends ServerOperation { | 165 class PerformAnalysisOperation extends ServerOperation { |
| 156 static const int IDLE_CACHE_SIZE = AnalysisOptionsImpl.DEFAULT_CACHE_SIZE; | 166 static const int IDLE_CACHE_SIZE = AnalysisOptionsImpl.DEFAULT_CACHE_SIZE; |
| 157 static const int WORKING_CACHE_SIZE = 512; | 167 static const int WORKING_CACHE_SIZE = 512; |
| 158 | 168 |
| 159 final AnalysisContext context; | |
| 160 final bool isContinue; | 169 final bool isContinue; |
| 161 | 170 |
| 162 PerformAnalysisOperation(this.context, this.isContinue); | 171 PerformAnalysisOperation(AnalysisContext context, this.isContinue) |
| 172 : super(context); |
| 163 | 173 |
| 164 @override | 174 @override |
| 165 ServerOperationPriority get priority { | 175 ServerOperationPriority get priority { |
| 166 if (_isPriorityContext) { | 176 if (_isPriorityContext) { |
| 167 if (isContinue) { | 177 if (isContinue) { |
| 168 return ServerOperationPriority.PRIORITY_ANALYSIS_CONTINUE; | 178 return ServerOperationPriority.PRIORITY_ANALYSIS_CONTINUE; |
| 169 } else { | 179 } else { |
| 170 return ServerOperationPriority.PRIORITY_ANALYSIS; | 180 return ServerOperationPriority.PRIORITY_ANALYSIS; |
| 171 } | 181 } |
| 172 } else { | 182 } else { |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 server.addOperation(new _HtmlIndexOperation(context, file, htmlUnit)); | 269 server.addOperation(new _HtmlIndexOperation(context, file, htmlUnit)); |
| 260 } | 270 } |
| 261 } catch (exception, stackTrace) { | 271 } catch (exception, stackTrace) { |
| 262 server.sendServerErrorNotification(exception, stackTrace); | 272 server.sendServerErrorNotification(exception, stackTrace); |
| 263 } | 273 } |
| 264 } | 274 } |
| 265 } | 275 } |
| 266 } | 276 } |
| 267 | 277 |
| 268 class _DartHighlightsOperation extends _DartNotificationOperation { | 278 class _DartHighlightsOperation extends _DartNotificationOperation { |
| 269 _DartHighlightsOperation(String file, CompilationUnit unit) | 279 _DartHighlightsOperation( |
| 270 : super(file, unit); | 280 AnalysisContext context, String file, CompilationUnit unit) |
| 281 : super(context, file, unit); |
| 271 | 282 |
| 272 @override | 283 @override |
| 273 void perform(AnalysisServer server) { | 284 void perform(AnalysisServer server) { |
| 274 sendAnalysisNotificationHighlights(server, file, unit); | 285 sendAnalysisNotificationHighlights(server, file, unit); |
| 275 } | 286 } |
| 276 } | 287 } |
| 277 | 288 |
| 278 class _DartIndexOperation extends _SingleFileOperation { | 289 class _DartIndexOperation extends _SingleFileOperation { |
| 279 final AnalysisContext context; | |
| 280 final CompilationUnit unit; | 290 final CompilationUnit unit; |
| 281 | 291 |
| 282 _DartIndexOperation(this.context, String file, this.unit) : super(file); | 292 _DartIndexOperation(AnalysisContext context, String file, this.unit) |
| 293 : super(context, file); |
| 283 | 294 |
| 284 @override | 295 @override |
| 285 ServerOperationPriority get priority { | 296 ServerOperationPriority get priority { |
| 286 return ServerOperationPriority.ANALYSIS_INDEX; | 297 return ServerOperationPriority.ANALYSIS_INDEX; |
| 287 } | 298 } |
| 288 | 299 |
| 289 @override | 300 @override |
| 290 void perform(AnalysisServer server) { | 301 void perform(AnalysisServer server) { |
| 291 ServerPerformanceStatistics.indexOperation.makeCurrentWhile(() { | 302 ServerPerformanceStatistics.indexOperation.makeCurrentWhile(() { |
| 292 Index index = server.index; | 303 Index index = server.index; |
| 293 index.indexUnit(context, unit); | 304 index.indexUnit(context, unit); |
| 294 }); | 305 }); |
| 295 } | 306 } |
| 296 } | 307 } |
| 297 | 308 |
| 298 class _DartNavigationOperation extends _DartNotificationOperation { | 309 class _DartNavigationOperation extends _DartNotificationOperation { |
| 299 _DartNavigationOperation(String file, CompilationUnit unit) | 310 _DartNavigationOperation( |
| 300 : super(file, unit); | 311 AnalysisContext context, String file, CompilationUnit unit) |
| 312 : super(context, file, unit); |
| 301 | 313 |
| 302 @override | 314 @override |
| 303 void perform(AnalysisServer server) { | 315 void perform(AnalysisServer server) { |
| 304 sendAnalysisNotificationNavigation(server, file, unit); | 316 sendAnalysisNotificationNavigation(server, file, unit); |
| 305 } | 317 } |
| 306 } | 318 } |
| 307 | 319 |
| 308 abstract class _DartNotificationOperation extends _SingleFileOperation { | 320 abstract class _DartNotificationOperation extends _SingleFileOperation { |
| 309 final CompilationUnit unit; | 321 final CompilationUnit unit; |
| 310 | 322 |
| 311 _DartNotificationOperation(String file, this.unit) : super(file); | 323 _DartNotificationOperation(AnalysisContext context, String file, this.unit) |
| 324 : super(context, file); |
| 312 | 325 |
| 313 @override | 326 @override |
| 314 ServerOperationPriority get priority { | 327 ServerOperationPriority get priority { |
| 315 return ServerOperationPriority.ANALYSIS_NOTIFICATION; | 328 return ServerOperationPriority.ANALYSIS_NOTIFICATION; |
| 316 } | 329 } |
| 317 } | 330 } |
| 318 | 331 |
| 319 class _DartOccurrencesOperation extends _DartNotificationOperation { | 332 class _DartOccurrencesOperation extends _DartNotificationOperation { |
| 320 _DartOccurrencesOperation(String file, CompilationUnit unit) | 333 _DartOccurrencesOperation( |
| 321 : super(file, unit); | 334 AnalysisContext context, String file, CompilationUnit unit) |
| 335 : super(context, file, unit); |
| 322 | 336 |
| 323 @override | 337 @override |
| 324 void perform(AnalysisServer server) { | 338 void perform(AnalysisServer server) { |
| 325 sendAnalysisNotificationOccurrences(server, file, unit); | 339 sendAnalysisNotificationOccurrences(server, file, unit); |
| 326 } | 340 } |
| 327 } | 341 } |
| 328 | 342 |
| 329 class _DartOutlineOperation extends _DartNotificationOperation { | 343 class _DartOutlineOperation extends _DartNotificationOperation { |
| 330 final LineInfo lineInfo; | 344 final LineInfo lineInfo; |
| 331 | 345 |
| 332 _DartOutlineOperation(String file, this.lineInfo, CompilationUnit unit) | 346 _DartOutlineOperation( |
| 333 : super(file, unit); | 347 AnalysisContext context, String file, this.lineInfo, CompilationUnit unit) |
| 348 : super(context, file, unit); |
| 334 | 349 |
| 335 @override | 350 @override |
| 336 void perform(AnalysisServer server) { | 351 void perform(AnalysisServer server) { |
| 337 sendAnalysisNotificationOutline(server, file, lineInfo, unit); | 352 sendAnalysisNotificationOutline(server, file, lineInfo, unit); |
| 338 } | 353 } |
| 339 } | 354 } |
| 340 | 355 |
| 341 class _DartOverridesOperation extends _DartNotificationOperation { | 356 class _DartOverridesOperation extends _DartNotificationOperation { |
| 342 _DartOverridesOperation(String file, CompilationUnit unit) | 357 _DartOverridesOperation( |
| 343 : super(file, unit); | 358 AnalysisContext context, String file, CompilationUnit unit) |
| 359 : super(context, file, unit); |
| 344 | 360 |
| 345 @override | 361 @override |
| 346 void perform(AnalysisServer server) { | 362 void perform(AnalysisServer server) { |
| 347 sendAnalysisNotificationOverrides(server, file, unit); | 363 sendAnalysisNotificationOverrides(server, file, unit); |
| 348 } | 364 } |
| 349 } | 365 } |
| 350 | 366 |
| 351 class _HtmlIndexOperation extends _SingleFileOperation { | 367 class _HtmlIndexOperation extends _SingleFileOperation { |
| 352 final AnalysisContext context; | |
| 353 final HtmlUnit unit; | 368 final HtmlUnit unit; |
| 354 | 369 |
| 355 _HtmlIndexOperation(this.context, String file, this.unit) : super(file); | 370 _HtmlIndexOperation(AnalysisContext context, String file, this.unit) |
| 371 : super(context, file); |
| 356 | 372 |
| 357 @override | 373 @override |
| 358 ServerOperationPriority get priority { | 374 ServerOperationPriority get priority { |
| 359 return ServerOperationPriority.ANALYSIS_INDEX; | 375 return ServerOperationPriority.ANALYSIS_INDEX; |
| 360 } | 376 } |
| 361 | 377 |
| 362 @override | 378 @override |
| 363 void perform(AnalysisServer server) { | 379 void perform(AnalysisServer server) { |
| 364 Index index = server.index; | 380 Index index = server.index; |
| 365 index.indexHtmlUnit(context, unit); | 381 index.indexHtmlUnit(context, unit); |
| 366 } | 382 } |
| 367 } | 383 } |
| 368 | 384 |
| 369 class _NotificationErrorsOperation extends _SingleFileOperation { | 385 class _NotificationErrorsOperation extends _SingleFileOperation { |
| 370 final LineInfo lineInfo; | 386 final LineInfo lineInfo; |
| 371 final List<AnalysisError> errors; | 387 final List<AnalysisError> errors; |
| 372 | 388 |
| 373 _NotificationErrorsOperation(String file, this.lineInfo, this.errors) | 389 _NotificationErrorsOperation( |
| 374 : super(file); | 390 AnalysisContext context, String file, this.lineInfo, this.errors) |
| 391 : super(context, file); |
| 375 | 392 |
| 376 @override | 393 @override |
| 377 ServerOperationPriority get priority { | 394 ServerOperationPriority get priority { |
| 378 return ServerOperationPriority.ANALYSIS_NOTIFICATION; | 395 return ServerOperationPriority.ANALYSIS_NOTIFICATION; |
| 379 } | 396 } |
| 380 | 397 |
| 381 @override | 398 @override |
| 382 void perform(AnalysisServer server) { | 399 void perform(AnalysisServer server) { |
| 383 sendAnalysisNotificationErrors(server, file, lineInfo, errors); | 400 sendAnalysisNotificationErrors(server, file, lineInfo, errors); |
| 384 } | 401 } |
| 385 } | 402 } |
| 386 | 403 |
| 387 abstract class _SingleFileOperation extends SourceSensitiveOperation { | 404 abstract class _SingleFileOperation extends SourceSensitiveOperation { |
| 388 final String file; | 405 final String file; |
| 389 | 406 |
| 390 _SingleFileOperation(this.file); | 407 _SingleFileOperation(AnalysisContext context, this.file) : super(context); |
| 391 | 408 |
| 392 @override | 409 @override |
| 393 bool shouldBeDiscardedOnSourceChange(Source source) { | 410 bool shouldBeDiscardedOnSourceChange(Source source) { |
| 394 return source.fullName == file; | 411 return source.fullName == file; |
| 395 } | 412 } |
| 396 } | 413 } |
| OLD | NEW |