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

Side by Side Diff: pkg/analysis_server/lib/src/search/search_domain.dart

Issue 2526473003: Make AnalysisSErver APIs to access unit/node/element asynchronous. (Closed)
Patch Set: Created 4 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 search.domain; 5 library search.domain;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/analysis_server.dart'; 9 import 'package:analysis_server/src/analysis_server.dart';
10 import 'package:analysis_server/src/constants.dart'; 10 import 'package:analysis_server/src/constants.dart';
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 // TODO(scheglov) implement for the new analysis driver 53 // TODO(scheglov) implement for the new analysis driver
54 String searchId = (_nextSearchId++).toString(); 54 String searchId = (_nextSearchId++).toString();
55 var result = new protocol.SearchFindElementReferencesResult(); 55 var result = new protocol.SearchFindElementReferencesResult();
56 result.id = searchId; 56 result.id = searchId;
57 _sendSearchResult(request, result); 57 _sendSearchResult(request, result);
58 _sendSearchNotification(searchId, true, <protocol.SearchResult>[]); 58 _sendSearchNotification(searchId, true, <protocol.SearchResult>[]);
59 return; 59 return;
60 } 60 }
61 var params = 61 var params =
62 new protocol.SearchFindElementReferencesParams.fromRequest(request); 62 new protocol.SearchFindElementReferencesParams.fromRequest(request);
63 String file = params.file;
63 await server.onAnalysisComplete; 64 await server.onAnalysisComplete;
64 // prepare element 65 // prepare element
65 Element element = server.getElementAtOffset(params.file, params.offset); 66 Element element = await server.getElementAtOffset(file, params.offset);
66 if (element is ImportElement) { 67 if (element is ImportElement) {
67 element = (element as ImportElement).prefix; 68 element = (element as ImportElement).prefix;
68 } 69 }
69 if (element is FieldFormalParameterElement) { 70 if (element is FieldFormalParameterElement) {
70 element = (element as FieldFormalParameterElement).field; 71 element = (element as FieldFormalParameterElement).field;
71 } 72 }
72 if (element is PropertyAccessorElement) { 73 if (element is PropertyAccessorElement) {
73 element = (element as PropertyAccessorElement).variable; 74 element = (element as PropertyAccessorElement).variable;
74 } 75 }
75 // respond 76 // respond
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 } 156 }
156 var params = new protocol.SearchGetTypeHierarchyParams.fromRequest(request); 157 var params = new protocol.SearchGetTypeHierarchyParams.fromRequest(request);
157 String file = params.file; 158 String file = params.file;
158 // wait for analysis 159 // wait for analysis
159 if (params.superOnly == true) { 160 if (params.superOnly == true) {
160 await server.onFileAnalysisComplete(file); 161 await server.onFileAnalysisComplete(file);
161 } else { 162 } else {
162 await server.onAnalysisComplete; 163 await server.onAnalysisComplete;
163 } 164 }
164 // prepare element 165 // prepare element
165 Element element = server.getElementAtOffset(file, params.offset); 166 Element element = await server.getElementAtOffset(file, params.offset);
166 if (element == null) { 167 if (element == null) {
167 _sendTypeHierarchyNull(request); 168 _sendTypeHierarchyNull(request);
168 return; 169 return;
169 } 170 }
170 // maybe supertype hierarchy only 171 // maybe supertype hierarchy only
171 if (params.superOnly == true) { 172 if (params.superOnly == true) {
172 TypeHierarchyComputer computer = 173 TypeHierarchyComputer computer =
173 new TypeHierarchyComputer(searchEngine, element); 174 new TypeHierarchyComputer(searchEngine, element);
174 List<protocol.TypeHierarchyItem> items = computer.computeSuper(); 175 List<protocol.TypeHierarchyItem> items = computer.computeSuper();
175 protocol.Response response = 176 protocol.Response response =
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 void _sendTypeHierarchyNull(protocol.Request request) { 236 void _sendTypeHierarchyNull(protocol.Request request) {
236 protocol.Response response = 237 protocol.Response response =
237 new protocol.SearchGetTypeHierarchyResult().toResponse(request.id); 238 new protocol.SearchGetTypeHierarchyResult().toResponse(request.id);
238 server.sendResponse(response); 239 server.sendResponse(response);
239 } 240 }
240 241
241 static protocol.SearchResult toResult(SearchMatch match) { 242 static protocol.SearchResult toResult(SearchMatch match) {
242 return protocol.newSearchResult_fromMatch(match); 243 return protocol.newSearchResult_fromMatch(match);
243 } 244 }
244 } 245 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698