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

Unified Diff: pkg/analysis_services/lib/index/index.dart

Issue 484733003: Import analysis_services.dart into analysis_server.dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analysis_services/lib/correction/status.dart ('k') | pkg/analysis_services/lib/index/index_store.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_services/lib/index/index.dart
diff --git a/pkg/analysis_services/lib/index/index.dart b/pkg/analysis_services/lib/index/index.dart
deleted file mode 100644
index acfc8351e439cea12722351873c8c6dced98a428..0000000000000000000000000000000000000000
--- a/pkg/analysis_services/lib/index/index.dart
+++ /dev/null
@@ -1,379 +0,0 @@
-// Copyright (c) 2014, 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 services.index;
-
-import 'dart:async';
-
-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';
-
-
-/**
- * The interface [Index] defines the behavior of objects that maintain an index
- * storing relations between [Element]s.
- *
- * Any modification operations are executed before any read operation.
- * There is no guarantee about the order in which the [Future]s for read
- * operations will complete.
- */
-abstract class Index {
- /**
- * Answers index statistics.
- */
- String get statistics;
-
- /**
- * Removes from the index all the information.
- */
- void clear();
-
- /**
- * Asynchronously returns a list containing all of the locations of the
- * elements that have the given [relationship] with the given [element].
- *
- * 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.
- *
- * [element] - the element that has the relationship with the locations to be
- * returned.
- *
- * [relationship] - the relationship between the given element and the
- * locations to be returned.
- */
- Future<List<Location>> getRelationships(Element element,
- Relationship relationship);
-
- /**
- * Processes the given [HtmlUnit] in order to record the relationships.
- *
- * [context] - the [AnalysisContext] in which [HtmlUnit] was resolved.
- * [unit] - the [HtmlUnit] being indexed.
- */
- void indexHtmlUnit(AnalysisContext context, HtmlUnit unit);
-
- /**
- * Processes the given [CompilationUnit] in order to record the relationships.
- *
- * [context] - the [AnalysisContext] in which [CompilationUnit] was resolved.
- * [unit] - the [CompilationUnit] being indexed.
- */
- void indexUnit(AnalysisContext context, CompilationUnit unit);
-
- /**
- * Removes from the index all of the information associated with [context].
- *
- * This method should be invoked when [context] is disposed.
- */
- void removeContext(AnalysisContext context);
-
- /**
- * Removes from the index all of the information associated with elements or
- * locations in [source]. This includes relationships between an element in
- * [source] and any other locations, relationships between any other elements
- * and a location within [source].
- *
- * This method should be invoked when [source] is no longer part of the code
- * base.
- *
- * [context] - the [AnalysisContext] in which [source] being removed
- * [source] - the [Source] being removed
- */
- void removeSource(AnalysisContext context, Source source);
-
- /**
- * Removes from the index all of the information associated with elements or
- * locations in the given sources. This includes relationships between an
- * element in the given sources and any other locations, relationships between
- * any other elements and a location within the given sources.
- *
- * This method should be invoked when multiple sources are no longer part of
- * the code base.
- *
- * [context] - the [AnalysisContext] in which [Source]s being removed.
- * [container] - the [SourceContainer] holding the sources being removed.
- */
- void removeSources(AnalysisContext context, SourceContainer container);
-
- /**
- * Starts the index.
- * Should be called before any other method.
- */
- void run();
-
- /**
- * Stops the index.
- * After calling this method operations may not be executed.
- */
- void stop();
-}
-
-
-/**
- * Constants used when populating and accessing the index.
- */
-class IndexConstants {
- /**
- * Left: an Angular element.
- * Is referenced at.
- * Right: location.
- */
- static final Relationship ANGULAR_REFERENCE =
- Relationship.getRelationship("angular-reference");
-
- /**
- * Left: an Angular component.
- * Is closed "/>" at.
- * Right: location.
- */
- static final Relationship ANGULAR_CLOSING_TAG_REFERENCE =
- Relationship.getRelationship("angular-closing-tag-reference");
-
- /**
- * Left: the Universe or a Library.
- * Defines an Element.
- * Right: an Element declaration.
- */
- static final Relationship DEFINES = Relationship.getRelationship("defines");
-
- /**
- * Left: class.
- * Is extended by.
- * Right: other class declaration.
- */
- static final Relationship IS_EXTENDED_BY =
- Relationship.getRelationship("is-extended-by");
-
- /**
- * Left: class.
- * Is implemented by.
- * Right: other class declaration.
- */
- static final Relationship IS_IMPLEMENTED_BY =
- Relationship.getRelationship("is-implemented-by");
-
- /**
- * Left: class.
- * Is mixed into.
- * Right: other class declaration.
- */
- static final Relationship IS_MIXED_IN_BY =
- Relationship.getRelationship("is-mixed-in-by");
-
- /**
- * Left: local variable, parameter.
- * Is read at.
- * Right: location.
- */
- static final Relationship IS_READ_BY =
- Relationship.getRelationship("is-read-by");
-
- /**
- * Left: local variable, parameter.
- * Is both read and written at.
- * Right: location.
- */
- static final Relationship IS_READ_WRITTEN_BY =
- Relationship.getRelationship("is-read-written-by");
-
- /**
- * Left: local variable, parameter.
- * Is written at.
- * Right: location.
- */
- static final Relationship IS_WRITTEN_BY =
- Relationship.getRelationship("is-written-by");
-
- /**
- * Left: function, method, variable, getter.
- * Is invoked at.
- * Right: location.
- */
- static final Relationship IS_INVOKED_BY =
- Relationship.getRelationship("is-invoked-by");
-
- /**
- * Left: function, function type, class, field, method.
- * Is referenced (and not invoked, read/written) at.
- * Right: location.
- */
- static final Relationship IS_REFERENCED_BY =
- Relationship.getRelationship("is-referenced-by");
-
- /**
- * Left: name element.
- * Is defined by.
- * Right: concrete element declaration.
- */
- static final Relationship NAME_IS_DEFINED_BY =
- Relationship.getRelationship("name-is-defined-by");
-
- IndexConstants._();
-}
-
-
-/**
- * Instances of the class [Location] represent a location related to an element.
- *
- * The location is expressed as an offset and length, but the offset is relative
- * to the resource containing the element rather than the start of the element
- * within that resource.
- */
-class Location {
- static const int _FLAG_QUALIFIED = 1 << 0;
- static const int _FLAG_RESOLVED = 1 << 1;
-
- /**
- * An empty array of locations.
- */
- static const List<Location> EMPTY_ARRAY = const <Location>[];
-
- /**
- * The element containing this location.
- */
- final Element element;
-
- /**
- * The offset of this location within the resource containing the element.
- */
- final int offset;
-
- /**
- * The length of this location.
- */
- final int length;
-
- /**
- * The flags of this location.
- */
- int _flags;
-
- /**
- * Initializes a newly created location to be relative to the given element at
- * the given [offset] with the given [length].
- *
- * [element] - the [Element] containing this location.
- * [offset] - the offset within the resource containing [element].
- * [length] - the length of this location
- */
- Location(this.element, this.offset, this.length, {bool isQualified: false,
- bool isResolved: true}) {
- if (element == null) {
- throw new ArgumentError("element location cannot be null");
- }
- _flags = 0;
- if (isQualified) {
- _flags |= _FLAG_QUALIFIED;
- }
- if (isResolved) {
- _flags |= _FLAG_RESOLVED;
- }
- }
-
- /**
- * Returns `true` if this location is a qualified reference.
- */
- bool get isQualified => (_flags & _FLAG_QUALIFIED) != 0;
-
- /**
- * Returns `true` if this location is a resolved reference.
- */
- bool get isResolved => (_flags & _FLAG_RESOLVED) != 0;
-
- @override
- String toString() {
- String flagsStr = '';
- if (isQualified) {
- flagsStr += ' qualified';
- }
- if (isResolved) {
- flagsStr += ' resolved';
- }
- return '[${offset} - ${(offset + length)}) $flagsStr in ${element}';
- }
-}
-
-
-/**
- * A [Location] with attached data.
- */
-class LocationWithData<D> extends Location {
- final D data;
-
- LocationWithData(Location location, this.data)
- : super(location.element, location.offset, location.length);
-}
-
-
-/**
- * An [Element] which is used to index references to the name without specifying
- * a concrete kind of this name - field, method or something else.
- */
-class NameElement extends ElementImpl {
- NameElement(String name) : super("name:${name}", -1);
-
- @override
- ElementKind get kind => ElementKind.NAME;
-
- @override
- accept(ElementVisitor visitor) => null;
-}
-
-
-/**
- * Relationship between an element and a location. Relationships are identified
- * by a globally unique identifier.
- */
-class Relationship {
- /**
- * A table mapping relationship identifiers to relationships.
- */
- static Map<String, Relationship> _RELATIONSHIP_MAP = {};
-
- /**
- * The unique identifier for this relationship.
- */
- final String identifier;
-
- /**
- * Initialize a newly created relationship with the given unique identifier.
- */
- Relationship(this.identifier);
-
- @override
- String toString() => identifier;
-
- /**
- * Returns the relationship with the given unique [identifier].
- */
- static Relationship getRelationship(String identifier) {
- Relationship relationship = _RELATIONSHIP_MAP[identifier];
- if (relationship == null) {
- relationship = new Relationship(identifier);
- _RELATIONSHIP_MAP[identifier] = relationship;
- }
- return relationship;
- }
-}
-
-
-/**
- * An element to use when we want to request "defines" relations without
- * specifying an exact library.
- */
-class UniverseElement extends ElementImpl {
- static final UniverseElement INSTANCE = new UniverseElement._();
-
- UniverseElement._() : super("--universe--", -1);
-
- @override
- ElementKind get kind => ElementKind.UNIVERSE;
-
- @override
- accept(ElementVisitor visitor) => null;
-}
« no previous file with comments | « pkg/analysis_services/lib/correction/status.dart ('k') | pkg/analysis_services/lib/index/index_store.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698