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

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

Issue 1156493004: Move index closer to the plugin API (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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/analysis/index/index_core.dart';
9 import 'package:analysis_server/src/services/correction/source_range.dart'; 10 import 'package:analysis_server/src/services/correction/source_range.dart';
10 import 'package:analysis_server/src/services/index/index.dart'; 11 import 'package:analysis_server/src/services/index/index.dart';
12 import 'package:analysis_server/src/services/index/indexable_element.dart';
11 import 'package:analysis_server/src/services/search/search_engine.dart'; 13 import 'package:analysis_server/src/services/search/search_engine.dart';
12 import 'package:analyzer/src/generated/element.dart'; 14 import 'package:analyzer/src/generated/element.dart';
13 import 'package:analyzer/src/generated/source.dart'; 15 import 'package:analyzer/src/generated/source.dart';
14 16
15 /** 17 /**
16 * A [SearchEngine] implementation. 18 * A [SearchEngine] implementation.
17 */ 19 */
18 class SearchEngineImpl implements SearchEngine { 20 class SearchEngineImpl implements SearchEngine {
19 final Index _index; 21 final Index _index;
20 22
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 } 193 }
192 } 194 }
193 195
194 class _Requestor { 196 class _Requestor {
195 final List<Future<List<SearchMatch>>> futures = <Future<List<SearchMatch>>>[]; 197 final List<Future<List<SearchMatch>>> futures = <Future<List<SearchMatch>>>[];
196 final Index index; 198 final Index index;
197 199
198 _Requestor(this.index); 200 _Requestor(this.index);
199 201
200 void add(Element element, RelationshipImpl relationship, MatchKind kind) { 202 void add(Element element, RelationshipImpl relationship, MatchKind kind) {
201 Future relationsFuture = index.getRelationships(element, relationship); 203 Future relationsFuture =
204 index.getRelationships(new IndexableElement(element), relationship);
202 Future matchesFuture = relationsFuture.then((List<LocationImpl> locations) { 205 Future matchesFuture = relationsFuture.then((List<LocationImpl> locations) {
203 List<SearchMatch> matches = <SearchMatch>[]; 206 List<SearchMatch> matches = <SearchMatch>[];
204 for (LocationImpl location in locations) { 207 for (LocationImpl location in locations) {
205 matches.add(new SearchMatch(kind, location.element, 208 IndexableObject indexable = location.indexable;
206 new SourceRange(location.offset, location.length), 209 if (indexable is IndexableElement) {
207 location.isResolved, location.isQualified)); 210 matches.add(new SearchMatch(kind, indexable.element,
211 new SourceRange(location.offset, location.length),
212 location.isResolved, location.isQualified));
213 }
208 } 214 }
209 return matches; 215 return matches;
210 }); 216 });
211 futures.add(matchesFuture); 217 futures.add(matchesFuture);
212 } 218 }
213 219
214 Future<List<SearchMatch>> merge() { 220 Future<List<SearchMatch>> merge() {
215 return Future.wait(futures).then((List<List<SearchMatch>> matchesList) { 221 return Future.wait(futures).then((List<List<SearchMatch>> matchesList) {
216 return matchesList.expand((matches) => matches).toList(); 222 return matchesList.expand((matches) => matches).toList();
217 }); 223 });
218 } 224 }
219 } 225 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698