Index: pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart |
diff --git a/pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart b/pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart |
index 9ae8a0a68f1198fdbe090b4c59e00ae751f46c26..4411118dbe65799e1020f4cc032a144c48432340 100644 |
--- a/pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart |
+++ b/pkg/analysis_server/lib/src/services/search/search_engine_internal2.dart |
@@ -34,9 +34,8 @@ class SearchEngineImpl2 implements SearchEngine { |
} |
@override |
- Future<List<SearchMatch>> searchMemberDeclarations(String name) { |
- // TODO: implement searchMemberDeclarations |
- throw new UnimplementedError(); |
+ Future<List<SearchMatch>> searchMemberDeclarations(String pattern) { |
+ return _searchDefinedNames(pattern, IndexNameKind.classMember); |
} |
@override |
@@ -88,23 +87,34 @@ class SearchEngineImpl2 implements SearchEngine { |
@override |
Future<List<SearchMatch>> searchTopLevelDeclarations(String pattern) { |
- // TODO: implement searchTopLevelDeclarations |
- throw new UnimplementedError(); |
+ return _searchDefinedNames(pattern, IndexNameKind.topLevel); |
} |
_addMatches(List<SearchMatch> matches, Element element, |
IndexRelationKind relationKind, MatchKind kind) async { |
List<Location> locations = await _index.getRelations(element, relationKind); |
for (Location location in locations) { |
- matches.add(new SearchMatch( |
+ matches.add(_newMatchForLocation(location, kind)); |
+ } |
+ } |
+ |
+ SearchMatch _newMatchForLocation(Location location, MatchKind kind) => |
+ new SearchMatch( |
context, |
location.libraryUri, |
location.unitUri, |
kind, |
new SourceRange(location.offset, location.length), |
true, |
- location.isQualified)); |
- } |
+ location.isQualified); |
+ |
+ Future<List<SearchMatch>> _searchDefinedNames( |
+ String pattern, IndexNameKind nameKind) async { |
+ RegExp regExp = new RegExp(pattern); |
+ List<Location> locations = await _index.getDefinedNames(regExp, nameKind); |
+ return locations.map((location) { |
+ return _newMatchForLocation(location, MatchKind.DECLARATION); |
+ }).toList(); |
} |
Future<List<SearchMatch>> _searchReferences(Element element) async { |