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

Side by Side Diff: pkg/analysis_server/lib/src/operation/operation_analysis.dart

Issue 1008443002: Cherry-pick r44373, r44378, and r44275. (Closed) Base URL: https://dart.googlecode.com/svn/trunk/dart
Patch Set: Created 5 years, 9 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 | Annotate | Revision Log
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 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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/operation/operation.dart ('k') | pkg/analysis_server/lib/src/operation/operation_queue.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698