Chromium Code Reviews| OLD | NEW |
|---|---|
| 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.index; | 5 library services.index; |
| 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/analysis/index/index_core.dart'; |
| 10 import 'package:analysis_server/src/services/index/indexable_element.dart'; | 10 import 'package:analysis_server/src/services/index/indexable_element.dart'; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 71 * After calling this method operations may not be executed. | 71 * After calling this method operations may not be executed. |
| 72 */ | 72 */ |
| 73 void stop(); | 73 void stop(); |
| 74 } | 74 } |
| 75 | 75 |
| 76 /** | 76 /** |
| 77 * An [Element] which is used to index references to the name without specifying | 77 * An [Element] which is used to index references to the name without specifying |
| 78 * a concrete kind of this name - field, method or something else. | 78 * a concrete kind of this name - field, method or something else. |
| 79 */ | 79 */ |
| 80 class IndexableName implements IndexableObject { | 80 class IndexableName implements IndexableObject { |
| 81 // TODO(brianwilkerson) Replace NameElement with this class. This will require | |
| 82 // generalizing the search engine to use IndexableObject rather than Element. | |
|
scheglov
2015/09/21 18:33:47
Actually no.
NameElement is used only in searchEl
| |
| 83 /** | 81 /** |
| 84 * The name to be indexed. | 82 * The name to be indexed. |
| 85 */ | 83 */ |
| 86 final String name; | 84 final String name; |
| 87 | 85 |
| 88 /** | 86 /** |
| 89 * Initialize a newly created indexable name to represent the given [name]. | 87 * Initialize a newly created indexable name to represent the given [name]. |
| 90 */ | 88 */ |
| 91 IndexableName(this.name); | 89 IndexableName(this.name); |
| 92 | 90 |
| 93 @override | 91 @override |
| 94 IndexableObjectKind get kind => IndexableNameKind.INSTANCE; | 92 IndexableObjectKind get kind => IndexableNameKind.INSTANCE; |
| 95 | 93 |
| 96 @override | 94 @override |
| 97 int get length => 0; | 95 int get length => 0; |
| 98 | 96 |
| 99 @override | 97 @override |
| 100 int get offset { | 98 int get offset { |
| 101 return -1; | 99 return -1; |
| 102 } | 100 } |
| 103 | 101 |
| 104 @override | 102 @override |
| 105 Source get source => null; | 103 Source get source => null; |
| 106 | 104 |
| 107 @override | 105 @override |
| 106 bool operator ==(Object object) => | |
| 107 object is IndexableName && object.name == name; | |
| 108 | |
| 109 @override | |
| 108 String toString() => name; | 110 String toString() => name; |
| 109 } | 111 } |
| 110 | 112 |
| 111 /** | 113 /** |
| 112 * The kind of an indexable name. | 114 * The kind of an indexable name. |
| 113 */ | 115 */ |
| 114 class IndexableNameKind implements IndexableObjectKind { | 116 class IndexableNameKind implements IndexableObjectKind { |
| 115 /** | 117 /** |
| 116 * The unique instance of this class. | 118 * The unique instance of this class. |
| 117 */ | 119 */ |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 313 * A [LocationImpl] with attached data. | 315 * A [LocationImpl] with attached data. |
| 314 */ | 316 */ |
| 315 class LocationWithData<D> extends LocationImpl { | 317 class LocationWithData<D> extends LocationImpl { |
| 316 final D data; | 318 final D data; |
| 317 | 319 |
| 318 LocationWithData(LocationImpl location, this.data) | 320 LocationWithData(LocationImpl location, this.data) |
| 319 : super(location.indexable, location.offset, location.length); | 321 : super(location.indexable, location.offset, location.length); |
| 320 } | 322 } |
| 321 | 323 |
| 322 /** | 324 /** |
| 323 * An [Element] which is used to index references to the name without specifying | |
| 324 * a concrete kind of this name - field, method or something else. | |
| 325 */ | |
| 326 class NameElement extends ElementImpl { | |
| 327 NameElement(String name) : super(name, -1); | |
| 328 | |
| 329 @override | |
| 330 ElementKind get kind => ElementKind.NAME; | |
| 331 | |
| 332 @override | |
| 333 accept(ElementVisitor visitor) => null; | |
| 334 } | |
| 335 | |
| 336 /** | |
| 337 * Relationship between an element and a location. Relationships are identified | 325 * Relationship between an element and a location. Relationships are identified |
| 338 * by a globally unique identifier. | 326 * by a globally unique identifier. |
| 339 */ | 327 */ |
| 340 class RelationshipImpl implements Relationship { | 328 class RelationshipImpl implements Relationship { |
| 341 /** | 329 /** |
| 342 * A table mapping relationship identifiers to relationships. | 330 * A table mapping relationship identifiers to relationships. |
| 343 */ | 331 */ |
| 344 static Map<String, RelationshipImpl> _RELATIONSHIP_MAP = {}; | 332 static Map<String, RelationshipImpl> _RELATIONSHIP_MAP = {}; |
| 345 | 333 |
| 346 /** | 334 /** |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 374 */ | 362 */ |
| 375 static RelationshipImpl getRelationship(String identifier) { | 363 static RelationshipImpl getRelationship(String identifier) { |
| 376 RelationshipImpl relationship = _RELATIONSHIP_MAP[identifier]; | 364 RelationshipImpl relationship = _RELATIONSHIP_MAP[identifier]; |
| 377 if (relationship == null) { | 365 if (relationship == null) { |
| 378 relationship = new RelationshipImpl(identifier); | 366 relationship = new RelationshipImpl(identifier); |
| 379 _RELATIONSHIP_MAP[identifier] = relationship; | 367 _RELATIONSHIP_MAP[identifier] = relationship; |
| 380 } | 368 } |
| 381 return relationship; | 369 return relationship; |
| 382 } | 370 } |
| 383 } | 371 } |
| OLD | NEW |