| Index: pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
|
| index 6126e140f74a5b340ca5e06a228ff4b42a7ad69d..6efd7d0f96c4ffdd7cba25d7dc6738f7a77c87f7 100644
|
| --- a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
|
| +++ b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
|
| @@ -24,10 +24,10 @@ class SearchEngineImpl implements SearchEngine {
|
|
|
| @override
|
| Future<List<SearchMatch>> searchElementDeclarations(String name) {
|
| - NameElement element = new NameElement(name);
|
| + IndexableName indexableName = new IndexableName(name);
|
| _Requestor requestor = new _Requestor(_index);
|
| - requestor.add(
|
| - element, IndexConstants.NAME_IS_DEFINED_BY, MatchKind.DECLARATION);
|
| + requestor.add(indexableName, IndexConstants.NAME_IS_DEFINED_BY,
|
| + MatchKind.DECLARATION);
|
| return requestor.merge();
|
| }
|
|
|
| @@ -42,13 +42,14 @@ class SearchEngineImpl implements SearchEngine {
|
|
|
| @override
|
| Future<List<SearchMatch>> searchMemberReferences(String name) {
|
| - NameElement element = new NameElement(name);
|
| + IndexableName indexableName = new IndexableName(name);
|
| _Requestor requestor = new _Requestor(_index);
|
| - requestor.add(element, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| - requestor.add(element, IndexConstants.IS_READ_BY, MatchKind.READ);
|
| requestor.add(
|
| - element, IndexConstants.IS_READ_WRITTEN_BY, MatchKind.READ_WRITE);
|
| - requestor.add(element, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
|
| + indexableName, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| + requestor.add(indexableName, IndexConstants.IS_READ_BY, MatchKind.READ);
|
| + requestor.add(
|
| + indexableName, IndexConstants.IS_READ_WRITTEN_BY, MatchKind.READ_WRITE);
|
| + requestor.add(indexableName, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
|
| return requestor.merge();
|
| }
|
|
|
| @@ -93,9 +94,12 @@ class SearchEngineImpl implements SearchEngine {
|
| @override
|
| Future<List<SearchMatch>> searchSubtypes(ClassElement type) {
|
| _Requestor requestor = new _Requestor(_index);
|
| - requestor.add(type, IndexConstants.IS_EXTENDED_BY, MatchKind.REFERENCE);
|
| - requestor.add(type, IndexConstants.IS_MIXED_IN_BY, MatchKind.REFERENCE);
|
| - requestor.add(type, IndexConstants.IS_IMPLEMENTED_BY, MatchKind.REFERENCE);
|
| + requestor.addElement(
|
| + type, IndexConstants.IS_EXTENDED_BY, MatchKind.REFERENCE);
|
| + requestor.addElement(
|
| + type, IndexConstants.IS_MIXED_IN_BY, MatchKind.REFERENCE);
|
| + requestor.addElement(
|
| + type, IndexConstants.IS_IMPLEMENTED_BY, MatchKind.REFERENCE);
|
| return requestor.merge();
|
| }
|
|
|
| @@ -114,7 +118,7 @@ class SearchEngineImpl implements SearchEngine {
|
|
|
| Future<List<SearchMatch>> _searchReferences(Element element) {
|
| _Requestor requestor = new _Requestor(_index);
|
| - requestor.add(
|
| + requestor.addElement(
|
| element, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
|
| return requestor.merge();
|
| }
|
| @@ -122,7 +126,7 @@ class SearchEngineImpl implements SearchEngine {
|
| Future<List<SearchMatch>> _searchReferences_Constructor(
|
| ConstructorElement constructor) {
|
| _Requestor requestor = new _Requestor(_index);
|
| - requestor.add(
|
| + requestor.addElement(
|
| constructor, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
|
| return requestor.merge();
|
| }
|
| @@ -133,16 +137,20 @@ class SearchEngineImpl implements SearchEngine {
|
| PropertyAccessorElement setter = field.setter;
|
| _Requestor requestor = new _Requestor(_index);
|
| // field itself
|
| - requestor.add(field, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
|
| - requestor.add(field, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
|
| + requestor.addElement(
|
| + field, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
|
| + requestor.addElement(field, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
|
| // getter
|
| if (getter != null) {
|
| - requestor.add(getter, IndexConstants.IS_REFERENCED_BY, MatchKind.READ);
|
| - requestor.add(getter, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| + requestor.addElement(
|
| + getter, IndexConstants.IS_REFERENCED_BY, MatchKind.READ);
|
| + requestor.addElement(
|
| + getter, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| }
|
| // setter
|
| if (setter != null) {
|
| - requestor.add(setter, IndexConstants.IS_REFERENCED_BY, MatchKind.WRITE);
|
| + requestor.addElement(
|
| + setter, IndexConstants.IS_REFERENCED_BY, MatchKind.WRITE);
|
| }
|
| // done
|
| return requestor.merge();
|
| @@ -151,20 +159,23 @@ class SearchEngineImpl implements SearchEngine {
|
| Future<List<SearchMatch>> _searchReferences_Function(
|
| FunctionElement function) {
|
| _Requestor requestor = new _Requestor(_index);
|
| - requestor.add(
|
| + requestor.addElement(
|
| function, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
|
| - requestor.add(function, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| + requestor.addElement(
|
| + function, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| return requestor.merge();
|
| }
|
|
|
| Future<List<SearchMatch>> _searchReferences_LocalVariable(
|
| LocalVariableElement variable) {
|
| _Requestor requestor = new _Requestor(_index);
|
| - requestor.add(variable, IndexConstants.IS_READ_BY, MatchKind.READ);
|
| - requestor.add(
|
| + requestor.addElement(variable, IndexConstants.IS_READ_BY, MatchKind.READ);
|
| + requestor.addElement(
|
| variable, IndexConstants.IS_READ_WRITTEN_BY, MatchKind.READ_WRITE);
|
| - requestor.add(variable, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
|
| - requestor.add(variable, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| + requestor.addElement(
|
| + variable, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
|
| + requestor.addElement(
|
| + variable, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| return requestor.merge();
|
| }
|
|
|
| @@ -173,21 +184,24 @@ class SearchEngineImpl implements SearchEngine {
|
| if (method is MethodMember) {
|
| method = (method as MethodMember).baseElement;
|
| }
|
| - requestor.add(method, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
|
| - requestor.add(method, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| + requestor.addElement(
|
| + method, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
|
| + requestor.addElement(
|
| + method, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| return requestor.merge();
|
| }
|
|
|
| Future<List<SearchMatch>> _searchReferences_Parameter(
|
| ParameterElement parameter) {
|
| _Requestor requestor = new _Requestor(_index);
|
| - requestor.add(parameter, IndexConstants.IS_READ_BY, MatchKind.READ);
|
| - requestor.add(
|
| + requestor.addElement(parameter, IndexConstants.IS_READ_BY, MatchKind.READ);
|
| + requestor.addElement(
|
| parameter, IndexConstants.IS_READ_WRITTEN_BY, MatchKind.READ_WRITE);
|
| - requestor.add(parameter, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
|
| - requestor.add(
|
| + requestor.addElement(
|
| + parameter, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
|
| + requestor.addElement(
|
| parameter, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
|
| - requestor.add(
|
| + requestor.addElement(
|
| parameter, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
|
| return requestor.merge();
|
| }
|
| @@ -199,9 +213,9 @@ class _Requestor {
|
|
|
| _Requestor(this.index);
|
|
|
| - void add(Element element, RelationshipImpl relationship, MatchKind kind) {
|
| - Future relationsFuture =
|
| - index.getRelationships(new IndexableElement(element), relationship);
|
| + void add(IndexableObject indexable, RelationshipImpl relationship,
|
| + MatchKind kind) {
|
| + Future relationsFuture = index.getRelationships(indexable, relationship);
|
| Future matchesFuture = relationsFuture.then((List<LocationImpl> locations) {
|
| List<SearchMatch> matches = <SearchMatch>[];
|
| for (LocationImpl location in locations) {
|
| @@ -220,6 +234,12 @@ class _Requestor {
|
| futures.add(matchesFuture);
|
| }
|
|
|
| + void addElement(
|
| + Element element, RelationshipImpl relationship, MatchKind kind) {
|
| + IndexableElement indexable = new IndexableElement(element);
|
| + add(indexable, relationship, kind);
|
| + }
|
| +
|
| Future<List<SearchMatch>> merge() {
|
| return Future.wait(futures).then((List<List<SearchMatch>> matchesList) {
|
| return matchesList.expand((matches) => matches).toList();
|
|
|