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

Side by Side Diff: pkg/analysis_server/lib/src/domain_analysis.dart

Issue 1491013002: Analysis request `getReachableSources` (#24893). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: spec_bump Created 5 years 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 domain.analysis; 5 library domain.analysis;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:core' hide Resource; 8 import 'dart:core' hide Resource;
9 9
10 import 'package:analysis_server/plugin/analysis/analysis_domain.dart'; 10 import 'package:analysis_server/plugin/analysis/analysis_domain.dart';
11 import 'package:analysis_server/src/analysis_server.dart'; 11 import 'package:analysis_server/src/analysis_server.dart';
12 import 'package:analysis_server/src/computer/computer_hover.dart'; 12 import 'package:analysis_server/src/computer/computer_hover.dart';
13 import 'package:analysis_server/src/constants.dart'; 13 import 'package:analysis_server/src/constants.dart';
14 import 'package:analysis_server/src/context_manager.dart'; 14 import 'package:analysis_server/src/context_manager.dart';
15 import 'package:analysis_server/src/domains/analysis/navigation.dart'; 15 import 'package:analysis_server/src/domains/analysis/navigation.dart';
16 import 'package:analysis_server/src/operation/operation_analysis.dart' 16 import 'package:analysis_server/src/operation/operation_analysis.dart'
17 show 17 show
18 NavigationOperation, 18 NavigationOperation,
19 OccurrencesOperation, 19 OccurrencesOperation,
20 sendAnalysisNotificationNavigation; 20 sendAnalysisNotificationNavigation;
21 import 'package:analysis_server/src/protocol/protocol_internal.dart'; 21 import 'package:analysis_server/src/protocol/protocol_internal.dart';
22 import 'package:analysis_server/src/protocol_server.dart'; 22 import 'package:analysis_server/src/protocol_server.dart';
23 import 'package:analysis_server/src/services/dependencies/library_dependencies.d art'; 23 import 'package:analysis_server/src/services/dependencies/library_dependencies.d art';
24 import 'package:analysis_server/src/services/dependencies/reachable_source_colle ctor.dart';
24 import 'package:analyzer/file_system/file_system.dart'; 25 import 'package:analyzer/file_system/file_system.dart';
25 import 'package:analyzer/src/generated/ast.dart'; 26 import 'package:analyzer/src/generated/ast.dart';
26 import 'package:analyzer/src/generated/element.dart'; 27 import 'package:analyzer/src/generated/element.dart';
27 import 'package:analyzer/src/generated/engine.dart' as engine; 28 import 'package:analyzer/src/generated/engine.dart' as engine;
28 import 'package:analyzer/src/generated/java_engine.dart' show CaughtException; 29 import 'package:analyzer/src/generated/java_engine.dart' show CaughtException;
29 import 'package:analyzer/src/generated/source.dart'; 30 import 'package:analyzer/src/generated/source.dart';
30 import 'package:analyzer/task/model.dart' show ResultDescriptor; 31 import 'package:analyzer/task/model.dart' show ResultDescriptor;
31 32
32 /** 33 /**
33 * Instances of the class [AnalysisDomainHandler] implement a [RequestHandler] 34 * Instances of the class [AnalysisDomainHandler] implement a [RequestHandler]
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 if (response != Response.DELAYED_RESPONSE) { 158 if (response != Response.DELAYED_RESPONSE) {
158 server.sendResponse(response); 159 server.sendResponse(response);
159 } 160 }
160 break; 161 break;
161 } 162 }
162 }); 163 });
163 // delay response 164 // delay response
164 return Response.DELAYED_RESPONSE; 165 return Response.DELAYED_RESPONSE;
165 } 166 }
166 167
168 /**
169 * Implement the `analysis.getReachableSources` request.
170 */
171 Response getReachableSources(Request request) {
172 AnalysisGetReachableSourcesParams params =
173 new AnalysisGetReachableSourcesParams.fromRequest(request);
174 ContextSourcePair pair = server.getContextSourcePair(params.file);
175 if (pair.context == null || pair.source == null) {
176 return new Response.getReachableSourcesInvalidFile(request);
177 }
178 Map<String, List<String>> sources = new ReachableSourceCollector(
179 pair.source, pair.context).collectSources();
180 return new AnalysisGetReachableSourcesResult(sources)
181 .toResponse(request.id);
182 }
183
167 @override 184 @override
168 Response handleRequest(Request request) { 185 Response handleRequest(Request request) {
169 try { 186 try {
170 String requestName = request.method; 187 String requestName = request.method;
171 if (requestName == ANALYSIS_GET_ERRORS) { 188 if (requestName == ANALYSIS_GET_ERRORS) {
172 return getErrors(request); 189 return getErrors(request);
173 } else if (requestName == ANALYSIS_GET_HOVER) { 190 } else if (requestName == ANALYSIS_GET_HOVER) {
174 return getHover(request); 191 return getHover(request);
175 } else if (requestName == ANALYSIS_GET_LIBRARY_DEPENDENCIES) { 192 } else if (requestName == ANALYSIS_GET_LIBRARY_DEPENDENCIES) {
176 return getLibraryDependencies(request); 193 return getLibraryDependencies(request);
177 } else if (requestName == ANALYSIS_GET_NAVIGATION) { 194 } else if (requestName == ANALYSIS_GET_NAVIGATION) {
178 return getNavigation(request); 195 return getNavigation(request);
196 } else if (requestName == ANALYSIS_GET_REACHABLE_SOURCES) {
197 return getReachableSources(request);
179 } else if (requestName == ANALYSIS_REANALYZE) { 198 } else if (requestName == ANALYSIS_REANALYZE) {
180 return reanalyze(request); 199 return reanalyze(request);
181 } else if (requestName == ANALYSIS_SET_ANALYSIS_ROOTS) { 200 } else if (requestName == ANALYSIS_SET_ANALYSIS_ROOTS) {
182 return setAnalysisRoots(request); 201 return setAnalysisRoots(request);
183 } else if (requestName == ANALYSIS_SET_GENERAL_SUBSCRIPTIONS) { 202 } else if (requestName == ANALYSIS_SET_GENERAL_SUBSCRIPTIONS) {
184 return setGeneralSubscriptions(request); 203 return setGeneralSubscriptions(request);
185 } else if (requestName == ANALYSIS_SET_PRIORITY_FILES) { 204 } else if (requestName == ANALYSIS_SET_PRIORITY_FILES) {
186 return setPriorityFiles(request); 205 return setPriorityFiles(request);
187 } else if (requestName == ANALYSIS_SET_SUBSCRIPTIONS) { 206 } else if (requestName == ANALYSIS_SET_SUBSCRIPTIONS) {
188 return setSubscriptions(request); 207 return setSubscriptions(request);
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 context.onResultComputed(descriptor).listen((result) { 386 context.onResultComputed(descriptor).listen((result) {
368 StreamController<engine.ComputedResult> controller = 387 StreamController<engine.ComputedResult> controller =
369 controllers[result.descriptor]; 388 controllers[result.descriptor];
370 if (controller != null) { 389 if (controller != null) {
371 controller.add(result); 390 controller.add(result);
372 } 391 }
373 }); 392 });
374 } 393 }
375 } 394 }
376 } 395 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698