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

Unified Diff: pkg/analysis_server/lib/src/search/search_domain.dart

Issue 1322323005: Support for 'superOnly' in 'search.getTypeHierarchy'. (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/search/type_hierarchy.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/search/search_domain.dart
diff --git a/pkg/analysis_server/lib/src/search/search_domain.dart b/pkg/analysis_server/lib/src/search/search_domain.dart
index 7fba8d8a82bc6dec0fe364884060366ea305f4a3..668077b92e3ab01c9988990b7575b3ead3182f33 100644
--- a/pkg/analysis_server/lib/src/search/search_domain.dart
+++ b/pkg/analysis_server/lib/src/search/search_domain.dart
@@ -127,20 +127,34 @@ class SearchDomainHandler implements protocol.RequestHandler {
*/
Future getTypeHierarchy(protocol.Request request) async {
var params = new protocol.SearchGetTypeHierarchyParams.fromRequest(request);
- await server.onAnalysisComplete;
+ String file = params.file;
+ // wait for analysis
+ if (params.superOnly == true) {
+ await server.onFileAnalysisComplete(file);
+ } else {
+ await server.onAnalysisComplete;
+ }
// prepare element
- List<Element> elements =
- server.getElementsAtOffset(params.file, params.offset);
+ List<Element> elements = server.getElementsAtOffset(file, params.offset);
if (elements.isEmpty) {
- protocol.Response response =
- new protocol.SearchGetTypeHierarchyResult().toResponse(request.id);
- server.sendResponse(response);
+ _sendTypeHierarchyNull(request);
return;
}
Element element = elements.first;
+ // maybe supertype hierarchy only
+ if (params.superOnly == true) {
+ TypeHierarchyComputer computer =
+ new TypeHierarchyComputer(searchEngine, element);
+ List<protocol.TypeHierarchyItem> items = computer.computeSuper();
+ protocol.Response response = new protocol.SearchGetTypeHierarchyResult(
+ hierarchyItems: items).toResponse(request.id);
+ server.sendResponse(response);
+ return;
+ }
// prepare type hierarchy
- TypeHierarchyComputer computer = new TypeHierarchyComputer(searchEngine);
- List<protocol.TypeHierarchyItem> items = await computer.compute(element);
+ TypeHierarchyComputer computer =
+ new TypeHierarchyComputer(searchEngine, element);
+ List<protocol.TypeHierarchyItem> items = await computer.compute();
protocol.Response response = new protocol.SearchGetTypeHierarchyResult(
hierarchyItems: items).toResponse(request.id);
server.sendResponse(response);
@@ -190,6 +204,12 @@ class SearchDomainHandler implements protocol.RequestHandler {
server.sendResponse(response);
}
+ void _sendTypeHierarchyNull(protocol.Request request) {
+ protocol.Response response =
+ new protocol.SearchGetTypeHierarchyResult().toResponse(request.id);
+ server.sendResponse(response);
+ }
+
static protocol.SearchResult toResult(SearchMatch match) {
return protocol.newSearchResult_fromMatch(match);
}
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/search/type_hierarchy.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698