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