| 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 b77f2df6666936008a456630839b294b20f713e0..1109ede3504c3b0ad4c891f4af6a3fa9768550a1 100644
|
| --- a/pkg/analysis_server/lib/src/search/search_domain.dart
|
| +++ b/pkg/analysis_server/lib/src/search/search_domain.dart
|
| @@ -61,39 +61,30 @@ class SearchDomainHandler implements protocol.RequestHandler {
|
| var params =
|
| new protocol.SearchFindElementReferencesParams.fromRequest(request);
|
| await server.onAnalysisComplete;
|
| - // prepare elements
|
| - List<Element> elements =
|
| - server.getElementsAtOffset(params.file, params.offset);
|
| - elements = elements.map((Element element) {
|
| - if (element is ImportElement) {
|
| - return element.prefix;
|
| - }
|
| - if (element is FieldFormalParameterElement) {
|
| - return element.field;
|
| - }
|
| - if (element is PropertyAccessorElement) {
|
| - return element.variable;
|
| - }
|
| - return element;
|
| - }).where((Element element) {
|
| - return element != null;
|
| - }).toList();
|
| + // prepare element
|
| + Element element = server.getElementAtOffset(params.file, params.offset);
|
| + if (element is ImportElement) {
|
| + element = (element as ImportElement).prefix;
|
| + }
|
| + if (element is FieldFormalParameterElement) {
|
| + element = (element as FieldFormalParameterElement).field;
|
| + }
|
| + if (element is PropertyAccessorElement) {
|
| + element = (element as PropertyAccessorElement).variable;
|
| + }
|
| // respond
|
| String searchId = (_nextSearchId++).toString();
|
| var result = new protocol.SearchFindElementReferencesResult();
|
| - if (elements.isNotEmpty) {
|
| + if (element != null) {
|
| result.id = searchId;
|
| - result.element = protocol.convertElement(elements.first);
|
| + result.element = protocol.convertElement(element);
|
| }
|
| _sendSearchResult(request, result);
|
| // search elements
|
| - elements.forEach((Element element) async {
|
| - var computer = new ElementReferencesComputer(searchEngine);
|
| - List<protocol.SearchResult> results =
|
| - await computer.compute(element, params.includePotential);
|
| - bool isLast = identical(element, elements.last);
|
| - _sendSearchNotification(searchId, isLast, results);
|
| - });
|
| + var computer = new ElementReferencesComputer(searchEngine);
|
| + List<protocol.SearchResult> results =
|
| + await computer.compute(element, params.includePotential);
|
| + _sendSearchNotification(searchId, true, results);
|
| }
|
|
|
| Future findMemberDeclarations(protocol.Request request) async {
|
| @@ -171,12 +162,11 @@ class SearchDomainHandler implements protocol.RequestHandler {
|
| await server.onAnalysisComplete;
|
| }
|
| // prepare element
|
| - List<Element> elements = server.getElementsAtOffset(file, params.offset);
|
| - if (elements.isEmpty) {
|
| + Element element = server.getElementAtOffset(file, params.offset);
|
| + if (element == null) {
|
| _sendTypeHierarchyNull(request);
|
| return;
|
| }
|
| - Element element = elements.first;
|
| // maybe supertype hierarchy only
|
| if (params.superOnly == true) {
|
| TypeHierarchyComputer computer =
|
|
|