| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 import 'package:analyzer/dart/ast/ast.dart'; | 5 import 'package:analyzer/dart/ast/ast.dart'; |
| 6 import 'package:analyzer/dart/ast/token.dart'; | 6 import 'package:analyzer/dart/ast/token.dart'; |
| 7 import 'package:analyzer/dart/ast/visitor.dart'; | 7 import 'package:analyzer/dart/ast/visitor.dart'; |
| 8 import 'package:analyzer/dart/element/element.dart'; | 8 import 'package:analyzer/dart/element/element.dart'; |
| 9 import 'package:analyzer/dart/element/type.dart'; | 9 import 'package:analyzer/dart/element/type.dart'; |
| 10 import 'package:analyzer/src/dart/element/member.dart'; | 10 import 'package:analyzer/src/dart/element/member.dart'; |
| 11 import 'package:analyzer/src/generated/utilities_dart.dart'; | 11 import 'package:analyzer/src/generated/utilities_dart.dart'; |
| 12 import 'package:analyzer/src/summary/format.dart'; | 12 import 'package:analyzer/src/summary/format.dart'; |
| 13 import 'package:analyzer/src/summary/idl.dart'; | 13 import 'package:analyzer/src/summary/idl.dart'; |
| 14 | 14 |
| 15 /** | 15 /** |
| 16 * Information about an element that is actually put into index for some other | 16 * Information about an element that is actually put into index for some other |
| 17 * related element. For example for a synthetic getter this is the corresponding | 17 * related element. For example for a synthetic getter this is the corresponding |
| 18 * non-synthetic field and [IndexSyntheticElementKind.getter] as the [kind]. | 18 * non-synthetic field and [IndexSyntheticElementKind.getter] as the [kind]. |
| 19 */ | 19 */ |
| 20 class IndexElementInfo { | 20 class IndexElementInfo { |
| 21 final Element element; | 21 final Element element; |
| 22 final IndexSyntheticElementKind kind; | 22 final IndexSyntheticElementKind kind; |
| 23 | 23 |
| 24 factory IndexElementInfo(Element element) { | 24 factory IndexElementInfo(Element element) { |
| 25 IndexSyntheticElementKind kind = IndexSyntheticElementKind.notSynthetic; | 25 IndexSyntheticElementKind kind = IndexSyntheticElementKind.notSynthetic; |
| 26 if (element.isSynthetic) { | 26 if (element is LibraryElement || element is CompilationUnitElement) { |
| 27 kind = IndexSyntheticElementKind.unit; |
| 28 } else if (element.isSynthetic) { |
| 27 if (element is ConstructorElement) { | 29 if (element is ConstructorElement) { |
| 28 kind = IndexSyntheticElementKind.constructor; | 30 kind = IndexSyntheticElementKind.constructor; |
| 29 element = element.enclosingElement; | 31 element = element.enclosingElement; |
| 30 } else if (element is FunctionElement && element.name == 'loadLibrary') { | 32 } else if (element is FunctionElement && element.name == 'loadLibrary') { |
| 31 kind = IndexSyntheticElementKind.loadLibrary; | 33 kind = IndexSyntheticElementKind.loadLibrary; |
| 32 element = element.library; | 34 element = element.library; |
| 33 } else if (element is FieldElement) { | 35 } else if (element is FieldElement) { |
| 34 FieldElement field = element; | 36 FieldElement field = element; |
| 35 kind = IndexSyntheticElementKind.field; | 37 kind = IndexSyntheticElementKind.field; |
| 36 element = field.getter; | 38 element = field.getter; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 53 } | 55 } |
| 54 } else if (element is TopLevelVariableElement) { | 56 } else if (element is TopLevelVariableElement) { |
| 55 TopLevelVariableElement property = element; | 57 TopLevelVariableElement property = element; |
| 56 kind = IndexSyntheticElementKind.topLevelVariable; | 58 kind = IndexSyntheticElementKind.topLevelVariable; |
| 57 element = property.getter; | 59 element = property.getter; |
| 58 element ??= property.setter; | 60 element ??= property.setter; |
| 59 } else { | 61 } else { |
| 60 throw new ArgumentError( | 62 throw new ArgumentError( |
| 61 'Unsupported synthetic element ${element.runtimeType}'); | 63 'Unsupported synthetic element ${element.runtimeType}'); |
| 62 } | 64 } |
| 63 } else if (element is LibraryElement || element is CompilationUnitElement) { | |
| 64 kind = IndexSyntheticElementKind.unit; | |
| 65 } | 65 } |
| 66 return new IndexElementInfo._(element, kind); | 66 return new IndexElementInfo._(element, kind); |
| 67 } | 67 } |
| 68 | 68 |
| 69 IndexElementInfo._(this.element, this.kind); | 69 IndexElementInfo._(this.element, this.kind); |
| 70 } | 70 } |
| 71 | 71 |
| 72 /** | 72 /** |
| 73 * Object that gathers information about the whole package index and then uses | 73 * Object that gathers information about the whole package index and then uses |
| 74 * it to assemble a new [PackageIndexBuilder]. Call [indexUnit] on each | 74 * it to assemble a new [PackageIndexBuilder]. Call [indexUnit] on each |
| (...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 899 usedNameOffsets: nameRelations.map((r) => r.offset).toList(), | 899 usedNameOffsets: nameRelations.map((r) => r.offset).toList(), |
| 900 usedNameIsQualifiedFlags: | 900 usedNameIsQualifiedFlags: |
| 901 nameRelations.map((r) => r.isQualified).toList()); | 901 nameRelations.map((r) => r.isQualified).toList()); |
| 902 } | 902 } |
| 903 | 903 |
| 904 void defineName(String name, IndexNameKind kind, int offset) { | 904 void defineName(String name, IndexNameKind kind, int offset) { |
| 905 _StringInfo nameInfo = pkg._getStringInfo(name); | 905 _StringInfo nameInfo = pkg._getStringInfo(name); |
| 906 definedNames.add(new _DefinedNameInfo(nameInfo, kind, offset)); | 906 definedNames.add(new _DefinedNameInfo(nameInfo, kind, offset)); |
| 907 } | 907 } |
| 908 } | 908 } |
| OLD | NEW |