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 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 Loading... |
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 Map<String, List<String>> sources = new ReachableSourceCollector( |
| 176 pair.source, pair.context).collectSources(); |
| 177 return new AnalysisGetReachableSourcesResult(sources) |
| 178 .toResponse(request.id); |
| 179 } |
| 180 |
167 @override | 181 @override |
168 Response handleRequest(Request request) { | 182 Response handleRequest(Request request) { |
169 try { | 183 try { |
170 String requestName = request.method; | 184 String requestName = request.method; |
171 if (requestName == ANALYSIS_GET_ERRORS) { | 185 if (requestName == ANALYSIS_GET_ERRORS) { |
172 return getErrors(request); | 186 return getErrors(request); |
173 } else if (requestName == ANALYSIS_GET_HOVER) { | 187 } else if (requestName == ANALYSIS_GET_HOVER) { |
174 return getHover(request); | 188 return getHover(request); |
175 } else if (requestName == ANALYSIS_GET_LIBRARY_DEPENDENCIES) { | 189 } else if (requestName == ANALYSIS_GET_LIBRARY_DEPENDENCIES) { |
176 return getLibraryDependencies(request); | 190 return getLibraryDependencies(request); |
177 } else if (requestName == ANALYSIS_GET_NAVIGATION) { | 191 } else if (requestName == ANALYSIS_GET_NAVIGATION) { |
178 return getNavigation(request); | 192 return getNavigation(request); |
| 193 } else if (requestName == ANALYSIS_GET_REACHABLE_SOURCES) { |
| 194 return getReachableSources(request); |
179 } else if (requestName == ANALYSIS_REANALYZE) { | 195 } else if (requestName == ANALYSIS_REANALYZE) { |
180 return reanalyze(request); | 196 return reanalyze(request); |
181 } else if (requestName == ANALYSIS_SET_ANALYSIS_ROOTS) { | 197 } else if (requestName == ANALYSIS_SET_ANALYSIS_ROOTS) { |
182 return setAnalysisRoots(request); | 198 return setAnalysisRoots(request); |
183 } else if (requestName == ANALYSIS_SET_GENERAL_SUBSCRIPTIONS) { | 199 } else if (requestName == ANALYSIS_SET_GENERAL_SUBSCRIPTIONS) { |
184 return setGeneralSubscriptions(request); | 200 return setGeneralSubscriptions(request); |
185 } else if (requestName == ANALYSIS_SET_PRIORITY_FILES) { | 201 } else if (requestName == ANALYSIS_SET_PRIORITY_FILES) { |
186 return setPriorityFiles(request); | 202 return setPriorityFiles(request); |
187 } else if (requestName == ANALYSIS_SET_SUBSCRIPTIONS) { | 203 } else if (requestName == ANALYSIS_SET_SUBSCRIPTIONS) { |
188 return setSubscriptions(request); | 204 return setSubscriptions(request); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 context.onResultComputed(descriptor).listen((result) { | 383 context.onResultComputed(descriptor).listen((result) { |
368 StreamController<engine.ComputedResult> controller = | 384 StreamController<engine.ComputedResult> controller = |
369 controllers[result.descriptor]; | 385 controllers[result.descriptor]; |
370 if (controller != null) { | 386 if (controller != null) { |
371 controller.add(result); | 387 controller.add(result); |
372 } | 388 } |
373 }); | 389 }); |
374 } | 390 } |
375 } | 391 } |
376 } | 392 } |
OLD | NEW |