| Index: pkg/analysis_server/lib/src/services/index/local_index.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/index/local_index.dart b/pkg/analysis_server/lib/src/services/index/local_index.dart
|
| index 80f3b18abc5ce30525be1011b023569ec07fe474..3feae11ede8785dea5c3be95160ac0556289e49a 100644
|
| --- a/pkg/analysis_server/lib/src/services/index/local_index.dart
|
| +++ b/pkg/analysis_server/lib/src/services/index/local_index.dart
|
| @@ -6,15 +6,11 @@ library services.src.index.local_index;
|
|
|
| import 'dart:async';
|
|
|
| -import 'package:analysis_server/analysis/index/index_core.dart';
|
| +import 'package:analysis_server/analysis/index_core.dart';
|
| import 'package:analysis_server/src/services/index/index.dart';
|
| -import 'package:analysis_server/src/services/index/index_contributor.dart'
|
| - as oldContributors;
|
| import 'package:analysis_server/src/services/index/store/split_store.dart';
|
| -import 'package:analyzer/src/generated/ast.dart';
|
| import 'package:analyzer/src/generated/element.dart';
|
| import 'package:analyzer/src/generated/engine.dart';
|
| -import 'package:analyzer/src/generated/html.dart';
|
| import 'package:analyzer/src/generated/source.dart';
|
|
|
| /**
|
| @@ -24,14 +20,14 @@ class LocalIndex extends Index {
|
| /**
|
| * The index contributors used by this index.
|
| */
|
| - List<IndexContributor> contributors;
|
| + List<IndexContributor> contributors = <IndexContributor>[];
|
|
|
| SplitIndexStore _store;
|
|
|
| LocalIndex(NodeManager nodeManager) {
|
| // TODO(scheglov) get IndexObjectManager(s) as a parameter
|
| - _store = new SplitIndexStore(nodeManager,
|
| - <IndexObjectManager>[new DartUnitIndexObjectManager()]);
|
| + _store = new SplitIndexStore(
|
| + nodeManager, <IndexObjectManager>[new DartUnitIndexObjectManager()]);
|
| }
|
|
|
| @override
|
| @@ -52,11 +48,11 @@ class LocalIndex extends Index {
|
|
|
| /**
|
| * Returns a `Future<List<Location>>` that completes with the list of
|
| - * [LocationImpl]s of the given [relationship] with the given [element].
|
| + * [LocationImpl]s of the given [relationship] with the given [indexable].
|
| *
|
| - * For example, if the [element] represents a function and the [relationship]
|
| - * is the `is-invoked-by` relationship, then the locations will be all of the
|
| - * places where the function is invoked.
|
| + * For example, if the [indexable] represents a function element and the
|
| + * [relationship] is the `is-invoked-by` relationship, then the locations
|
| + * will be all of the places where the function is invoked.
|
| */
|
| @override
|
| Future<List<LocationImpl>> getRelationships(
|
| @@ -70,13 +66,22 @@ class LocalIndex extends Index {
|
| }
|
|
|
| @override
|
| - void indexHtmlUnit(AnalysisContext context, HtmlUnit unit) {
|
| - oldContributors.indexHtmlUnit(_store, context, unit);
|
| - }
|
| -
|
| - @override
|
| - void indexUnit(AnalysisContext context, CompilationUnit unit) {
|
| - oldContributors.indexDartUnit(_store, context, unit);
|
| + void index(AnalysisContext context, Object object) {
|
| + // about to index
|
| + bool mayIndex = _store.aboutToIndex(context, object);
|
| + if (!mayIndex) {
|
| + return;
|
| + }
|
| + // do index
|
| + try {
|
| + for (IndexContributor contributor in contributors) {
|
| + contributor.contributeTo(_store, context, object);
|
| + }
|
| + _store.doneIndex();
|
| + } catch (e) {
|
| + _store.cancelIndex();
|
| + rethrow;
|
| + }
|
| }
|
|
|
| @override
|
|
|