| Index: pkg/analyzer/lib/src/generated/element.dart
|
| diff --git a/pkg/analyzer/lib/src/generated/element.dart b/pkg/analyzer/lib/src/generated/element.dart
|
| index 5ad1e919db13b96228cc77a59b5303e4d10111fb..76846487fcb8765e9188de1befc562f3997edf39 100644
|
| --- a/pkg/analyzer/lib/src/generated/element.dart
|
| +++ b/pkg/analyzer/lib/src/generated/element.dart
|
| @@ -232,16 +232,6 @@ abstract class ClassElement implements Element {
|
| List<InterfaceType> get mixins;
|
|
|
| /**
|
| - * Return the resolved [ClassDeclaration] or [EnumDeclaration] node that
|
| - * declares this [ClassElement].
|
| - *
|
| - * This method is expensive, because resolved AST might be evicted from cache,
|
| - * so parsing and resolving will be performed.
|
| - */
|
| - @override
|
| - NamedCompilationUnitMember get node;
|
| -
|
| - /**
|
| * Return the superclass of this class, or `null` if the class represents the
|
| * class 'Object'. All other classes will have a non-`null` superclass. If the
|
| * superclass was not explicitly declared then the implicit superclass
|
| @@ -276,6 +266,16 @@ abstract class ClassElement implements Element {
|
| ConstructorElement get unnamedConstructor;
|
|
|
| /**
|
| + * Return the resolved [ClassDeclaration] or [EnumDeclaration] node that
|
| + * declares this [ClassElement].
|
| + *
|
| + * This method is expensive, because resolved AST might be evicted from cache,
|
| + * so parsing and resolving will be performed.
|
| + */
|
| + @override
|
| + NamedCompilationUnitMember computeNode();
|
| +
|
| + /**
|
| * Return the field (synthetic or explicit) defined in this class that has the
|
| * given [name], or `null` if this class does not define a field with the
|
| * given name.
|
| @@ -723,16 +723,6 @@ class ClassElementImpl extends ElementImpl implements ClassElement {
|
| setModifier(Modifier.MIXIN_ERRORS_REPORTED, value);
|
| }
|
|
|
| - @override
|
| - NamedCompilationUnitMember get node {
|
| - if (isEnum) {
|
| - return getNodeMatching((node) => node is EnumDeclaration);
|
| - } else {
|
| - return getNodeMatching(
|
| - (node) => node is ClassDeclaration || node is ClassTypeAlias);
|
| - }
|
| - }
|
| -
|
| /**
|
| * Set whether this class is defined by a typedef construct.
|
| */
|
| @@ -797,6 +787,16 @@ class ClassElementImpl extends ElementImpl implements ClassElement {
|
| }
|
|
|
| @override
|
| + NamedCompilationUnitMember computeNode() {
|
| + if (isEnum) {
|
| + return getNodeMatching((node) => node is EnumDeclaration);
|
| + } else {
|
| + return getNodeMatching(
|
| + (node) => node is ClassDeclaration || node is ClassTypeAlias);
|
| + }
|
| + }
|
| +
|
| + @override
|
| ElementImpl getChild(String identifier) {
|
| //
|
| // The casts in this method are safe because the set methods would have
|
| @@ -1220,15 +1220,6 @@ abstract class CompilationUnitElement implements Element, UriReferencedElement {
|
| bool get hasLoadLibraryFunction;
|
|
|
| /**
|
| - * Return the resolved [CompilationUnit] node that declares this element.
|
| - *
|
| - * This method is expensive, because resolved AST might be evicted from cache,
|
| - * so parsing and resolving will be performed.
|
| - */
|
| - @override
|
| - CompilationUnit get node;
|
| -
|
| - /**
|
| * Return a list containing all of the top-level variables contained in this
|
| * compilation unit.
|
| */
|
| @@ -1241,6 +1232,15 @@ abstract class CompilationUnitElement implements Element, UriReferencedElement {
|
| List<ClassElement> get types;
|
|
|
| /**
|
| + * Return the resolved [CompilationUnit] node that declares this element.
|
| + *
|
| + * This method is expensive, because resolved AST might be evicted from cache,
|
| + * so parsing and resolving will be performed.
|
| + */
|
| + @override
|
| + CompilationUnit computeNode();
|
| +
|
| + /**
|
| * Return the element at the given [offset], maybe `null` if no such element.
|
| */
|
| Element getElementAt(int offset);
|
| @@ -1399,9 +1399,6 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
|
| ElementKind get kind => ElementKind.COMPILATION_UNIT;
|
|
|
| @override
|
| - CompilationUnit get node => unit;
|
| -
|
| - @override
|
| List<TopLevelVariableElement> get topLevelVariables => _variables;
|
|
|
| /**
|
| @@ -1463,6 +1460,9 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
|
| }
|
|
|
| @override
|
| + CompilationUnit computeNode() => unit;
|
| +
|
| + @override
|
| ElementImpl getChild(String identifier) {
|
| //
|
| // The casts in this method are safe because the set methods would have
|
| @@ -1667,16 +1667,6 @@ abstract class ConstructorElement
|
| int get nameEnd;
|
|
|
| /**
|
| - * Return the resolved [ConstructorDeclaration] node that declares this
|
| - * [ConstructorElement] .
|
| - *
|
| - * This method is expensive, because resolved AST might be evicted from cache,
|
| - * so parsing and resolving will be performed.
|
| - */
|
| - @override
|
| - ConstructorDeclaration get node;
|
| -
|
| - /**
|
| * Return the offset of the `.` before this constructor name, or `null` if
|
| * not named.
|
| */
|
| @@ -1688,6 +1678,16 @@ abstract class ConstructorElement
|
| * library containing this constructor has not yet been resolved.
|
| */
|
| ConstructorElement get redirectedConstructor;
|
| +
|
| + /**
|
| + * Return the resolved [ConstructorDeclaration] node that declares this
|
| + * [ConstructorElement] .
|
| + *
|
| + * This method is expensive, because resolved AST might be evicted from cache,
|
| + * so parsing and resolving will be performed.
|
| + */
|
| + @override
|
| + ConstructorDeclaration computeNode();
|
| }
|
|
|
| /**
|
| @@ -1788,10 +1788,6 @@ class ConstructorElementImpl extends ExecutableElementImpl
|
| ElementKind get kind => ElementKind.CONSTRUCTOR;
|
|
|
| @override
|
| - ConstructorDeclaration get node =>
|
| - getNodeMatching((node) => node is ConstructorDeclaration);
|
| -
|
| - @override
|
| accept(ElementVisitor visitor) => visitor.visitConstructorElement(this);
|
|
|
| @override
|
| @@ -1817,6 +1813,10 @@ class ConstructorElementImpl extends ExecutableElementImpl
|
| }
|
| super.appendTo(buffer);
|
| }
|
| +
|
| + @override
|
| + ConstructorDeclaration computeNode() =>
|
| + getNodeMatching((node) => node is ConstructorDeclaration);
|
| }
|
|
|
| /**
|
| @@ -1853,9 +1853,6 @@ class ConstructorMember extends ExecutableMember implements ConstructorElement {
|
| int get nameEnd => baseElement.nameEnd;
|
|
|
| @override
|
| - ConstructorDeclaration get node => baseElement.node;
|
| -
|
| - @override
|
| int get periodOffset => baseElement.periodOffset;
|
|
|
| @override
|
| @@ -1866,6 +1863,9 @@ class ConstructorMember extends ExecutableMember implements ConstructorElement {
|
| accept(ElementVisitor visitor) => visitor.visitConstructorElement(this);
|
|
|
| @override
|
| + ConstructorDeclaration computeNode() => baseElement.computeNode();
|
| +
|
| + @override
|
| String toString() {
|
| ConstructorElement baseElement = this.baseElement;
|
| List<ParameterElement> parameters = this.parameters;
|
| @@ -2133,7 +2133,7 @@ class DefaultParameterElementImpl extends ParameterElementImpl
|
| }
|
|
|
| @override
|
| - DefaultFormalParameter get node =>
|
| + DefaultFormalParameter computeNode() =>
|
| getNodeMatching((node) => node is DefaultFormalParameter);
|
| }
|
|
|
| @@ -2382,6 +2382,7 @@ abstract class Element implements AnalysisTarget {
|
| *
|
| * <b>Note:</b> This method cannot be used in an async environment.
|
| */
|
| + @deprecated
|
| AstNode get node;
|
|
|
| /**
|
| @@ -2418,6 +2419,18 @@ abstract class Element implements AnalysisTarget {
|
| String computeDocumentationComment();
|
|
|
| /**
|
| + * Return the resolved [AstNode] node that declares this element, or `null` if
|
| + * this element is synthetic or isn't contained in a compilation unit, such as
|
| + * a [LibraryElement].
|
| + *
|
| + * This method is expensive, because resolved AST might be evicted from cache,
|
| + * so parsing and resolving will be performed.
|
| + *
|
| + * <b>Note:</b> This method cannot be used in an async environment.
|
| + */
|
| + AstNode computeNode();
|
| +
|
| + /**
|
| * Return the most immediate ancestor of this element for which the
|
| * [predicate] returns `true`, or `null` if there is no such ancestor. Note
|
| * that this element will never be returned.
|
| @@ -2767,8 +2780,9 @@ abstract class ElementImpl implements Element {
|
| _cachedLocation = null;
|
| }
|
|
|
| + @deprecated
|
| @override
|
| - AstNode get node => getNodeMatching((node) => node is AstNode);
|
| + AstNode get node => computeNode();
|
|
|
| @override
|
| Source get source {
|
| @@ -2822,6 +2836,9 @@ abstract class ElementImpl implements Element {
|
| return context.computeDocumentationComment(this);
|
| }
|
|
|
| + @override
|
| + AstNode computeNode() => getNodeMatching((node) => node is AstNode);
|
| +
|
| /**
|
| * Set this element as the enclosing element for given [element].
|
| */
|
| @@ -3885,7 +3902,7 @@ abstract class FieldElement
|
| * so parsing and resolving will be performed.
|
| */
|
| @override
|
| - AstNode get node;
|
| + AstNode computeNode();
|
| }
|
|
|
| /**
|
| @@ -3923,15 +3940,6 @@ class FieldElementImpl extends PropertyInducingElementImpl
|
| @override
|
| ElementKind get kind => ElementKind.FIELD;
|
|
|
| - @override
|
| - AstNode get node {
|
| - if (isEnumConstant) {
|
| - return getNodeMatching((node) => node is EnumConstantDeclaration);
|
| - } else {
|
| - return getNodeMatching((node) => node is VariableDeclaration);
|
| - }
|
| - }
|
| -
|
| /**
|
| * Set whether this field is static.
|
| */
|
| @@ -3941,6 +3949,15 @@ class FieldElementImpl extends PropertyInducingElementImpl
|
|
|
| @override
|
| accept(ElementVisitor visitor) => visitor.visitFieldElement(this);
|
| +
|
| + @override
|
| + AstNode computeNode() {
|
| + if (isEnumConstant) {
|
| + return getNodeMatching((node) => node is EnumConstantDeclaration);
|
| + } else {
|
| + return getNodeMatching((node) => node is VariableDeclaration);
|
| + }
|
| + }
|
| }
|
|
|
| /**
|
| @@ -4038,9 +4055,6 @@ class FieldMember extends VariableMember implements FieldElement {
|
| bool get isStatic => baseElement.isStatic;
|
|
|
| @override
|
| - VariableDeclaration get node => baseElement.node;
|
| -
|
| - @override
|
| DartType get propagatedType => substituteFor(baseElement.propagatedType);
|
|
|
| @override
|
| @@ -4051,6 +4065,9 @@ class FieldMember extends VariableMember implements FieldElement {
|
| accept(ElementVisitor visitor) => visitor.visitFieldElement(this);
|
|
|
| @override
|
| + VariableDeclaration computeNode() => baseElement.computeNode();
|
| +
|
| + @override
|
| String toString() => '$type $displayName';
|
|
|
| /**
|
| @@ -4149,7 +4166,7 @@ abstract class FunctionElement implements ExecutableElement, LocalElement {
|
| * so parsing and resolving will be performed.
|
| */
|
| @override
|
| - FunctionDeclaration get node;
|
| + FunctionDeclaration computeNode();
|
| }
|
|
|
| /**
|
| @@ -4212,10 +4229,6 @@ class FunctionElementImpl extends ExecutableElementImpl
|
| ElementKind get kind => ElementKind.FUNCTION;
|
|
|
| @override
|
| - FunctionDeclaration get node =>
|
| - getNodeMatching((node) => node is FunctionDeclaration);
|
| -
|
| - @override
|
| SourceRange get visibleRange {
|
| if (_visibleRangeLength < 0) {
|
| return null;
|
| @@ -4235,6 +4248,10 @@ class FunctionElementImpl extends ExecutableElementImpl
|
| super.appendTo(buffer);
|
| }
|
|
|
| + @override
|
| + FunctionDeclaration computeNode() =>
|
| + getNodeMatching((node) => node is FunctionDeclaration);
|
| +
|
| /**
|
| * Set the visible range for this element to the range starting at the given
|
| * [offset] with the given [length].
|
| @@ -4387,15 +4404,6 @@ abstract class FunctionTypeAliasElement implements Element {
|
| CompilationUnitElement get enclosingElement;
|
|
|
| /**
|
| - * Return the resolved function type alias node that declares this element.
|
| - *
|
| - * This method is expensive, because resolved AST might be evicted from cache,
|
| - * so parsing and resolving will be performed.
|
| - */
|
| - @override
|
| - FunctionTypeAlias get node;
|
| -
|
| - /**
|
| * Return a list containing all of the parameters defined by this type alias.
|
| */
|
| List<ParameterElement> get parameters;
|
| @@ -4414,6 +4422,15 @@ abstract class FunctionTypeAliasElement implements Element {
|
| * Return a list containing all of the type parameters defined for this type.
|
| */
|
| List<TypeParameterElement> get typeParameters;
|
| +
|
| + /**
|
| + * Return the resolved function type alias node that declares this element.
|
| + *
|
| + * This method is expensive, because resolved AST might be evicted from cache,
|
| + * so parsing and resolving will be performed.
|
| + */
|
| + @override
|
| + FunctionTypeAlias computeNode();
|
| }
|
|
|
| /**
|
| @@ -4471,10 +4488,6 @@ class FunctionTypeAliasElementImpl extends ElementImpl
|
| ElementKind get kind => ElementKind.FUNCTION_TYPE_ALIAS;
|
|
|
| @override
|
| - FunctionTypeAlias get node =>
|
| - getNodeMatching((node) => node is FunctionTypeAlias);
|
| -
|
| - @override
|
| List<ParameterElement> get parameters => _parameters;
|
|
|
| /**
|
| @@ -4540,6 +4553,10 @@ class FunctionTypeAliasElementImpl extends ElementImpl
|
| }
|
|
|
| @override
|
| + FunctionTypeAlias computeNode() =>
|
| + getNodeMatching((node) => node is FunctionTypeAlias);
|
| +
|
| + @override
|
| ElementImpl getChild(String identifier) {
|
| for (VariableElement parameter in _parameters) {
|
| if ((parameter as VariableElementImpl).identifier == identifier) {
|
| @@ -7505,7 +7522,7 @@ abstract class LocalVariableElement implements LocalElement, VariableElement {
|
| * so parsing and resolving will be performed.
|
| */
|
| @override
|
| - VariableDeclaration get node;
|
| + VariableDeclaration computeNode();
|
| }
|
|
|
| /**
|
| @@ -7562,10 +7579,6 @@ class LocalVariableElementImpl extends VariableElementImpl
|
| ElementKind get kind => ElementKind.LOCAL_VARIABLE;
|
|
|
| @override
|
| - VariableDeclaration get node =>
|
| - getNodeMatching((node) => node is VariableDeclaration);
|
| -
|
| - @override
|
| SourceRange get visibleRange {
|
| if (_visibleRangeLength < 0) {
|
| return null;
|
| @@ -7583,6 +7596,10 @@ class LocalVariableElementImpl extends VariableElementImpl
|
| buffer.write(displayName);
|
| }
|
|
|
| + @override
|
| + VariableDeclaration computeNode() =>
|
| + getNodeMatching((node) => node is VariableDeclaration);
|
| +
|
| /**
|
| * Specifies that this variable is potentially mutated somewhere in closure.
|
| */
|
| @@ -7679,8 +7696,9 @@ abstract class Member implements Element {
|
| @override
|
| int get nameOffset => _baseElement.nameOffset;
|
|
|
| + @deprecated
|
| @override
|
| - AstNode get node => _baseElement.node;
|
| + AstNode get node => computeNode();
|
|
|
| @override
|
| Source get source => _baseElement.source;
|
| @@ -7693,6 +7711,9 @@ abstract class Member implements Element {
|
| _baseElement.computeDocumentationComment();
|
|
|
| @override
|
| + AstNode computeNode() => _baseElement.computeNode();
|
| +
|
| + @override
|
| Element getAncestor(Predicate<Element> predicate) =>
|
| baseElement.getAncestor(predicate);
|
|
|
| @@ -7776,7 +7797,7 @@ abstract class MethodElement implements ClassMemberElement, ExecutableElement {
|
| * so parsing and resolving will be performed.
|
| */
|
| @override
|
| - MethodDeclaration get node;
|
| + MethodDeclaration computeNode();
|
| }
|
|
|
| /**
|
| @@ -7849,10 +7870,6 @@ class MethodElementImpl extends ExecutableElementImpl implements MethodElement {
|
| return super.name;
|
| }
|
|
|
| - @override
|
| - MethodDeclaration get node =>
|
| - getNodeMatching((node) => node is MethodDeclaration);
|
| -
|
| /**
|
| * Set whether this method is static.
|
| */
|
| @@ -7868,6 +7885,10 @@ class MethodElementImpl extends ExecutableElementImpl implements MethodElement {
|
| buffer.write(displayName);
|
| super.appendTo(buffer);
|
| }
|
| +
|
| + @override
|
| + MethodDeclaration computeNode() =>
|
| + getNodeMatching((node) => node is MethodDeclaration);
|
| }
|
|
|
| /**
|
| @@ -7889,10 +7910,10 @@ class MethodMember extends ExecutableMember implements MethodElement {
|
| ClassElement get enclosingElement => baseElement.enclosingElement;
|
|
|
| @override
|
| - MethodDeclaration get node => baseElement.node;
|
| + accept(ElementVisitor visitor) => visitor.visitMethodElement(this);
|
|
|
| @override
|
| - accept(ElementVisitor visitor) => visitor.visitMethodElement(this);
|
| + MethodDeclaration computeNode() => baseElement.computeNode();
|
|
|
| @override
|
| String toString() {
|
| @@ -8189,6 +8210,7 @@ class MultiplyDefinedElementImpl implements MultiplyDefinedElement {
|
| @override
|
| int get nameOffset => -1;
|
|
|
| + @deprecated
|
| @override
|
| AstNode get node => null;
|
|
|
| @@ -8208,6 +8230,9 @@ class MultiplyDefinedElementImpl implements MultiplyDefinedElement {
|
| String computeDocumentationComment() => null;
|
|
|
| @override
|
| + AstNode computeNode() => null;
|
| +
|
| + @override
|
| Element getAncestor(Predicate<Element> predicate) => null;
|
|
|
| @override
|
| @@ -8396,9 +8421,6 @@ abstract class ParameterElement
|
| */
|
| bool get isInitializingFormal;
|
|
|
| - @override
|
| - FormalParameter get node;
|
| -
|
| /**
|
| * Return the kind of this parameter.
|
| */
|
| @@ -8410,6 +8432,9 @@ abstract class ParameterElement
|
| * parameter.
|
| */
|
| List<ParameterElement> get parameters;
|
| +
|
| + @override
|
| + FormalParameter computeNode();
|
| }
|
|
|
| /**
|
| @@ -8487,10 +8512,6 @@ class ParameterElementImpl extends VariableElementImpl
|
| ElementKind get kind => ElementKind.PARAMETER;
|
|
|
| @override
|
| - FormalParameter get node =>
|
| - getNodeMatching((node) => node is FormalParameter);
|
| -
|
| - @override
|
| List<ParameterElement> get parameters => _parameters;
|
|
|
| /**
|
| @@ -8553,6 +8574,10 @@ class ParameterElementImpl extends VariableElementImpl
|
| }
|
|
|
| @override
|
| + FormalParameter computeNode() =>
|
| + getNodeMatching((node) => node is FormalParameter);
|
| +
|
| + @override
|
| ElementImpl getChild(String identifier) {
|
| for (ParameterElement parameter in _parameters) {
|
| if ((parameter as ParameterElementImpl).identifier == identifier) {
|
| @@ -8637,9 +8662,6 @@ class ParameterMember extends VariableMember implements ParameterElement {
|
| bool get isInitializingFormal => baseElement.isInitializingFormal;
|
|
|
| @override
|
| - FormalParameter get node => baseElement.node;
|
| -
|
| - @override
|
| ParameterKind get parameterKind => baseElement.parameterKind;
|
|
|
| @override
|
| @@ -8665,6 +8687,9 @@ class ParameterMember extends VariableMember implements ParameterElement {
|
| accept(ElementVisitor visitor) => visitor.visitParameterElement(this);
|
|
|
| @override
|
| + FormalParameter computeNode() => baseElement.computeNode();
|
| +
|
| + @override
|
| Element getAncestor(Predicate<Element> predicate) {
|
| Element element = baseElement.getAncestor(predicate);
|
| ParameterizedType definingType = this.definingType;
|
| @@ -8999,20 +9024,6 @@ class PropertyAccessorElementImpl extends ExecutableElementImpl
|
| return super.name;
|
| }
|
|
|
| - @override
|
| - AstNode get node {
|
| - if (isSynthetic) {
|
| - return null;
|
| - }
|
| - if (enclosingElement is ClassElement) {
|
| - return getNodeMatching((node) => node is MethodDeclaration);
|
| - }
|
| - if (enclosingElement is CompilationUnitElement) {
|
| - return getNodeMatching((node) => node is FunctionDeclaration);
|
| - }
|
| - return null;
|
| - }
|
| -
|
| /**
|
| * Set whether this accessor is a setter.
|
| */
|
| @@ -9040,6 +9051,20 @@ class PropertyAccessorElementImpl extends ExecutableElementImpl
|
| buffer.write(variable.displayName);
|
| super.appendTo(buffer);
|
| }
|
| +
|
| + @override
|
| + AstNode computeNode() {
|
| + if (isSynthetic) {
|
| + return null;
|
| + }
|
| + if (enclosingElement is ClassElement) {
|
| + return getNodeMatching((node) => node is MethodDeclaration);
|
| + }
|
| + if (enclosingElement is CompilationUnitElement) {
|
| + return getNodeMatching((node) => node is FunctionDeclaration);
|
| + }
|
| + return null;
|
| + }
|
| }
|
|
|
| /**
|
| @@ -9568,7 +9593,7 @@ abstract class TopLevelVariableElement implements PropertyInducingElement {
|
| const <TopLevelVariableElement>[];
|
|
|
| @override
|
| - VariableDeclaration get node;
|
| + VariableDeclaration computeNode();
|
| }
|
|
|
| /**
|
| @@ -9602,11 +9627,11 @@ class TopLevelVariableElementImpl extends PropertyInducingElementImpl
|
| ElementKind get kind => ElementKind.TOP_LEVEL_VARIABLE;
|
|
|
| @override
|
| - VariableDeclaration get node =>
|
| - getNodeMatching((node) => node is VariableDeclaration);
|
| + accept(ElementVisitor visitor) => visitor.visitTopLevelVariableElement(this);
|
|
|
| @override
|
| - accept(ElementVisitor visitor) => visitor.visitTopLevelVariableElement(this);
|
| + VariableDeclaration computeNode() =>
|
| + getNodeMatching((node) => node is VariableDeclaration);
|
| }
|
|
|
| /**
|
|
|