| Index: pkg/analysis_server/lib/src/services/index/indexable_element.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/index/indexable_element.dart b/pkg/analysis_server/lib/src/services/index/indexable_element.dart
|
| deleted file mode 100644
|
| index 916a0990ad8163b614839117e1e36467c24df211..0000000000000000000000000000000000000000
|
| --- a/pkg/analysis_server/lib/src/services/index/indexable_element.dart
|
| +++ /dev/null
|
| @@ -1,174 +0,0 @@
|
| -// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -library src.services.index;
|
| -
|
| -import 'dart:collection';
|
| -
|
| -import 'package:analysis_server/src/provisional/index/index_core.dart';
|
| -import 'package:analyzer/dart/element/element.dart';
|
| -import 'package:analyzer/src/generated/engine.dart';
|
| -import 'package:analyzer/src/generated/source.dart';
|
| -import 'package:analyzer/src/generated/utilities_general.dart';
|
| -
|
| -/**
|
| - * A wrapper around an [Element] that implements the [IndexableObject] interface.
|
| - */
|
| -class IndexableElement implements IndexableObject {
|
| - /**
|
| - * The element being wrapped.
|
| - */
|
| - final Element element;
|
| -
|
| - /**
|
| - * Initialize a newly created wrapper to wrap the given [element].
|
| - */
|
| - IndexableElement(this.element) {
|
| - if (element == null) {
|
| - throw new ArgumentError.notNull('element');
|
| - }
|
| - }
|
| -
|
| - @override
|
| - String get filePath {
|
| - return element.source?.fullName;
|
| - }
|
| -
|
| - @override
|
| - int get hashCode => element.hashCode;
|
| -
|
| - @override
|
| - IndexableElementKind get kind => IndexableElementKind.forElement(element);
|
| -
|
| - @override
|
| - int get offset {
|
| - if (element is ConstructorElement) {
|
| - return element.enclosingElement.nameOffset;
|
| - }
|
| - return element.nameOffset;
|
| - }
|
| -
|
| - @override
|
| - bool operator ==(Object object) =>
|
| - object is IndexableElement && element == object.element;
|
| -
|
| - @override
|
| - String toString() => element.toString();
|
| -}
|
| -
|
| -/**
|
| - * The kind associated with an [IndexableElement].
|
| - */
|
| -class IndexableElementKind implements IndexableObjectKind<IndexableElement> {
|
| - /**
|
| - * A table mapping element kinds to the corresponding indexable element kind.
|
| - */
|
| - static final Map<ElementKind, IndexableElementKind> _kindMap =
|
| - new HashMap<ElementKind, IndexableElementKind>();
|
| -
|
| - /**
|
| - * A table mapping the index of a constructor (in the lexically-ordered list
|
| - * of constructors associated with a class) to the indexable element kind used
|
| - * to represent it.
|
| - */
|
| - static final Map<int, IndexableElementKind> _constructorKinds =
|
| - new HashMap<int, IndexableElementKind>();
|
| -
|
| - @override
|
| - final int index = IndexableObjectKind.nextIndex;
|
| -
|
| - /**
|
| - * The element kind represented by this index element kind.
|
| - */
|
| - final ElementKind elementKind;
|
| -
|
| - /**
|
| - * Initialize a newly created kind to have the given [index] and be associated
|
| - * with the given [elementKind].
|
| - */
|
| - IndexableElementKind._(this.elementKind) {
|
| - IndexableObjectKind.register(this);
|
| - }
|
| -
|
| - /**
|
| - * Return the index of the constructor with this indexable element kind.
|
| - */
|
| - int get constructorIndex {
|
| - for (int index in _constructorKinds.keys) {
|
| - if (_constructorKinds[index] == this) {
|
| - return index;
|
| - }
|
| - }
|
| - return -1;
|
| - }
|
| -
|
| - @override
|
| - IndexableElement decode(
|
| - AnalysisContext context, String filePath, int offset) {
|
| - List<Source> unitSources = context.getSourcesWithFullName(filePath);
|
| - for (Source unitSource in unitSources) {
|
| - List<Source> libSources = context.getLibrariesContaining(unitSource);
|
| - for (Source libSource in libSources) {
|
| - CompilationUnitElement unitElement =
|
| - context.getCompilationUnitElement(unitSource, libSource);
|
| - if (unitElement == null) {
|
| - return null;
|
| - }
|
| - if (elementKind == ElementKind.LIBRARY) {
|
| - return new IndexableElement(unitElement.library);
|
| - } else if (elementKind == ElementKind.COMPILATION_UNIT) {
|
| - return new IndexableElement(unitElement);
|
| - } else {
|
| - Element element = unitElement.getElementAt(offset);
|
| - if (element == null) {
|
| - return null;
|
| - }
|
| - if (element is ClassElement &&
|
| - elementKind == ElementKind.CONSTRUCTOR) {
|
| - return new IndexableElement(element.constructors[constructorIndex]);
|
| - }
|
| - if (element is PropertyInducingElement) {
|
| - if (elementKind == ElementKind.GETTER) {
|
| - return new IndexableElement(element.getter);
|
| - }
|
| - if (elementKind == ElementKind.SETTER) {
|
| - return new IndexableElement(element.setter);
|
| - }
|
| - }
|
| - return new IndexableElement(element);
|
| - }
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - @override
|
| - int encodeHash(StringToInt stringToInt, IndexableElement indexable) {
|
| - Element element = indexable.element;
|
| - String elementName = element.displayName;
|
| - int elementNameId = stringToInt(elementName);
|
| - LibraryElement libraryElement = element.library;
|
| - if (libraryElement != null) {
|
| - String libraryPath = libraryElement.source.fullName;
|
| - int libraryPathId = stringToInt(libraryPath);
|
| - return JenkinsSmiHash.combine(libraryPathId, elementNameId);
|
| - }
|
| - return elementNameId;
|
| - }
|
| -
|
| - /**
|
| - * Return the indexable element kind representing the given [element].
|
| - */
|
| - static IndexableElementKind forElement(Element element) {
|
| - if (element is ConstructorElement) {
|
| - ClassElement classElement = element.enclosingElement;
|
| - int constructorIndex = classElement.constructors.indexOf(element);
|
| - return _constructorKinds.putIfAbsent(constructorIndex,
|
| - () => new IndexableElementKind._(ElementKind.CONSTRUCTOR));
|
| - }
|
| - ElementKind elementKind = element.kind;
|
| - return _kindMap.putIfAbsent(
|
| - elementKind, () => new IndexableElementKind._(elementKind));
|
| - }
|
| -}
|
|
|