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

Side by Side Diff: pkg/analysis_server/lib/src/services/index/local_index.dart

Issue 1801883002: Remove old index and search implementations. (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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library services.src.index.local_index;
6
7 import 'dart:async';
8
9 import 'package:analysis_server/src/provisional/index/index_core.dart';
10 import 'package:analysis_server/src/services/index/index.dart';
11 import 'package:analysis_server/src/services/index/store/split_store.dart';
12 import 'package:analyzer/dart/element/element.dart';
13 import 'package:analyzer/src/generated/engine.dart';
14 import 'package:analyzer/src/generated/source.dart';
15
16 /**
17 * A local implementation of [Index].
18 */
19 class LocalIndex extends Index {
20 /**
21 * The index contributors used by this index.
22 */
23 List<IndexContributor> contributors = <IndexContributor>[];
24
25 SplitIndexStore _store;
26
27 LocalIndex(NodeManager nodeManager) {
28 // TODO(scheglov) get IndexObjectManager(s) as a parameter
29 _store = new SplitIndexStore(
30 nodeManager, <IndexObjectManager>[new DartUnitIndexObjectManager()]);
31 }
32
33 @override
34 String get statistics => _store.statistics;
35
36 @override
37 void clear() {
38 _store.clear();
39 }
40
41 /**
42 * Returns all relations with [Element]s with the given [name].
43 */
44 Future<Map<List<String>, List<InspectLocation>>> findElementsByName(
45 String name) {
46 return _store.inspect_getElementRelations(name);
47 }
48
49 /**
50 * Returns a `Future<List<Location>>` that completes with the list of
51 * [LocationImpl]s of the given [relationship] with the given [indexable].
52 *
53 * For example, if the [indexable] represents a function element and the
54 * [relationship] is the `is-invoked-by` relationship, then the locations
55 * will be all of the places where the function is invoked.
56 */
57 @override
58 Future<List<LocationImpl>> getRelationships(
59 IndexableObject indexable, RelationshipImpl relationship) {
60 return _store.getRelationships(indexable, relationship);
61 }
62
63 @override
64 List<Element> getTopLevelDeclarations(ElementNameFilter nameFilter) {
65 return _store.getTopLevelDeclarations(nameFilter);
66 }
67
68 @override
69 void index(AnalysisContext context, Object object) {
70 // about to index
71 bool mayIndex = _store.aboutToIndex(context, object);
72 if (!mayIndex) {
73 return;
74 }
75 // do index
76 try {
77 for (IndexContributor contributor in contributors) {
78 contributor.contributeTo(_store, context, object);
79 }
80 _store.doneIndex();
81 } catch (e) {
82 _store.cancelIndex();
83 rethrow;
84 }
85 }
86
87 @override
88 void recordRelationship(
89 IndexableObject indexable, Relationship relationship, Location location) {
90 _store.recordRelationship(indexable, relationship, location);
91 }
92
93 @override
94 void removeContext(AnalysisContext context) {
95 _store.removeContext(context);
96 }
97
98 @override
99 void removeSource(AnalysisContext context, Source source) {
100 _store.removeSource(context, source);
101 }
102
103 @override
104 void removeSources(AnalysisContext context, SourceContainer container) {
105 _store.removeSources(context, container);
106 }
107
108 @override
109 void run() {
110 // NO-OP for the local index
111 }
112
113 @override
114 void stop() {
115 // NO-OP for the local index
116 }
117 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698