mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 02:57:35 +00:00
Stop returning declaration matches from search for references.
R=brianwilkerson@google.com BUG= Review URL: https://codereview.chromium.org/2518183003 .
This commit is contained in:
parent
89cab97dd8
commit
9bc4c73e2d
|
@ -10,9 +10,7 @@ import 'package:analysis_server/src/protocol_server.dart'
|
||||||
show SearchResult, newSearchResult_fromMatch;
|
show SearchResult, newSearchResult_fromMatch;
|
||||||
import 'package:analysis_server/src/services/search/hierarchy.dart';
|
import 'package:analysis_server/src/services/search/hierarchy.dart';
|
||||||
import 'package:analysis_server/src/services/search/search_engine.dart';
|
import 'package:analysis_server/src/services/search/search_engine.dart';
|
||||||
import 'package:analysis_server/src/services/search/search_engine_internal.dart';
|
|
||||||
import 'package:analyzer/dart/element/element.dart';
|
import 'package:analyzer/dart/element/element.dart';
|
||||||
import 'package:analyzer/src/generated/source.dart';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A computer for `search.findElementReferences` request results.
|
* A computer for `search.findElementReferences` request results.
|
||||||
|
@ -52,12 +50,6 @@ class ElementReferencesComputer {
|
||||||
List<SearchResult> allResults = <SearchResult>[];
|
List<SearchResult> allResults = <SearchResult>[];
|
||||||
Iterable<Element> refElements = await _getRefElements(element);
|
Iterable<Element> refElements = await _getRefElements(element);
|
||||||
for (Element refElement in refElements) {
|
for (Element refElement in refElements) {
|
||||||
// add declaration
|
|
||||||
if (_isDeclarationInteresting(refElement)) {
|
|
||||||
SearchResult searchResult = _newDeclarationResult(refElement);
|
|
||||||
allResults.add(searchResult);
|
|
||||||
}
|
|
||||||
// do search
|
|
||||||
List<SearchResult> elementResults =
|
List<SearchResult> elementResults =
|
||||||
await _findSingleElementReferences(refElement);
|
await _findSingleElementReferences(refElement);
|
||||||
allResults.addAll(elementResults);
|
allResults.addAll(elementResults);
|
||||||
|
@ -90,43 +82,10 @@ class ElementReferencesComputer {
|
||||||
return new Future.value([element]);
|
return new Future.value([element]);
|
||||||
}
|
}
|
||||||
|
|
||||||
SearchResult _newDeclarationResult(Element refElement) {
|
|
||||||
int nameOffset = refElement.nameOffset;
|
|
||||||
int nameLength = refElement.nameLength;
|
|
||||||
SearchMatch searchMatch = new SearchMatchImpl(
|
|
||||||
refElement.context,
|
|
||||||
refElement.library.source.uri.toString(),
|
|
||||||
refElement.source.uri.toString(),
|
|
||||||
MatchKind.DECLARATION,
|
|
||||||
new SourceRange(nameOffset, nameLength),
|
|
||||||
true,
|
|
||||||
false);
|
|
||||||
return newSearchResult_fromMatch(searchMatch);
|
|
||||||
}
|
|
||||||
|
|
||||||
static SearchResult toResult(SearchMatch match) {
|
static SearchResult toResult(SearchMatch match) {
|
||||||
return newSearchResult_fromMatch(match);
|
return newSearchResult_fromMatch(match);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool _isDeclarationInteresting(Element element) {
|
|
||||||
if (element is LabelElement) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (element is LocalVariableElement) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (element is ParameterElement) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (element is PrefixElement) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (element is PropertyInducingElement) {
|
|
||||||
return !element.isSynthetic;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool _isMemberElement(Element element) {
|
static bool _isMemberElement(Element element) {
|
||||||
if (element is ConstructorElement) {
|
if (element is ConstructorElement) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -153,8 +153,7 @@ main(A a) {
|
||||||
''');
|
''');
|
||||||
await findElementReferences('fff; // declaration', false);
|
await findElementReferences('fff; // declaration', false);
|
||||||
expect(searchElement.kind, ElementKind.FIELD);
|
expect(searchElement.kind, ElementKind.FIELD);
|
||||||
expect(results, hasLength(11));
|
expect(results, hasLength(10));
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'fff; // declaration');
|
|
||||||
assertHasResult(SearchResultKind.WRITE, 'fff); // in constructor');
|
assertHasResult(SearchResultKind.WRITE, 'fff); // in constructor');
|
||||||
assertHasResult(SearchResultKind.WRITE, 'fff = 1;');
|
assertHasResult(SearchResultKind.WRITE, 'fff = 1;');
|
||||||
// m()
|
// m()
|
||||||
|
@ -216,8 +215,7 @@ class A {
|
||||||
''');
|
''');
|
||||||
await findElementReferences('fff); // in constructor', false);
|
await findElementReferences('fff); // in constructor', false);
|
||||||
expect(searchElement.kind, ElementKind.FIELD);
|
expect(searchElement.kind, ElementKind.FIELD);
|
||||||
expect(results, hasLength(4));
|
expect(results, hasLength(3));
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'fff; // declaration');
|
|
||||||
assertHasResult(SearchResultKind.WRITE, 'fff); // in constructor');
|
assertHasResult(SearchResultKind.WRITE, 'fff); // in constructor');
|
||||||
assertHasResult(SearchResultKind.WRITE, 'fff = 2;');
|
assertHasResult(SearchResultKind.WRITE, 'fff = 2;');
|
||||||
assertHasResult(SearchResultKind.READ, 'fff); // in m()');
|
assertHasResult(SearchResultKind.READ, 'fff); // in m()');
|
||||||
|
@ -257,9 +255,6 @@ main() {
|
||||||
''');
|
''');
|
||||||
await findElementReferences('fff; // in B', false);
|
await findElementReferences('fff; // in B', false);
|
||||||
expect(searchElement.kind, ElementKind.FIELD);
|
expect(searchElement.kind, ElementKind.FIELD);
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'fff; // in A');
|
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'fff; // in B');
|
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'fff; // in C');
|
|
||||||
assertHasResult(SearchResultKind.WRITE, 'fff = 10;');
|
assertHasResult(SearchResultKind.WRITE, 'fff = 10;');
|
||||||
assertHasResult(SearchResultKind.WRITE, 'fff = 20;');
|
assertHasResult(SearchResultKind.WRITE, 'fff = 20;');
|
||||||
assertHasResult(SearchResultKind.WRITE, 'fff = 30;');
|
assertHasResult(SearchResultKind.WRITE, 'fff = 30;');
|
||||||
|
@ -326,8 +321,7 @@ myLabel:
|
||||||
''');
|
''');
|
||||||
await findElementReferences('myLabel; // break', false);
|
await findElementReferences('myLabel; // break', false);
|
||||||
expect(searchElement.kind, ElementKind.LABEL);
|
expect(searchElement.kind, ElementKind.LABEL);
|
||||||
expect(results, hasLength(3));
|
expect(results, hasLength(2));
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'myLabel:');
|
|
||||||
assertHasResult(SearchResultKind.REFERENCE, 'myLabel; // continue');
|
assertHasResult(SearchResultKind.REFERENCE, 'myLabel; // continue');
|
||||||
assertHasResult(SearchResultKind.REFERENCE, 'myLabel; // break');
|
assertHasResult(SearchResultKind.REFERENCE, 'myLabel; // break');
|
||||||
}
|
}
|
||||||
|
@ -344,8 +338,7 @@ main() {
|
||||||
''');
|
''');
|
||||||
await findElementReferences('vvv = 1', false);
|
await findElementReferences('vvv = 1', false);
|
||||||
expect(searchElement.kind, ElementKind.LOCAL_VARIABLE);
|
expect(searchElement.kind, ElementKind.LOCAL_VARIABLE);
|
||||||
expect(results, hasLength(5));
|
expect(results, hasLength(4));
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'vvv = 1');
|
|
||||||
assertHasResult(SearchResultKind.READ, 'vvv);');
|
assertHasResult(SearchResultKind.READ, 'vvv);');
|
||||||
assertHasResult(SearchResultKind.READ_WRITE, 'vvv += 3');
|
assertHasResult(SearchResultKind.READ_WRITE, 'vvv += 3');
|
||||||
assertHasResult(SearchResultKind.WRITE, 'vvv = 2');
|
assertHasResult(SearchResultKind.WRITE, 'vvv = 2');
|
||||||
|
@ -426,8 +419,7 @@ main(ppp) {
|
||||||
''');
|
''');
|
||||||
await findElementReferences('ppp) {', false);
|
await findElementReferences('ppp) {', false);
|
||||||
expect(searchElement.kind, ElementKind.PARAMETER);
|
expect(searchElement.kind, ElementKind.PARAMETER);
|
||||||
expect(results, hasLength(5));
|
expect(results, hasLength(4));
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'ppp) {');
|
|
||||||
assertHasResult(SearchResultKind.READ, 'ppp);');
|
assertHasResult(SearchResultKind.READ, 'ppp);');
|
||||||
assertHasResult(SearchResultKind.READ_WRITE, 'ppp += 3');
|
assertHasResult(SearchResultKind.READ_WRITE, 'ppp += 3');
|
||||||
assertHasResult(SearchResultKind.WRITE, 'ppp = 2');
|
assertHasResult(SearchResultKind.WRITE, 'ppp = 2');
|
||||||
|
@ -594,8 +586,7 @@ main() {
|
||||||
expect(searchElement.kind, ElementKind.PREFIX);
|
expect(searchElement.kind, ElementKind.PREFIX);
|
||||||
expect(searchElement.name, 'ppp');
|
expect(searchElement.name, 'ppp');
|
||||||
expect(searchElement.location.startLine, 1);
|
expect(searchElement.location.startLine, 1);
|
||||||
expect(results, hasLength(3));
|
expect(results, hasLength(2));
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'ppp;');
|
|
||||||
assertHasResult(SearchResultKind.REFERENCE, 'ppp.Future');
|
assertHasResult(SearchResultKind.REFERENCE, 'ppp.Future');
|
||||||
assertHasResult(SearchResultKind.REFERENCE, 'ppp.Stream');
|
assertHasResult(SearchResultKind.REFERENCE, 'ppp.Stream');
|
||||||
}
|
}
|
||||||
|
@ -612,8 +603,7 @@ main() {
|
||||||
''');
|
''');
|
||||||
await findElementReferences('vvv = 1', false);
|
await findElementReferences('vvv = 1', false);
|
||||||
expect(searchElement.kind, ElementKind.TOP_LEVEL_VARIABLE);
|
expect(searchElement.kind, ElementKind.TOP_LEVEL_VARIABLE);
|
||||||
expect(results, hasLength(5));
|
expect(results, hasLength(4));
|
||||||
assertHasResult(SearchResultKind.DECLARATION, 'vvv = 1;');
|
|
||||||
assertHasResult(SearchResultKind.READ, 'vvv);');
|
assertHasResult(SearchResultKind.READ, 'vvv);');
|
||||||
assertHasResult(SearchResultKind.WRITE, 'vvv += 3');
|
assertHasResult(SearchResultKind.WRITE, 'vvv += 3');
|
||||||
assertHasResult(SearchResultKind.WRITE, 'vvv = 2');
|
assertHasResult(SearchResultKind.WRITE, 'vvv = 2');
|
||||||
|
|
Loading…
Reference in a new issue