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

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

Issue 1764553002: Make SearchMatch usable for the new index - remove the element field. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 months 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 services.src.search.search_engine; 5 library services.src.search.search_engine;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/provisional/index/index_core.dart'; 9 import 'package:analysis_server/src/provisional/index/index_core.dart';
10 import 'package:analysis_server/src/services/correction/source_range.dart'; 10 import 'package:analysis_server/src/services/correction/source_range.dart';
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 return requestor.merge(); 112 return requestor.merge();
113 } 113 }
114 114
115 @override 115 @override
116 Future<List<SearchMatch>> searchTopLevelDeclarations(String pattern) { 116 Future<List<SearchMatch>> searchTopLevelDeclarations(String pattern) {
117 RegExp regExp = new RegExp(pattern); 117 RegExp regExp = new RegExp(pattern);
118 List<Element> elements = 118 List<Element> elements =
119 _index.getTopLevelDeclarations((String name) => regExp.hasMatch(name)); 119 _index.getTopLevelDeclarations((String name) => regExp.hasMatch(name));
120 List<SearchMatch> matches = <SearchMatch>[]; 120 List<SearchMatch> matches = <SearchMatch>[];
121 for (Element element in elements) { 121 for (Element element in elements) {
122 matches.add(new SearchMatch(MatchKind.DECLARATION, element, 122 matches.add(new SearchMatch(
123 rangeElementName(element), true, false)); 123 element.context,
124 element.library.source.uri.toString(),
125 element.source.uri.toString(),
126 MatchKind.DECLARATION,
127 rangeElementName(element),
128 true,
129 false));
124 } 130 }
125 return new Future.value(matches); 131 return new Future.value(matches);
126 } 132 }
127 133
128 Future<List<SearchMatch>> _searchReferences(Element element) { 134 Future<List<SearchMatch>> _searchReferences(Element element) {
129 _Requestor requestor = new _Requestor(_index); 135 _Requestor requestor = new _Requestor(_index);
130 requestor.addElement( 136 requestor.addElement(
131 element, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE); 137 element, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
132 return requestor.merge(); 138 return requestor.merge();
133 } 139 }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 _Requestor(this.index); 229 _Requestor(this.index);
224 230
225 void add(IndexableObject indexable, RelationshipImpl relationship, 231 void add(IndexableObject indexable, RelationshipImpl relationship,
226 MatchKind kind) { 232 MatchKind kind) {
227 Future relationsFuture = index.getRelationships(indexable, relationship); 233 Future relationsFuture = index.getRelationships(indexable, relationship);
228 Future matchesFuture = relationsFuture.then((List<LocationImpl> locations) { 234 Future matchesFuture = relationsFuture.then((List<LocationImpl> locations) {
229 List<SearchMatch> matches = <SearchMatch>[]; 235 List<SearchMatch> matches = <SearchMatch>[];
230 for (LocationImpl location in locations) { 236 for (LocationImpl location in locations) {
231 IndexableObject indexable = location.indexable; 237 IndexableObject indexable = location.indexable;
232 if (indexable is IndexableElement) { 238 if (indexable is IndexableElement) {
239 Element element = indexable.element;
233 matches.add(new SearchMatch( 240 matches.add(new SearchMatch(
241 element.context,
242 element.library.source.uri.toString(),
243 element.source.uri.toString(),
234 kind, 244 kind,
235 indexable.element,
236 new SourceRange(location.offset, location.length), 245 new SourceRange(location.offset, location.length),
237 location.isResolved, 246 location.isResolved,
238 location.isQualified)); 247 location.isQualified));
239 } 248 }
240 } 249 }
241 return matches; 250 return matches;
242 }); 251 });
243 futures.add(matchesFuture); 252 futures.add(matchesFuture);
244 } 253 }
245 254
246 void addElement( 255 void addElement(
247 Element element, RelationshipImpl relationship, MatchKind kind) { 256 Element element, RelationshipImpl relationship, MatchKind kind) {
248 IndexableElement indexable = new IndexableElement(element); 257 IndexableElement indexable = new IndexableElement(element);
249 add(indexable, relationship, kind); 258 add(indexable, relationship, kind);
250 } 259 }
251 260
252 Future<List<SearchMatch>> merge() { 261 Future<List<SearchMatch>> merge() {
253 return Future.wait(futures).then((List<List<SearchMatch>> matchesList) { 262 return Future.wait(futures).then((List<List<SearchMatch>> matchesList) {
254 return matchesList.expand((matches) => matches).toList(); 263 return matchesList.expand((matches) => matches).toList();
255 }); 264 });
256 } 265 }
257 } 266 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698