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

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

Issue 1303033010: Navigation extension point. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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
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_highlights2.dart'; 9 import 'package:analysis_server/src/computer/computer_highlights2.dart';
10 import 'package:analysis_server/src/computer/computer_navigation.dart';
11 import 'package:analysis_server/src/computer/computer_occurrences.dart'; 10 import 'package:analysis_server/src/computer/computer_occurrences.dart';
12 import 'package:analysis_server/src/computer/computer_outline.dart'; 11 import 'package:analysis_server/src/computer/computer_outline.dart';
13 import 'package:analysis_server/src/computer/computer_overrides.dart'; 12 import 'package:analysis_server/src/computer/computer_overrides.dart';
14 import 'package:analysis_server/src/operation/operation.dart'; 13 import 'package:analysis_server/src/operation/operation.dart';
15 import 'package:analysis_server/src/protocol_server.dart' as protocol; 14 import 'package:analysis_server/src/protocol_server.dart' as protocol;
16 import 'package:analysis_server/src/services/dependencies/library_dependencies.d art'; 15 import 'package:analysis_server/src/services/dependencies/library_dependencies.d art';
17 import 'package:analysis_server/src/services/index/index.dart'; 16 import 'package:analysis_server/src/services/index/index.dart';
18 import 'package:analyzer/src/generated/ast.dart'; 17 import 'package:analyzer/src/generated/ast.dart';
19 import 'package:analyzer/src/generated/engine.dart'; 18 import 'package:analyzer/src/generated/engine.dart';
20 import 'package:analyzer/src/generated/error.dart'; 19 import 'package:analyzer/src/generated/error.dart';
21 import 'package:analyzer/src/generated/html.dart'; 20 import 'package:analyzer/src/generated/html.dart';
22 import 'package:analyzer/src/generated/source.dart'; 21 import 'package:analyzer/src/generated/source.dart';
22 import 'package:analysis_server/src/domains/analysis/navigation.dart';
23 import 'package:analysis_server/analysis/navigation/navigation_core.dart';
23 24
24 /** 25 /**
25 * Runs the given function [f] with the working cache size in [context]. 26 * Runs the given function [f] with the working cache size in [context].
26 * Returns the result of [f] invocation. 27 * Returns the result of [f] invocation.
27 */ 28 */
28 runWithWorkingCacheSize(AnalysisContext context, f()) { 29 runWithWorkingCacheSize(AnalysisContext context, f()) {
29 int currentCacheSize = context.analysisOptions.cacheSize; 30 int currentCacheSize = context.analysisOptions.cacheSize;
30 if (currentCacheSize < PerformAnalysisOperation.WORKING_CACHE_SIZE) { 31 if (currentCacheSize < PerformAnalysisOperation.WORKING_CACHE_SIZE) {
31 setCacheSize(context, PerformAnalysisOperation.WORKING_CACHE_SIZE); 32 setCacheSize(context, PerformAnalysisOperation.WORKING_CACHE_SIZE);
32 try { 33 try {
(...skipping 13 matching lines...) Expand all
46 AnalysisContext context, CompilationUnit dartUnit) { 47 AnalysisContext context, CompilationUnit dartUnit) {
47 if (server.index != null) { 48 if (server.index != null) {
48 server.addOperation(new _DartIndexOperation(context, file, dartUnit)); 49 server.addOperation(new _DartIndexOperation(context, file, dartUnit));
49 } 50 }
50 } 51 }
51 52
52 /** 53 /**
53 * Schedules sending notifications for the given [file] using the resolved 54 * Schedules sending notifications for the given [file] using the resolved
54 * [resolvedDartUnit]. 55 * [resolvedDartUnit].
55 */ 56 */
56 void scheduleNotificationOperations(AnalysisServer server, String file, 57 void scheduleNotificationOperations(
57 LineInfo lineInfo, AnalysisContext context, CompilationUnit parsedDartUnit, 58 AnalysisServer server,
58 CompilationUnit resolvedDartUnit, List<AnalysisError> errors) { 59 String file,
60 LineInfo lineInfo,
61 AnalysisContext context,
62 CompilationUnit parsedDartUnit,
63 CompilationUnit resolvedDartUnit,
64 List<AnalysisError> errors) {
59 // If the file belongs to any analysis root, check whether we're in it now. 65 // If the file belongs to any analysis root, check whether we're in it now.
60 AnalysisContext containingContext = server.getContainingContext(file); 66 AnalysisContext containingContext = server.getContainingContext(file);
61 if (containingContext != null && context != containingContext) { 67 if (containingContext != null && context != containingContext) {
62 return; 68 return;
63 } 69 }
64 // Dart 70 // Dart
65 CompilationUnit dartUnit = 71 CompilationUnit dartUnit =
66 resolvedDartUnit != null ? resolvedDartUnit : parsedDartUnit; 72 resolvedDartUnit != null ? resolvedDartUnit : parsedDartUnit;
67 if (resolvedDartUnit != null) { 73 if (resolvedDartUnit != null) {
68 if (server.hasAnalysisSubscription( 74 if (server.hasAnalysisSubscription(
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 regions = new DartUnitHighlightsComputer2(dartUnit).compute(); 161 regions = new DartUnitHighlightsComputer2(dartUnit).compute();
156 } else { 162 } else {
157 regions = new DartUnitHighlightsComputer(dartUnit).compute(); 163 regions = new DartUnitHighlightsComputer(dartUnit).compute();
158 } 164 }
159 var params = new protocol.AnalysisHighlightsParams(file, regions); 165 var params = new protocol.AnalysisHighlightsParams(file, regions);
160 server.sendNotification(params.toNotification()); 166 server.sendNotification(params.toNotification());
161 }); 167 });
162 } 168 }
163 169
164 void sendAnalysisNotificationNavigation( 170 void sendAnalysisNotificationNavigation(
165 AnalysisServer server, String file, CompilationUnit dartUnit) { 171 AnalysisServer server, AnalysisContext context, Source source) {
166 _sendNotification(server, () { 172 _sendNotification(server, () {
167 var computer = new DartUnitNavigationComputer(); 173 NavigationHolder computer =
168 computer.compute(dartUnit); 174 computeNavigation(server, context, source, null, null);
175 String file = source.fullName;
169 var params = new protocol.AnalysisNavigationParams( 176 var params = new protocol.AnalysisNavigationParams(
170 file, computer.regions, computer.targets, computer.files); 177 file, computer.regions, computer.targets, computer.files);
171 server.sendNotification(params.toNotification()); 178 server.sendNotification(params.toNotification());
172 }); 179 });
173 } 180 }
174 181
175 void sendAnalysisNotificationOccurrences( 182 void sendAnalysisNotificationOccurrences(
176 AnalysisServer server, String file, CompilationUnit dartUnit) { 183 AnalysisServer server, String file, CompilationUnit dartUnit) {
177 _sendNotification(server, () { 184 _sendNotification(server, () {
178 var occurrences = new DartUnitOccurrencesComputer(dartUnit).compute(); 185 var occurrences = new DartUnitOccurrencesComputer(dartUnit).compute();
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 } 381 }
375 } 382 }
376 383
377 class _DartNavigationOperation extends _DartNotificationOperation { 384 class _DartNavigationOperation extends _DartNotificationOperation {
378 _DartNavigationOperation( 385 _DartNavigationOperation(
379 AnalysisContext context, String file, CompilationUnit unit) 386 AnalysisContext context, String file, CompilationUnit unit)
380 : super(context, file, unit); 387 : super(context, file, unit);
381 388
382 @override 389 @override
383 void perform(AnalysisServer server) { 390 void perform(AnalysisServer server) {
384 sendAnalysisNotificationNavigation(server, file, unit); 391 // TODO(scheglov) get rid of "file" and replace it with "source"?
Brian Wilkerson 2015/09/01 14:55:42 Is this done? I don't see a 'file' being reference
392 Source source = unit.element.source;
393 sendAnalysisNotificationNavigation(server, context, source);
385 } 394 }
386 } 395 }
387 396
388 abstract class _DartNotificationOperation extends _SingleFileOperation { 397 abstract class _DartNotificationOperation extends _SingleFileOperation {
389 final CompilationUnit unit; 398 final CompilationUnit unit;
390 399
391 _DartNotificationOperation(AnalysisContext context, String file, this.unit) 400 _DartNotificationOperation(AnalysisContext context, String file, this.unit)
392 : super(context, file); 401 : super(context, file);
393 402
394 @override 403 @override
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 abstract class _SingleFileOperation extends SourceSensitiveOperation { 481 abstract class _SingleFileOperation extends SourceSensitiveOperation {
473 final String file; 482 final String file;
474 483
475 _SingleFileOperation(AnalysisContext context, this.file) : super(context); 484 _SingleFileOperation(AnalysisContext context, this.file) : super(context);
476 485
477 @override 486 @override
478 bool shouldBeDiscardedOnSourceChange(Source source) { 487 bool shouldBeDiscardedOnSourceChange(Source source) {
479 return source.fullName == file; 488 return source.fullName == file;
480 } 489 }
481 } 490 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698