Deprecate 'name' in AST, use 'name2' token instead.

Change-Id: I867f009dca12208f835199297d2ea85c203c8556
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/252566
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2022-08-02 16:25:34 +00:00 committed by Commit Bot
parent 023c6df3b4
commit 01173e2aa2
188 changed files with 2546 additions and 2155 deletions

View file

@ -330,7 +330,7 @@ class DartCallHierarchyComputer {
} }
} }
} else if (node is ConstructorDeclaration) { } else if (node is ConstructorDeclaration) {
final name = node.name; final name = node.name2;
if (name != null && offset < name.offset) { if (name != null && offset < name.offset) {
return null; return null;
} }

View file

@ -682,6 +682,14 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor<void> {
computer._addRegion_token( computer._addRegion_token(
node.factoryKeyword, HighlightRegionType.BUILT_IN); node.factoryKeyword, HighlightRegionType.BUILT_IN);
computer._addRegion_token(node.constKeyword, HighlightRegionType.KEYWORD); computer._addRegion_token(node.constKeyword, HighlightRegionType.KEYWORD);
computer._addRegion_token(
node.name2,
HighlightRegionType.CONSTRUCTOR,
semanticTokenType: SemanticTokenTypes.method,
semanticTokenModifiers: {
CustomSemanticTokenModifiers.constructor,
},
);
super.visitConstructorDeclaration(node); super.visitConstructorDeclaration(node);
} }
@ -743,8 +751,8 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) { void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
computer._addRegion_node( computer._addRegion_token(
node.name, node.name2,
HighlightRegionType.ENUM_CONSTANT, HighlightRegionType.ENUM_CONSTANT,
); );
node.visitChildren(this); node.visitChildren(this);
@ -803,8 +811,8 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor<void> {
if (element is FieldFormalParameterElement) { if (element is FieldFormalParameterElement) {
var field = element.field; var field = element.field;
if (field != null) { if (field != null) {
computer._addRegion_node( computer._addRegion_token(
node.identifier, node.name,
HighlightRegionType.INSTANCE_FIELD_REFERENCE, HighlightRegionType.INSTANCE_FIELD_REFERENCE,
); );
} }
@ -1109,6 +1117,12 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitSimpleIdentifier(SimpleIdentifier node) { void visitSimpleIdentifier(SimpleIdentifier node) {
final parent = node.parent;
// ignore: deprecated_member_use
if (parent is ConstructorDeclaration && parent.name == node) {
return;
}
computer._addIdentifierRegion(node); computer._addIdentifierRegion(node);
super.visitSimpleIdentifier(node); super.visitSimpleIdentifier(node);
} }
@ -1135,8 +1149,8 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor<void> {
HighlightRegionType.KEYWORD, HighlightRegionType.KEYWORD,
); );
computer._addRegion_node( computer._addRegion_token(
node.identifier, node.name,
HighlightRegionType.PARAMETER_DECLARATION, HighlightRegionType.PARAMETER_DECLARATION,
); );

View file

@ -6,6 +6,7 @@ import 'package:analysis_server/src/collections.dart';
import 'package:analysis_server/src/utilities/flutter.dart'; import 'package:analysis_server/src/utilities/flutter.dart';
import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart' as engine; import 'package:analyzer/dart/element/element.dart' as engine;
import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart';
@ -90,9 +91,13 @@ class DartUnitOutlineComputer {
endLine: endLine, endColumn: endColumn); endLine: endLine, endColumn: endColumn);
} }
Location _getLocationToken(Token token) {
return _getLocationOffsetLength(token.offset, token.length);
}
Outline _newClassOutline(ClassDeclaration node, List<Outline> classContents) { Outline _newClassOutline(ClassDeclaration node, List<Outline> classContents) {
var nameNode = node.name; var nameToken = node.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var element = Element( var element = Element(
ElementKind.CLASS, ElementKind.CLASS,
name, name,
@ -100,14 +105,14 @@ class DartUnitOutlineComputer {
isPrivate: Identifier.isPrivateName(name), isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node), isDeprecated: _isDeprecated(node),
isAbstract: node.abstractKeyword != null), isAbstract: node.abstractKeyword != null),
location: _getLocationNode(nameNode), location: _getLocationToken(nameToken),
typeParameters: _getTypeParametersStr(node.typeParameters)); typeParameters: _getTypeParametersStr(node.typeParameters));
return _nodeOutline(node, element, classContents); return _nodeOutline(node, element, classContents);
} }
Outline _newClassTypeAlias(ClassTypeAlias node) { Outline _newClassTypeAlias(ClassTypeAlias node) {
var nameNode = node.name; var nameToken = node.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var element = Element( var element = Element(
ElementKind.CLASS_TYPE_ALIAS, ElementKind.CLASS_TYPE_ALIAS,
name, name,
@ -115,7 +120,7 @@ class DartUnitOutlineComputer {
isPrivate: Identifier.isPrivateName(name), isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node), isDeprecated: _isDeprecated(node),
isAbstract: node.abstractKeyword != null), isAbstract: node.abstractKeyword != null),
location: _getLocationNode(nameNode), location: _getLocationToken(nameToken),
typeParameters: _getTypeParametersStr(node.typeParameters)); typeParameters: _getTypeParametersStr(node.typeParameters));
return _nodeOutline(node, element); return _nodeOutline(node, element);
} }
@ -125,14 +130,14 @@ class DartUnitOutlineComputer {
var name = returnType.name; var name = returnType.name;
var offset = returnType.offset; var offset = returnType.offset;
var length = returnType.length; var length = returnType.length;
var constructorNameNode = constructor.name; var constructorNameToken = constructor.name2;
var isPrivate = false; var isPrivate = false;
if (constructorNameNode != null) { if (constructorNameToken != null) {
var constructorName = constructorNameNode.name; var constructorName = constructorNameToken.lexeme;
isPrivate = Identifier.isPrivateName(constructorName); isPrivate = Identifier.isPrivateName(constructorName);
name += '.$constructorName'; name += '.$constructorName';
offset = constructorNameNode.offset; offset = constructorNameToken.offset;
length = constructorNameNode.length; length = constructorNameToken.length;
} }
var parameters = constructor.parameters; var parameters = constructor.parameters;
var parametersStr = _safeToSource(parameters); var parametersStr = _safeToSource(parameters);
@ -148,50 +153,52 @@ class DartUnitOutlineComputer {
} }
Outline _newEnumConstant(EnumConstantDeclaration node) { Outline _newEnumConstant(EnumConstantDeclaration node) {
var nameNode = node.name; var nameToken = node.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var element = Element( var element = Element(
ElementKind.ENUM_CONSTANT, ElementKind.ENUM_CONSTANT,
name, name,
Element.makeFlags( Element.makeFlags(
isPrivate: Identifier.isPrivateName(name), isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)), isDeprecated: _isDeprecated(node)),
location: _getLocationNode(nameNode)); location: _getLocationToken(nameToken));
return _nodeOutline(node, element); return _nodeOutline(node, element);
} }
Outline _newEnumOutline(EnumDeclaration node, List<Outline> children) { Outline _newEnumOutline(EnumDeclaration node, List<Outline> children) {
var nameNode = node.name; var nameToken = node.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var element = Element( var element = Element(
ElementKind.ENUM, ElementKind.ENUM,
name, name,
Element.makeFlags( Element.makeFlags(
isPrivate: Identifier.isPrivateName(name), isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)), isDeprecated: _isDeprecated(node)),
location: _getLocationNode(nameNode)); location: _getLocationToken(nameToken));
return _nodeOutline(node, element, children); return _nodeOutline(node, element, children);
} }
Outline _newExtensionOutline( Outline _newExtensionOutline(
ExtensionDeclaration node, List<Outline> extensionContents) { ExtensionDeclaration node, List<Outline> extensionContents) {
var nameNode = node.name; var nameToken = node.name2;
var name = nameNode?.name ?? ''; var name = nameToken?.lexeme ?? '';
var element = Element( var element = Element(
ElementKind.EXTENSION, ElementKind.EXTENSION,
name, name,
Element.makeFlags( Element.makeFlags(
isPrivate: Identifier.isPrivateName(name), isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)), isDeprecated: _isDeprecated(node)),
location: _getLocationNode(nameNode ?? node.extendedType), location: nameToken != null
? _getLocationToken(nameToken)
: _getLocationNode(node.extendedType),
typeParameters: _getTypeParametersStr(node.typeParameters)); typeParameters: _getTypeParametersStr(node.typeParameters));
return _nodeOutline(node, element, extensionContents); return _nodeOutline(node, element, extensionContents);
} }
Outline _newFunctionOutline(FunctionDeclaration function, bool isStatic) { Outline _newFunctionOutline(FunctionDeclaration function, bool isStatic) {
var returnType = function.returnType; var returnType = function.returnType;
var nameNode = function.name; var nameToken = function.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var functionExpression = function.functionExpression; var functionExpression = function.functionExpression;
var parameters = functionExpression.parameters; var parameters = functionExpression.parameters;
ElementKind kind; ElementKind kind;
@ -211,7 +218,7 @@ class DartUnitOutlineComputer {
isPrivate: Identifier.isPrivateName(name), isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(function), isDeprecated: _isDeprecated(function),
isStatic: isStatic), isStatic: isStatic),
location: _getLocationNode(nameNode), location: _getLocationToken(nameToken),
parameters: parametersStr, parameters: parametersStr,
returnType: returnTypeStr, returnType: returnTypeStr,
typeParameters: typeParameters:
@ -222,8 +229,8 @@ class DartUnitOutlineComputer {
Outline _newFunctionTypeAliasOutline(FunctionTypeAlias node) { Outline _newFunctionTypeAliasOutline(FunctionTypeAlias node) {
var returnType = node.returnType; var returnType = node.returnType;
var nameNode = node.name; var nameToken = node.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var parameters = node.parameters; var parameters = node.parameters;
var parametersStr = _safeToSource(parameters); var parametersStr = _safeToSource(parameters);
var returnTypeStr = _safeToSource(returnType); var returnTypeStr = _safeToSource(returnType);
@ -233,7 +240,7 @@ class DartUnitOutlineComputer {
Element.makeFlags( Element.makeFlags(
isPrivate: Identifier.isPrivateName(name), isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)), isDeprecated: _isDeprecated(node)),
location: _getLocationNode(nameNode), location: _getLocationToken(nameToken),
parameters: parametersStr, parameters: parametersStr,
returnType: returnTypeStr, returnType: returnTypeStr,
typeParameters: _getTypeParametersStr(node.typeParameters)); typeParameters: _getTypeParametersStr(node.typeParameters));
@ -241,8 +248,8 @@ class DartUnitOutlineComputer {
} }
Outline _newGenericTypeAliasOutline(GenericTypeAlias node) { Outline _newGenericTypeAliasOutline(GenericTypeAlias node) {
var nameNode = node.name; var nameToken = node.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var aliasedType = node.type; var aliasedType = node.type;
var aliasedFunctionType = var aliasedFunctionType =
@ -258,7 +265,7 @@ class DartUnitOutlineComputer {
isDeprecated: _isDeprecated(node), isDeprecated: _isDeprecated(node),
), ),
aliasedType: _safeToSource(aliasedType), aliasedType: _safeToSource(aliasedType),
location: _getLocationNode(nameNode), location: _getLocationToken(nameToken),
parameters: aliasedFunctionType != null parameters: aliasedFunctionType != null
? _safeToSource(aliasedFunctionType.parameters) ? _safeToSource(aliasedFunctionType.parameters)
: null, : null,
@ -273,8 +280,8 @@ class DartUnitOutlineComputer {
Outline _newMethodOutline(MethodDeclaration method) { Outline _newMethodOutline(MethodDeclaration method) {
var returnType = method.returnType; var returnType = method.returnType;
var nameNode = method.name; var nameToken = method.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var parameters = method.parameters; var parameters = method.parameters;
ElementKind kind; ElementKind kind;
if (method.isGetter) { if (method.isGetter) {
@ -294,7 +301,7 @@ class DartUnitOutlineComputer {
isDeprecated: _isDeprecated(method), isDeprecated: _isDeprecated(method),
isAbstract: method.isAbstract, isAbstract: method.isAbstract,
isStatic: method.isStatic), isStatic: method.isStatic),
location: _getLocationNode(nameNode), location: _getLocationToken(nameToken),
parameters: parametersStr, parameters: parametersStr,
returnType: returnTypeStr, returnType: returnTypeStr,
typeParameters: _getTypeParametersStr(method.typeParameters)); typeParameters: _getTypeParametersStr(method.typeParameters));
@ -304,15 +311,15 @@ class DartUnitOutlineComputer {
Outline _newMixinOutline(MixinDeclaration node, List<Outline> mixinContents) { Outline _newMixinOutline(MixinDeclaration node, List<Outline> mixinContents) {
node.firstTokenAfterCommentAndMetadata; node.firstTokenAfterCommentAndMetadata;
var nameNode = node.name; var nameToken = node.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var element = Element( var element = Element(
ElementKind.MIXIN, ElementKind.MIXIN,
name, name,
Element.makeFlags( Element.makeFlags(
isPrivate: Identifier.isPrivateName(name), isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)), isDeprecated: _isDeprecated(node)),
location: _getLocationNode(nameNode), location: _getLocationToken(nameToken),
typeParameters: _getTypeParametersStr(node.typeParameters)); typeParameters: _getTypeParametersStr(node.typeParameters));
return _nodeOutline(node, element, mixinContents); return _nodeOutline(node, element, mixinContents);
} }
@ -327,8 +334,8 @@ class DartUnitOutlineComputer {
Outline _newVariableOutline(String typeName, ElementKind kind, Outline _newVariableOutline(String typeName, ElementKind kind,
VariableDeclaration variable, bool isStatic) { VariableDeclaration variable, bool isStatic) {
var nameNode = variable.name; var nameToken = variable.name2;
var name = nameNode.name; var name = nameToken.lexeme;
var element = Element( var element = Element(
kind, kind,
name, name,
@ -338,7 +345,7 @@ class DartUnitOutlineComputer {
isStatic: isStatic, isStatic: isStatic,
isConst: variable.isConst, isConst: variable.isConst,
isFinal: variable.isFinal), isFinal: variable.isFinal),
location: _getLocationNode(nameNode), location: _getLocationToken(nameToken),
returnType: typeName); returnType: typeName);
return _nodeOutline(variable, element); return _nodeOutline(variable, element);
} }

View file

@ -6,6 +6,7 @@ import 'package:analysis_server/src/collections.dart';
import 'package:analysis_server/src/protocol_server.dart' as proto; import 'package:analysis_server/src/protocol_server.dart' as proto;
import 'package:analysis_server/src/utilities/extensions/ast.dart'; import 'package:analysis_server/src/utilities/extensions/ast.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
/// Return the elements that the given [element] overrides. /// Return the elements that the given [element] overrides.
@ -35,9 +36,8 @@ class DartUnitOverridesComputer {
return _overrides; return _overrides;
} }
/// Add a new [Override] for the declaration with the given name [node]. /// Add a new [Override] for the declaration with the given name [token].
void _addOverride(SimpleIdentifier node) { void _addOverride(Token token, Element? element) {
var element = node.staticElement;
if (element != null) { if (element != null) {
var overridesResult = _OverriddenElementsFinder(element).find(); var overridesResult = _OverriddenElementsFinder(element).find();
var superElements = overridesResult.superElements; var superElements = overridesResult.superElements;
@ -53,7 +53,7 @@ class DartUnitOverridesComputer {
member.nonSynthetic, member.nonSynthetic,
withNullability: _unit.isNonNullableByDefault)) withNullability: _unit.isNonNullableByDefault))
.toList(); .toList();
_overrides.add(proto.Override(node.offset, node.length, _overrides.add(proto.Override(token.offset, token.length,
superclassMember: superMember, superclassMember: superMember,
interfaceMembers: nullIfEmpty(interfaceMembers))); interfaceMembers: nullIfEmpty(interfaceMembers)));
} }
@ -66,7 +66,7 @@ class DartUnitOverridesComputer {
if (classMember.isStatic) { if (classMember.isStatic) {
continue; continue;
} }
_addOverride(classMember.name); _addOverride(classMember.name2, classMember.declaredElement);
} }
if (classMember is FieldDeclaration) { if (classMember is FieldDeclaration) {
if (classMember.isStatic) { if (classMember.isStatic) {
@ -74,7 +74,7 @@ class DartUnitOverridesComputer {
} }
List<VariableDeclaration> fields = classMember.fields.variables; List<VariableDeclaration> fields = classMember.fields.variables;
for (var field in fields) { for (var field in fields) {
_addOverride(field.name); _addOverride(field.name2, field.declaredElement);
} }
} }
} }

View file

@ -26,6 +26,13 @@ void addDartOccurrences(OccurrencesCollector collector, CompilationUnit unit) {
class _DartUnitOccurrencesComputerVisitor extends RecursiveAstVisitor<void> { class _DartUnitOccurrencesComputerVisitor extends RecursiveAstVisitor<void> {
final Map<Element, List<int>> elementsOffsets = <Element, List<int>>{}; final Map<Element, List<int>> elementsOffsets = <Element, List<int>>{};
@override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
_addOccurrence(node.declaredElement!, node.name2.offset);
super.visitEnumConstantDeclaration(node);
}
@override @override
void visitSimpleIdentifier(SimpleIdentifier node) { void visitSimpleIdentifier(SimpleIdentifier node) {
var element = node.writeOrReadElement; var element = node.writeOrReadElement;

View file

@ -478,17 +478,26 @@ class DartCompletionRequest {
} }
} }
/// TODO(scheglov) Can we make it better?
String fromToken(Token token) {
final lexeme = token.lexeme;
if (offset >= token.offset && offset < token.end) {
return lexeme.substring(0, offset - token.offset);
} else if (offset == token.end) {
return lexeme;
}
return '';
}
while (entity is AstNode) { while (entity is AstNode) {
if (entity is SimpleIdentifier) { if (entity is SimpleIdentifier) {
var identifier = entity.name; return fromToken(entity.token);
if (offset >= entity.offset && offset < entity.end) {
return identifier.substring(0, offset - entity.offset);
} else if (offset == entity.end) {
return identifier;
}
} }
var children = entity.childEntities; var children = entity.childEntities;
entity = children.isEmpty ? null : children.first; entity = children.isEmpty ? null : children.first;
if (entity is Token) {
return fromToken(entity);
}
} }
return ''; return '';
} }

View file

@ -979,7 +979,7 @@ parent3: ${node.parent?.parent?.parent}
var parent = node.parent; var parent = node.parent;
if (parent is VariableDeclarationList) { if (parent is VariableDeclarationList) {
return parent.type?.type ?? return parent.type?.type ??
_impliedDartTypeWithName(typeProvider, node.name.name); _impliedDartTypeWithName(typeProvider, node.name2.lexeme);
} }
} }
return null; return null;
@ -992,7 +992,7 @@ parent3: ${node.parent?.parent?.parent}
var equals = varDecl.equals; var equals = varDecl.equals;
if (equals != null && equals.end <= offset) { if (equals != null && equals.end <= offset) {
return node.type?.type ?? return node.type?.type ??
_impliedDartTypeWithName(typeProvider, varDecl.name.name); _impliedDartTypeWithName(typeProvider, varDecl.name2.lexeme);
} }
} }
} }

View file

@ -37,9 +37,9 @@ class FieldFormalContributor extends DartCompletionContributor {
param = param.parameter; param = param.parameter;
} }
if (param is FieldFormalParameter) { if (param is FieldFormalParameter) {
var fieldId = param.identifier; var fieldId = param.name;
if (fieldId != request.target.entity) { if (fieldId != request.target.entity) {
var fieldName = fieldId.name; var fieldName = fieldId.lexeme;
if (fieldName.isNotEmpty) { if (fieldName.isNotEmpty) {
referencedFields.add(fieldName); referencedFields.add(fieldName);
} }

View file

@ -146,7 +146,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
void visitClassDeclaration(ClassDeclaration node) { void visitClassDeclaration(ClassDeclaration node) {
final entity = this.entity; final entity = this.entity;
// Don't suggest class name // Don't suggest class name
if (entity == node.name) { if (entity == node.name2) {
return; return;
} }
if (entity == node.rightBracket) { if (entity == node.rightBracket) {
@ -266,7 +266,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
return; return;
} }
if (entity == node.name) { if (entity == node.name2) {
return; return;
} }
@ -298,7 +298,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
@override @override
void visitExtensionDeclaration(ExtensionDeclaration node) { void visitExtensionDeclaration(ExtensionDeclaration node) {
// Don't suggest extension name // Don't suggest extension name
if (entity == node.name) { if (entity == node.name2) {
return; return;
} }
if (entity == node.rightBracket) { if (entity == node.rightBracket) {
@ -407,15 +407,13 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
bool hasCovariant() { bool hasCovariant() {
var last = lastParameter(); var last = lastParameter();
return last != null && return last != null &&
(last.covariantKeyword != null || (last.covariantKeyword != null || last.name?.lexeme == 'covariant');
last.identifier?.name == 'covariant');
} }
bool hasRequired() { bool hasRequired() {
var last = lastParameter(); var last = lastParameter();
return last != null && return last != null &&
(last.requiredKeyword != null || (last.requiredKeyword != null || last.name?.lexeme == 'required');
last.identifier?.name == 'required');
} }
var tokenType = entity.type; var tokenType = entity.type;
@ -494,7 +492,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
void visitFunctionDeclaration(FunctionDeclaration node) { void visitFunctionDeclaration(FunctionDeclaration node) {
// If the cursor is at the beginning of the declaration, include the // If the cursor is at the beginning of the declaration, include the
// compilation unit keywords. See dartbug.com/41039. // compilation unit keywords. See dartbug.com/41039.
if (entity == node.returnType || entity == node.name) { if (entity == node.returnType || entity == node.name2) {
_addSuggestion(Keyword.DYNAMIC); _addSuggestion(Keyword.DYNAMIC);
_addSuggestion(Keyword.VOID); _addSuggestion(Keyword.VOID);
} }
@ -617,7 +615,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
_addSuggestion2(SYNC_STAR); _addSuggestion2(SYNC_STAR);
} }
} }
} else if (entity == node.returnType || entity == node.name) { } else if (entity == node.returnType || entity == node.name2) {
// If the cursor is at the beginning of the declaration, include the class // If the cursor is at the beginning of the declaration, include the class
// body keywords. See dartbug.com/41039. // body keywords. See dartbug.com/41039.
_addClassBodyKeywords(); _addClassBodyKeywords();
@ -645,7 +643,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
void visitMixinDeclaration(MixinDeclaration node) { void visitMixinDeclaration(MixinDeclaration node) {
final entity = this.entity; final entity = this.entity;
// Don't suggest mixin name // Don't suggest mixin name
if (entity == node.name) { if (entity == node.name2) {
return; return;
} }
if (entity == node.rightBracket) { if (entity == node.rightBracket) {

View file

@ -241,7 +241,7 @@ class _LocalVisitor extends LocalDeclarationVisitor {
if (declaredElement != null && if (declaredElement != null &&
visibilityTracker._isVisible(declaredElement) && visibilityTracker._isVisible(declaredElement) &&
opType.includeReturnValueSuggestions && opType.includeReturnValueSuggestions &&
declaration.name != null) { declaration.name2 != null) {
builder.suggestExtension(declaredElement, kind: _defaultKind); builder.suggestExtension(declaredElement, kind: _defaultKind);
} }
} }
@ -316,10 +316,14 @@ class _LocalVisitor extends LocalDeclarationVisitor {
} }
@override @override
void declaredLocalVar(SimpleIdentifier name, TypeAnnotation? type) { void declaredLocalVar(
if (visibilityTracker._isVisible(name.staticElement) && Token name,
TypeAnnotation? type,
LocalVariableElement declaredElement,
) {
if (visibilityTracker._isVisible(declaredElement) &&
opType.includeReturnValueSuggestions) { opType.includeReturnValueSuggestions) {
builder.suggestLocalVariable(name.staticElement as LocalVariableElement); builder.suggestLocalVariable(declaredElement);
} }
} }

View file

@ -4,6 +4,7 @@
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart'; import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart'; import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart'; import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
@ -14,11 +15,12 @@ class OverrideContributor extends DartCompletionContributor {
@override @override
Future<void> computeSuggestions() async { Future<void> computeSuggestions() async {
var targetId = _getTargetId(request.target); final target = _getTargetId(request.target);
if (targetId == null) { if (target == null) {
return; return;
} }
var classDecl = targetId.thisOrAncestorOfType<ClassOrMixinDeclaration>(); var classDecl =
target.enclosingNode.thisOrAncestorOfType<ClassOrMixinDeclaration>();
if (classDecl == null) { if (classDecl == null) {
return; return;
} }
@ -41,14 +43,14 @@ class OverrideContributor extends DartCompletionContributor {
// Gracefully degrade if the overridden element has not been resolved. // Gracefully degrade if the overridden element has not been resolved.
if (element != null) { if (element != null) {
var invokeSuper = interface.isSuperImplemented(name); var invokeSuper = interface.isSuperImplemented(name);
await builder.suggestOverride(targetId, element, invokeSuper); await builder.suggestOverride(target.id, element, invokeSuper);
} }
} }
} }
/// If the target looks like a partial identifier inside a class declaration /// If the target looks like a partial identifier inside a class declaration
/// then return that identifier, otherwise return `null`. /// then return that identifier, otherwise return `null`.
SimpleIdentifier? _getTargetId(CompletionTarget target) { _Target? _getTargetId(CompletionTarget target) {
var node = target.containingNode; var node = target.containingNode;
if (node is ClassOrMixinDeclaration) { if (node is ClassOrMixinDeclaration) {
var entity = target.entity; var entity = target.entity;
@ -64,23 +66,23 @@ class OverrideContributor extends DartCompletionContributor {
return null; return null;
} }
SimpleIdentifier? _getTargetIdFromVarList(VariableDeclarationList fields) { _Target? _getTargetIdFromVarList(VariableDeclarationList fields) {
var variables = fields.variables; var variables = fields.variables;
var type = fields.type; var type = fields.type;
if (variables.length == 1) { if (variables.length == 1) {
var variable = variables[0]; var variable = variables[0];
var targetId = variable.name; var targetId = variable.name2;
if (targetId.name.isEmpty) { if (targetId.lexeme.isEmpty) {
// analyzer parser // analyzer parser
// Actual: class C { foo^ } // Actual: class C { foo^ }
// Parsed: class C { foo^ _s_ } // Parsed: class C { foo^ _s_ }
// where _s_ is a synthetic id inserted by the analyzer parser // where _s_ is a synthetic id inserted by the analyzer parser
return targetId; return _Target(fields, targetId);
} else if (fields.keyword == null && } else if (fields.keyword == null &&
type == null && type == null &&
variable.initializer == null) { variable.initializer == null) {
// fasta parser does not insert a synthetic identifier // fasta parser does not insert a synthetic identifier
return targetId; return _Target(fields, targetId);
} else if (fields.keyword == null && } else if (fields.keyword == null &&
type is NamedType && type is NamedType &&
type.typeArguments == null && type.typeArguments == null &&
@ -93,7 +95,7 @@ class OverrideContributor extends DartCompletionContributor {
// Parses as a variable list where `m` is the type and `String` is a // Parses as a variable list where `m` is the type and `String` is a
// variable. // variable.
var name = type.name; var name = type.name;
return name is SimpleIdentifier ? name : null; return name is SimpleIdentifier ? _Target(fields, name.token) : null;
} }
} }
return null; return null;
@ -113,3 +115,10 @@ class OverrideContributor extends DartCompletionContributor {
return namesToOverride; return namesToOverride;
} }
} }
class _Target {
final AstNode enclosingNode;
final Token id;
_Target(this.enclosingNode, this.id);
}

View file

@ -18,6 +18,7 @@ import 'package:analysis_server/src/utilities/extensions/element.dart';
import 'package:analysis_server/src/utilities/flutter.dart'; import 'package:analysis_server/src/utilities/flutter.dart';
import 'package:analyzer/dart/analysis/features.dart'; import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type.dart';
@ -222,7 +223,7 @@ class SuggestionBuilder {
var containingMethod = request.target.containingNode var containingMethod = request.target.containingNode
.thisOrAncestorOfType<MethodDeclaration>(); .thisOrAncestorOfType<MethodDeclaration>();
if (containingMethod != null) { if (containingMethod != null) {
_cachedContainingMemberName = containingMethod.name.name; _cachedContainingMemberName = containingMethod.name2.lexeme;
} }
} }
} }
@ -831,12 +832,12 @@ class SuggestionBuilder {
/// Add a suggestion to replace the [targetId] with an override of the given /// Add a suggestion to replace the [targetId] with an override of the given
/// [element]. If [invokeSuper] is `true`, then the override will contain an /// [element]. If [invokeSuper] is `true`, then the override will contain an
/// invocation of an overridden member. /// invocation of an overridden member.
Future<void> suggestOverride(SimpleIdentifier targetId, Future<void> suggestOverride(
ExecutableElement element, bool invokeSuper) async { Token targetId, ExecutableElement element, bool invokeSuper) async {
var displayTextBuffer = StringBuffer(); var displayTextBuffer = StringBuffer();
var builder = ChangeBuilder(session: request.analysisSession); var builder = ChangeBuilder(session: request.analysisSession);
await builder.addDartFileEdit(request.path, (builder) { await builder.addDartFileEdit(request.path, (builder) {
builder.addReplacement(range.node(targetId), (builder) { builder.addReplacement(range.token(targetId), (builder) {
builder.writeOverride( builder.writeOverride(
element, element,
displayTextBuffer: displayTextBuffer, displayTextBuffer: displayTextBuffer,

View file

@ -110,7 +110,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor {
@override @override
void declaredClass(ClassDeclaration declaration) { void declaredClass(ClassDeclaration declaration) {
if (declaration.name.name == targetName) { if (declaration.name2.lexeme == targetName) {
// no type // no type
finished(); finished();
} }
@ -118,7 +118,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor {
@override @override
void declaredClassTypeAlias(ClassTypeAlias declaration) { void declaredClassTypeAlias(ClassTypeAlias declaration) {
if (declaration.name.name == targetName) { if (declaration.name2.lexeme == targetName) {
// no type // no type
finished(); finished();
} }
@ -126,7 +126,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor {
@override @override
void declaredField(FieldDeclaration fieldDecl, VariableDeclaration varDecl) { void declaredField(FieldDeclaration fieldDecl, VariableDeclaration varDecl) {
if (varDecl.name.name == targetName) { if (varDecl.name2.lexeme == targetName) {
// Type provided by the element in computeFull above // Type provided by the element in computeFull above
finished(); finished();
} }
@ -134,7 +134,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor {
@override @override
void declaredFunction(FunctionDeclaration declaration) { void declaredFunction(FunctionDeclaration declaration) {
if (declaration.name.name == targetName) { if (declaration.name2.lexeme == targetName) {
var returnType = declaration.returnType; var returnType = declaration.returnType;
if (returnType != null) { if (returnType != null) {
var type = returnType.type; var type = returnType.type;
@ -148,7 +148,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor {
@override @override
void declaredFunctionTypeAlias(FunctionTypeAlias declaration) { void declaredFunctionTypeAlias(FunctionTypeAlias declaration) {
if (declaration.name.name == targetName) { if (declaration.name2.lexeme == targetName) {
var returnType = declaration.returnType; var returnType = declaration.returnType;
if (returnType != null) { if (returnType != null) {
var type = returnType.type; var type = returnType.type;
@ -162,7 +162,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor {
@override @override
void declaredGenericTypeAlias(GenericTypeAlias declaration) { void declaredGenericTypeAlias(GenericTypeAlias declaration) {
if (declaration.name.name == targetName) { if (declaration.name2.lexeme == targetName) {
var returnType = declaration.functionType?.returnType; var returnType = declaration.functionType?.returnType;
if (returnType != null) { if (returnType != null) {
var type = returnType.type; var type = returnType.type;
@ -183,17 +183,20 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor {
} }
@override @override
void declaredLocalVar(SimpleIdentifier name, TypeAnnotation? type) { void declaredLocalVar(
if (name.name == targetName) { Token name,
var element = name.staticElement as VariableElement; TypeAnnotation? type,
typeFound = element.type; LocalVariableElement declaredElement,
) {
if (name.lexeme == targetName) {
typeFound = declaredElement.type;
finished(); finished();
} }
} }
@override @override
void declaredMethod(MethodDeclaration declaration) { void declaredMethod(MethodDeclaration declaration) {
if (declaration.name.name == targetName) { if (declaration.name2.lexeme == targetName) {
var returnType = declaration.returnType; var returnType = declaration.returnType;
if (returnType != null) { if (returnType != null) {
var type = returnType.type; var type = returnType.type;
@ -216,7 +219,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor {
@override @override
void declaredTopLevelVar( void declaredTopLevelVar(
VariableDeclarationList varList, VariableDeclaration varDecl) { VariableDeclarationList varList, VariableDeclaration varDecl) {
if (varDecl.name.name == targetName) { if (varDecl.name2.lexeme == targetName) {
// Type provided by the element in computeFull above. // Type provided by the element in computeFull above.
finished(); finished();
} }

View file

@ -37,8 +37,12 @@ class VariableNameContributor extends DartCompletionContributor {
strName = _getStringName(expression); strName = _getStringName(expression);
} }
} else if (node is SimpleFormalParameter) { } else if (node is SimpleFormalParameter) {
var identifier = _formalParameterTypeIdentifier(node); var identifier = _formalParameterTypeIdentifier2(node);
strName = _getStringName(identifier); if (identifier != null) {
strName = _getStringName(identifier);
} else {
strName = node.name?.lexeme;
}
} else if (node is VariableDeclarationList) { } else if (node is VariableDeclarationList) {
var identifier = _typeAnnotationIdentifier(node.type); var identifier = _typeAnnotationIdentifier(node.type);
strName = _getStringName(identifier); strName = _getStringName(identifier);
@ -57,7 +61,7 @@ class VariableNameContributor extends DartCompletionContributor {
var varDeclarations = varDeclarationList.variables; var varDeclarations = varDeclarationList.variables;
if (varDeclarations.length == 1) { if (varDeclarations.length == 1) {
var declaration = varDeclarations.first; var declaration = varDeclarations.first;
strName = _getStringName(declaration.name); strName = declaration.name2.lexeme;
} }
} }
} }
@ -100,13 +104,12 @@ class VariableNameContributor extends DartCompletionContributor {
return id.name; return id.name;
} }
static Identifier? _formalParameterTypeIdentifier(FormalParameter node) { static Identifier? _formalParameterTypeIdentifier2(FormalParameter node) {
if (node is SimpleFormalParameter) { if (node is SimpleFormalParameter) {
var type = node.type; var type = node.type;
if (type != null) { if (type != null) {
return _typeAnnotationIdentifier(type); return _typeAnnotationIdentifier(type);
} }
return node.identifier;
} }
return null; return null;
} }

View file

@ -238,6 +238,8 @@ class CorrectionProducerContext {
final AstNode node; final AstNode node;
final Token token;
CorrectionProducerContext._({ CorrectionProducerContext._({
required this.resolvedResult, required this.resolvedResult,
required this.workspace, required this.workspace,
@ -245,6 +247,7 @@ class CorrectionProducerContext {
this.dartFixContext, this.dartFixContext,
this.diagnostic, this.diagnostic,
required this.node, required this.node,
required this.token,
this.overrideSet, this.overrideSet,
this.selectionOffset = -1, this.selectionOffset = -1,
this.selectionLength = 0, this.selectionLength = 0,
@ -271,10 +274,13 @@ class CorrectionProducerContext {
var node = locator.searchWithin(resolvedResult.unit); var node = locator.searchWithin(resolvedResult.unit);
node ??= resolvedResult.unit; node ??= resolvedResult.unit;
final token = _tokenAt(node, selectionOffset) ?? node.beginToken;
return CorrectionProducerContext._( return CorrectionProducerContext._(
resolvedResult: resolvedResult, resolvedResult: resolvedResult,
workspace: workspace, workspace: workspace,
node: node, node: node,
token: token,
applyingBulkFixes: applyingBulkFixes, applyingBulkFixes: applyingBulkFixes,
dartFixContext: dartFixContext, dartFixContext: dartFixContext,
diagnostic: diagnostic, diagnostic: diagnostic,
@ -283,6 +289,21 @@ class CorrectionProducerContext {
selectionLength: selectionLength, selectionLength: selectionLength,
); );
} }
static Token? _tokenAt(AstNode node, int offset) {
for (final entity in node.childEntities) {
if (entity is AstNode) {
if (entity.offset <= offset && offset <= entity.end) {
return _tokenAt(entity, offset);
}
} else if (entity is Token) {
if (entity.offset <= offset && offset <= entity.end) {
return entity;
}
}
}
return null;
}
} }
abstract class CorrectionProducerWithDiagnostic extends CorrectionProducer { abstract class CorrectionProducerWithDiagnostic extends CorrectionProducer {
@ -437,6 +458,8 @@ abstract class _AbstractCorrectionProducer {
AnalysisSessionHelper get sessionHelper => _context.sessionHelper; AnalysisSessionHelper get sessionHelper => _context.sessionHelper;
Token get token => _context.token;
TypeProvider get typeProvider => _context.typeProvider; TypeProvider get typeProvider => _context.typeProvider;
/// Return the type system appropriate to the library in which the correction /// Return the type system appropriate to the library in which the correction

View file

@ -48,7 +48,7 @@ class AddCallSuper extends CorrectionProducer {
var parameters = methodDeclaration.parameters?.parameters; var parameters = methodDeclaration.parameters?.parameters;
var argumentList = parameters var argumentList = parameters
?.map((p) { ?.map((p) {
var name = p.identifier?.name; var name = p.name?.lexeme;
if (overriddenParameters.contains(name)) { if (overriddenParameters.contains(name)) {
return p.isNamed ? '$name: $name' : name; return p.isNamed ? '$name: $name' : name;
} }

View file

@ -116,7 +116,7 @@ class AddDiagnosticPropertyReference extends CorrectionProducer {
final debugFillProperties = classDeclaration.members final debugFillProperties = classDeclaration.members
.whereType<MethodDeclaration>() .whereType<MethodDeclaration>()
.where((e) => e.name.name == 'debugFillProperties') .where((e) => e.name2.lexeme == 'debugFillProperties')
.singleOrNull; .singleOrNull;
if (debugFillProperties == null) { if (debugFillProperties == null) {
var location = utils.prepareNewMethodLocation(classDeclaration); var location = utils.prepareNewMethodLocation(classDeclaration);
@ -167,10 +167,10 @@ class AddDiagnosticPropertyReference extends CorrectionProducer {
for (var parameter in parameterList.parameters) { for (var parameter in parameterList.parameters) {
if (parameter is SimpleFormalParameter) { if (parameter is SimpleFormalParameter) {
final type = parameter.type; final type = parameter.type;
final identifier = parameter.identifier; final identifier = parameter.name;
if (type is NamedType && identifier != null) { if (type is NamedType && identifier != null) {
if (type.name.name == 'DiagnosticPropertiesBuilder') { if (type.name.name == 'DiagnosticPropertiesBuilder') {
propertiesBuilderName = identifier.name; propertiesBuilderName = identifier.lexeme;
break; break;
} }
} }

View file

@ -64,7 +64,7 @@ class AddEnumConstant extends CorrectionProducer {
var length = constructors.length; var length = constructors.length;
if (length > 1) return; if (length > 1) return;
var name = length == 1 ? constructors.first.name?.name : null; var name = length == 1 ? constructors.first.name2?.lexeme : null;
var offset = targetNode.constants.last.end; var offset = targetNode.constants.last.end;

View file

@ -6,7 +6,7 @@ import 'package:analysis_server/src/services/correction/assist.dart';
import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart'; import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
import 'package:analysis_server/src/services/correction/fix.dart'; import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/syntactic_entity.dart'; import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_system.dart'; import 'package:analyzer/dart/element/type_system.dart';
@ -33,27 +33,28 @@ class AddReturnType extends CorrectionProducer {
@override @override
Future<void> compute(ChangeBuilder builder) async { Future<void> compute(ChangeBuilder builder) async {
SyntacticEntity? insertBeforeEntity; Token? insertBeforeEntity;
FunctionBody? body; FunctionBody? body;
if (node is SimpleIdentifier) { if (node is SimpleIdentifier) {
var executable = node.parent; var executable = node.parent;
if (executable is MethodDeclaration && executable.name == node) { if (executable is MethodDeclaration && executable.name2 == token) {
if (executable.returnType != null) { if (executable.returnType != null) {
return; return;
} }
if (executable.isSetter) { if (executable.isSetter) {
return; return;
} }
insertBeforeEntity = executable.propertyKeyword ?? executable.name; insertBeforeEntity = executable.propertyKeyword ?? executable.name2;
body = executable.body; body = executable.body;
} else if (executable is FunctionDeclaration && executable.name == node) { } else if (executable is FunctionDeclaration &&
executable.name2 == token) {
if (executable.returnType != null) { if (executable.returnType != null) {
return; return;
} }
if (executable.isSetter) { if (executable.isSetter) {
return; return;
} }
insertBeforeEntity = executable.propertyKeyword ?? executable.name; insertBeforeEntity = executable.propertyKeyword ?? executable.name2;
body = executable.functionExpression.body; body = executable.functionExpression.body;
} else { } else {
return; return;

View file

@ -120,7 +120,7 @@ class AddTypeAnnotation extends CorrectionProducer {
return; return;
} }
await _applyChange(builder, declaredIdentifier.keyword, await _applyChange(builder, declaredIdentifier.keyword,
declaredIdentifier.identifier.offset, type); declaredIdentifier.name.offset, type);
} }
Future<void> _forSimpleFormalParameter(ChangeBuilder builder, Future<void> _forSimpleFormalParameter(ChangeBuilder builder,
@ -150,7 +150,7 @@ class AddTypeAnnotation extends CorrectionProducer {
final variables = declarationList.variables; final variables = declarationList.variables;
final variable = variables[0]; final variable = variables[0];
// Ensure that the selection is not after the name of the variable. // Ensure that the selection is not after the name of the variable.
if (selectionOffset > variable.name.end) { if (selectionOffset > variable.name2.end) {
return; return;
} }
// Ensure that there is an initializer to get the type from. // Ensure that there is an initializer to get the type from.

View file

@ -8,6 +8,8 @@ import 'package:analysis_server/src/services/correction/levenshtein.dart';
import 'package:analysis_server/src/services/correction/util.dart'; import 'package:analysis_server/src/services/correction/util.dart';
import 'package:analysis_server/src/services/search/hierarchy.dart'; import 'package:analysis_server/src/services/search/hierarchy.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/syntactic_entity.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart'; import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
import 'package:analyzer_plugin/utilities/fixes/fixes.dart'; import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
@ -82,7 +84,7 @@ class ChangeTo extends CorrectionProducer {
return element.parameters.where((superParam) => return element.parameters.where((superParam) =>
superParam.isNamed && superParam.isNamed &&
!formalParameters !formalParameters
.any((param) => superParam.name == param.identifier?.name)); .any((param) => superParam.name == param.name?.lexeme));
} }
Future<void> _proposeAnnotation(ChangeBuilder builder) async { Future<void> _proposeAnnotation(ChangeBuilder builder) async {
@ -130,17 +132,14 @@ class ChangeTo extends CorrectionProducer {
} }
} }
Future<void> _proposeClassOrMixinMember( Future<void> _proposeClassOrMixinMember(ChangeBuilder builder, Token node,
ChangeBuilder builder, Expression? target, _ElementPredicate predicate) async {
SimpleIdentifier node,
Expression? target,
_ElementPredicate predicate) async {
var targetIdentifierElement = var targetIdentifierElement =
target is Identifier ? target.staticElement : null; target is Identifier ? target.staticElement : null;
var finder = _ClosestElementFinder(node.name, predicate); var finder = _ClosestElementFinder(node.lexeme, predicate);
// unqualified invocation // unqualified invocation
if (target == null) { if (target == null) {
var clazz = node.thisOrAncestorOfType<ClassDeclaration>(); var clazz = this.node.thisOrAncestorOfType<ClassDeclaration>();
if (clazz != null) { if (clazz != null) {
var classElement = clazz.declaredElement!; var classElement = clazz.declaredElement!;
_updateFinderWithClassMembers(finder, classElement); _updateFinderWithClassMembers(finder, classElement);
@ -177,7 +176,7 @@ class ChangeTo extends CorrectionProducer {
var formalParameterList = node.thisOrAncestorOfType<FormalParameterList>(); var formalParameterList = node.thisOrAncestorOfType<FormalParameterList>();
if (formalParameterList != null) { if (formalParameterList != null) {
for (var parameter in formalParameterList.parameters) { for (var parameter in formalParameterList.parameters) {
var name = parameter.identifier?.name; var name = parameter.name?.lexeme;
if (name != null) { if (name != null) {
exclusions.add(name); exclusions.add(name);
} }
@ -185,7 +184,7 @@ class ChangeTo extends CorrectionProducer {
} }
var type = node.type?.type; var type = node.type?.type;
await _proposeClassOrMixinMember(builder, node.identifier, null, await _proposeClassOrMixinMember(builder, node.name, null,
(Element element) { (Element element) {
return element is FieldElement && return element is FieldElement &&
!exclusions.contains(element.name) && !exclusions.contains(element.name) &&
@ -245,7 +244,7 @@ class ChangeTo extends CorrectionProducer {
// find getter or setter // find getter or setter
var wantGetter = node.inGetterContext(); var wantGetter = node.inGetterContext();
var wantSetter = node.inSetterContext(); var wantSetter = node.inSetterContext();
await _proposeClassOrMixinMember(builder, node, target, await _proposeClassOrMixinMember(builder, node.token, target,
(Element element) { (Element element) {
if (element is PropertyAccessorElement) { if (element is PropertyAccessorElement) {
return wantGetter && element.isGetter || return wantGetter && element.isGetter ||
@ -263,7 +262,7 @@ class ChangeTo extends CorrectionProducer {
final node = this.node; final node = this.node;
var parent = node.parent; var parent = node.parent;
if (parent is MethodInvocation && node is SimpleIdentifier) { if (parent is MethodInvocation && node is SimpleIdentifier) {
await _proposeClassOrMixinMember(builder, node, parent.realTarget, await _proposeClassOrMixinMember(builder, node.token, parent.realTarget,
(Element element) => element is MethodElement && !element.isOperator); (Element element) => element is MethodElement && !element.isOperator);
} }
} }
@ -279,8 +278,7 @@ class ChangeTo extends CorrectionProducer {
var formalParameters = constructorDeclaration.parameters.parameters var formalParameters = constructorDeclaration.parameters.parameters
.whereType<DefaultFormalParameter>(); .whereType<DefaultFormalParameter>();
var finder = var finder = _ClosestElementFinder(parent.name.lexeme, (Element e) => true);
_ClosestElementFinder(parent.identifier.name, (Element e) => true);
var superInvocation = constructorDeclaration.initializers.lastOrNull; var superInvocation = constructorDeclaration.initializers.lastOrNull;
@ -312,11 +310,11 @@ class ChangeTo extends CorrectionProducer {
} }
Future<void> _suggest( Future<void> _suggest(
ChangeBuilder builder, AstNode node, String? name) async { ChangeBuilder builder, SyntacticEntity node, String? name) async {
if (name != null) { if (name != null) {
_proposedName = name; _proposedName = name;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement(range.node(node), _proposedName); builder.addSimpleReplacement(range.entity(node), _proposedName);
}); });
} }
} }

View file

@ -51,12 +51,8 @@ class ConvertClassToEnum extends CorrectionProducer {
// the class. // the class.
return; return;
} }
var node = this.node;
if (node is! SimpleIdentifier) {
return;
}
var parent = node.parent; var parent = node.parent;
if (parent is ClassDeclaration && parent.name == node) { if (parent is ClassDeclaration && parent.name2 == token) {
var description = _EnumDescription.fromClass(parent); var description = _EnumDescription.fromClass(parent);
if (description != null) { if (description != null) {
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
@ -309,7 +305,7 @@ class _EnumDescription {
return null; return null;
} }
var constructor = constructors[0]; var constructor = constructors[0];
var name = constructor.name?.name; var name = constructor.name2?.lexeme;
if (name != null && name != 'new') { if (name != null && name != 'new') {
return null; return null;
} }
@ -634,7 +630,8 @@ class _EnumDescription {
static bool _validateMethods(ClassDeclaration classDeclaration) { static bool _validateMethods(ClassDeclaration classDeclaration) {
for (var member in classDeclaration.members) { for (var member in classDeclaration.members) {
if (member is MethodDeclaration) { if (member is MethodDeclaration) {
if (member.name.name == '==' || member.name.name == 'hashCode') { final name = member.name2.lexeme;
if (name == '==' || name == 'hashCode') {
return false; return false;
} }
} }
@ -700,7 +697,7 @@ class _Field {
this.fieldDeclaration); this.fieldDeclaration);
/// Return the name of the field. /// Return the name of the field.
String get name => declaration.name.name; String get name => declaration.name2.lexeme;
} }
/// A representation of all the fields of interest in the class being converted. /// A representation of all the fields of interest in the class being converted.

View file

@ -22,7 +22,7 @@ class ConvertClassToMixin extends CorrectionProducer {
if (classDeclaration == null) { if (classDeclaration == null) {
return; return;
} }
if (selectionOffset > classDeclaration.name.end || if (selectionOffset > classDeclaration.name2.end ||
selectionEnd < classDeclaration.classKeyword.offset) { selectionEnd < classDeclaration.classKeyword.offset) {
return; return;
} }
@ -61,7 +61,7 @@ class ConvertClassToMixin extends CorrectionProducer {
classDeclaration.abstractKeyword ?? classDeclaration.classKeyword, classDeclaration.abstractKeyword ?? classDeclaration.classKeyword,
classDeclaration.leftBracket), (builder) { classDeclaration.leftBracket), (builder) {
builder.write('mixin '); builder.write('mixin ');
builder.write(classDeclaration.name.name); builder.write(classDeclaration.name2.lexeme);
builder.writeTypeParameters(classElement.typeParameters); builder.writeTypeParameters(classElement.typeParameters);
builder.writeTypes(superclassConstraints, prefix: ' on '); builder.writeTypes(superclassConstraints, prefix: ' on ');
builder.writeTypes(interfaces, prefix: ' implements '); builder.writeTypes(interfaces, prefix: ' implements ');

View file

@ -46,7 +46,7 @@ class ConvertForEachToForLoop extends CorrectionProducer {
if (parameter is! NormalFormalParameter) { if (parameter is! NormalFormalParameter) {
return; return;
} }
var loopVariableName = parameter.identifier?.name; var loopVariableName = parameter.name?.lexeme;
if (loopVariableName == null) { if (loopVariableName == null) {
return; return;
} }

View file

@ -76,7 +76,7 @@ class ConvertIntoFinalField extends CorrectionProducer {
if (returnType != null) { if (returnType != null) {
code += ' ${utils.getNodeText(returnType)}'; code += ' ${utils.getNodeText(returnType)}';
} }
code += ' ${utils.getNodeText(getter.name)}'; code += ' ${getter.name2.lexeme}';
if (expression is! NullLiteral) { if (expression is! NullLiteral) {
code += ' = ${utils.getNodeText(expression)}'; code += ' = ${utils.getNodeText(expression)}';
} }

View file

@ -54,7 +54,7 @@ class ConvertIntoGetter extends CorrectionProducer {
code += '${utils.getNodeText(typeAnnotation)} '; code += '${utils.getNodeText(typeAnnotation)} ';
} }
code += 'get'; code += 'get';
code += ' ${utils.getNodeText(field.name)}'; code += ' ${field.name2.lexeme}';
code += ' => ${utils.getNodeText(initializer)}'; code += ' => ${utils.getNodeText(initializer)}';
code += ';'; code += ';';
var replacementRange = range.startEnd(finalKeyword, fieldDeclaration); var replacementRange = range.startEnd(finalKeyword, fieldDeclaration);

View file

@ -6,6 +6,7 @@ import 'package:analysis_server/src/services/correction/assist.dart';
import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart'; import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
import 'package:analysis_server/src/services/correction/fix.dart'; import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer_plugin/utilities/assist/assist.dart'; import 'package:analyzer_plugin/utilities/assist/assist.dart';
@ -67,9 +68,9 @@ class ConvertMapFromIterableToForLiteral extends CorrectionProducer {
// necessary. // necessary.
// //
var keyParameter = keyClosure.parameter; var keyParameter = keyClosure.parameter;
var keyParameterName = keyClosure.parameterIdentifier.name; var keyParameterName = keyClosure.parameterIdentifier.lexeme;
var valueParameter = valueClosure.parameter; var valueParameter = valueClosure.parameter;
var valueParameterName = valueClosure.parameterIdentifier.name; var valueParameterName = valueClosure.parameterIdentifier.lexeme;
var keyExpressionText = utils.getNodeText(keyClosure.body); var keyExpressionText = utils.getNodeText(keyClosure.body);
var valueExpressionText = utils.getNodeText(valueClosure.body); var valueExpressionText = utils.getNodeText(valueClosure.body);
@ -172,7 +173,7 @@ class ConvertMapFromIterableToForLiteral extends CorrectionProducer {
var parameter = parameters[0]; var parameter = parameters[0];
if (parameter is SimpleFormalParameter && if (parameter is SimpleFormalParameter &&
parameter.isRequiredPositional) { parameter.isRequiredPositional) {
var parameterIdentifier = parameter.identifier; var parameterIdentifier = parameter.name;
if (parameterIdentifier != null) { if (parameterIdentifier != null) {
var body = _extractBody(expression); var body = _extractBody(expression);
if (body != null) { if (body != null) {
@ -190,7 +191,7 @@ class ConvertMapFromIterableToForLiteral extends CorrectionProducer {
class _Closure { class _Closure {
final SimpleFormalParameter parameter; final SimpleFormalParameter parameter;
final SimpleIdentifier parameterIdentifier; final Token parameterIdentifier;
final Expression body; final Expression body;
_Closure(this.parameter, this.parameterIdentifier, this.body); _Closure(this.parameter, this.parameterIdentifier, this.body);

View file

@ -5,6 +5,7 @@
import 'package:analysis_server/src/services/correction/assist.dart'; import 'package:analysis_server/src/services/correction/assist.dart';
import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart'; import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer_plugin/utilities/assist/assist.dart'; import 'package:analyzer_plugin/utilities/assist/assist.dart';
@ -24,7 +25,7 @@ class ConvertToFieldParameter extends CorrectionProducer {
} }
// analyze parameter // analyze parameter
var parameterName = context.identifier.name; var parameterName = context.identifier.lexeme;
var parameterElement = context.parameter.declaredElement!; var parameterElement = context.parameter.declaredElement!;
var initializers = context.constructor.initializers; var initializers = context.constructor.initializers;
@ -88,7 +89,7 @@ class ConvertToFieldParameter extends CorrectionProducer {
static _Context? _findParameter(AstNode node) { static _Context? _findParameter(AstNode node) {
var parent = node.parent; var parent = node.parent;
if (parent is SimpleFormalParameter) { if (parent is SimpleFormalParameter) {
var identifier = parent.identifier; var identifier = parent.name;
if (identifier == null) return null; if (identifier == null) return null;
var formalParameterList = parent.parent; var formalParameterList = parent.parent;
@ -111,8 +112,8 @@ class ConvertToFieldParameter extends CorrectionProducer {
if (parent.expression == node) { if (parent.expression == node) {
for (var formalParameter in constructor.parameters.parameters) { for (var formalParameter in constructor.parameters.parameters) {
if (formalParameter is SimpleFormalParameter) { if (formalParameter is SimpleFormalParameter) {
var identifier = formalParameter.identifier; var identifier = formalParameter.name;
if (identifier != null && identifier.name == node.name) { if (identifier != null && identifier.lexeme == node.name) {
return _Context( return _Context(
parameter: formalParameter, parameter: formalParameter,
identifier: identifier, identifier: identifier,
@ -130,7 +131,7 @@ class ConvertToFieldParameter extends CorrectionProducer {
class _Context { class _Context {
final SimpleFormalParameter parameter; final SimpleFormalParameter parameter;
final SimpleIdentifier identifier; final Token identifier;
final ConstructorDeclaration constructor; final ConstructorDeclaration constructor;
_Context({ _Context({

View file

@ -76,7 +76,7 @@ class ConvertToGenericFunctionSyntax extends CorrectionProducer {
} }
var functionName = utils.getRangeText( var functionName = utils.getRangeText(
range.startEnd(node.name, node.typeParameters ?? node.name)); range.startEnd(node.name2, node.typeParameters ?? node.name2));
var parameters = utils.getNodeText(node.parameters); var parameters = utils.getNodeText(node.parameters);
String replacement; String replacement;
if (returnType == null) { if (returnType == null) {
@ -102,8 +102,8 @@ class ConvertToGenericFunctionSyntax extends CorrectionProducer {
var returnTypeNode = node.returnType; var returnTypeNode = node.returnType;
var returnType = var returnType =
returnTypeNode != null ? '${utils.getNodeText(returnTypeNode)} ' : ''; returnTypeNode != null ? '${utils.getNodeText(returnTypeNode)} ' : '';
var functionName = utils.getRangeText(range.startEnd( var functionName = utils.getRangeText(
node.identifier, node.typeParameters ?? node.identifier)); range.startEnd(node.name, node.typeParameters ?? node.name));
var parameters = utils.getNodeText(node.parameters); var parameters = utils.getNodeText(node.parameters);
var question = node.question != null ? '?' : ''; var question = node.question != null ? '?' : '';
var replacement = var replacement =

View file

@ -39,7 +39,7 @@ class ConvertToInitializingFormal extends CorrectionProducer {
if (parameter == null) { if (parameter == null) {
return; return;
} }
var identifier = parameter.identifier; var identifier = parameter.name;
if (identifier == null) { if (identifier == null) {
return; return;
} }
@ -51,7 +51,7 @@ class ConvertToInitializingFormal extends CorrectionProducer {
builder.addSimpleInsertion(identifier.offset, 'this.'); builder.addSimpleInsertion(identifier.offset, 'this.');
} else { } else {
builder.addSimpleReplacement( builder.addSimpleReplacement(
range.node(parameter), 'this.${identifier.name}'); range.node(parameter), 'this.${identifier.lexeme}');
} }
var statements = block.statements; var statements = block.statements;
@ -68,7 +68,7 @@ class ConvertToInitializingFormal extends CorrectionProducer {
if (parameter == null) { if (parameter == null) {
return; return;
} }
var identifier = parameter.identifier; var identifier = parameter.name;
if (identifier == null) { if (identifier == null) {
return; return;
} }
@ -85,7 +85,7 @@ class ConvertToInitializingFormal extends CorrectionProducer {
builder.addSimpleInsertion(identifier.offset, 'this.'); builder.addSimpleInsertion(identifier.offset, 'this.');
} else { } else {
builder.addSimpleReplacement( builder.addSimpleReplacement(
range.node(parameter), 'this.${identifier.name}'); range.node(parameter), 'this.${identifier.lexeme}');
} }
var initializers = constructor.initializers; var initializers = constructor.initializers;

View file

@ -241,7 +241,7 @@ class ConvertToSuperParameters extends CorrectionProducer {
} }
var parameterNode = parameter.parameter; var parameterNode = parameter.parameter;
var identifier = parameterNode.identifier; var identifier = parameterNode.name;
if (identifier == null) { if (identifier == null) {
// This condition should never occur, but the test is here to promote the // This condition should never occur, but the test is here to promote the
// type. // type.
@ -272,7 +272,7 @@ class ConvertToSuperParameters extends CorrectionProducer {
var superDefault = superParameter.computeConstantValue(); var superDefault = superParameter.computeConstantValue();
var thisDefault = thisParameter.computeConstantValue(); var thisDefault = thisParameter.computeConstantValue();
if (superDefault != null && superDefault == thisDefault) { if (superDefault != null && superDefault == thisDefault) {
return range.endEnd(parameter.identifier!, defaultValue); return range.endEnd(parameter.name!, defaultValue);
} }
} }
} }
@ -410,14 +410,13 @@ class ConvertToSuperParameters extends CorrectionProducer {
var typeAnnotation = parameter.type; var typeAnnotation = parameter.type;
if (typeAnnotation != null) { if (typeAnnotation != null) {
return _TypeData( return _TypeData(
primaryRange: primaryRange: range.startStart(typeAnnotation, parameter.name!));
range.startStart(typeAnnotation, parameter.identifier!));
} }
} else if (parameter is FunctionTypedFormalParameter) { } else if (parameter is FunctionTypedFormalParameter) {
var returnType = parameter.returnType; var returnType = parameter.returnType;
return _TypeData( return _TypeData(
primaryRange: returnType != null primaryRange: returnType != null
? range.startStart(returnType, parameter.identifier) ? range.startStart(returnType, parameter.name)
: null, : null,
parameterRange: range.node(parameter.parameters)); parameterRange: range.node(parameter.parameters));
} }
@ -452,7 +451,7 @@ class _ParameterData {
final _TypeData? typeToDelete; final _TypeData? typeToDelete;
/// The name. /// The name.
final Identifier name; final Token name;
/// Whether to add a default initializer with `null` value or not. /// Whether to add a default initializer with `null` value or not.
final bool nullInitializer; final bool nullInitializer;

View file

@ -6,6 +6,7 @@ import 'package:analysis_server/src/services/correction/dart/abstract_producer.d
import 'package:analysis_server/src/services/correction/fix.dart'; import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analysis_server/src/services/correction/util.dart'; import 'package:analysis_server/src/services/correction/util.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart'; import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
@ -36,22 +37,23 @@ class CreateConstructor extends CorrectionProducer {
if (node is SimpleIdentifier) { if (node is SimpleIdentifier) {
var parent = node.parent; var parent = node.parent;
if (parent is ConstructorName) { if (parent is ConstructorName) {
await _proposeFromConstructorName(builder, node, parent); await _proposeFromConstructorName(builder, node.token, parent);
return; return;
} }
} }
var parent = node.thisOrAncestorOfType<EnumConstantDeclaration>(); var parent = node.thisOrAncestorOfType<EnumConstantDeclaration>();
if (parent != null) { if (parent != null) {
await _proposeFromEnumConstantDeclaration(builder, parent.name, parent); await _proposeFromEnumConstantDeclaration(
builder, parent.name2, parent);
} }
} }
} }
Future<void> _proposeFromConstructorName(ChangeBuilder builder, Future<void> _proposeFromConstructorName(ChangeBuilder builder, Token name,
SimpleIdentifier name, ConstructorName constructorName) async { ConstructorName constructorName) async {
InstanceCreationExpression? instanceCreation; InstanceCreationExpression? instanceCreation;
_constructorName = constructorName.toSource(); _constructorName = constructorName.toSource();
if (constructorName.name == name) { if (constructorName.name?.token == name) {
var grandParent = constructorName.parent; var grandParent = constructorName.parent;
// Type.name // Type.name
if (grandParent is InstanceCreationExpression) { if (grandParent is InstanceCreationExpression) {
@ -101,8 +103,8 @@ class CreateConstructor extends CorrectionProducer {
constructorName: name, argumentList: instanceCreation.argumentList); constructorName: name, argumentList: instanceCreation.argumentList);
} }
Future<void> _proposeFromEnumConstantDeclaration(ChangeBuilder builder, Future<void> _proposeFromEnumConstantDeclaration(
SimpleIdentifier name, EnumConstantDeclaration parent) async { ChangeBuilder builder, Token name, EnumConstantDeclaration parent) async {
var grandParent = parent.parent; var grandParent = parent.parent;
if (grandParent is! EnumDeclaration) { if (grandParent is! EnumDeclaration) {
return; return;
@ -137,7 +139,7 @@ class CreateConstructor extends CorrectionProducer {
var arguments = parent.arguments; var arguments = parent.arguments;
_constructorName = _constructorName =
'${targetNode.name}${arguments?.constructorSelector ?? ''}'; '${targetNode.name2.lexeme}${arguments?.constructorSelector ?? ''}';
await _write( await _write(
builder, builder,
@ -145,7 +147,7 @@ class CreateConstructor extends CorrectionProducer {
targetElement, targetElement,
targetLocation, targetLocation,
isConst: true, isConst: true,
constructorName: arguments?.constructorSelector?.name, constructorName: arguments?.constructorSelector?.name.token,
argumentList: arguments?.argumentList, argumentList: arguments?.argumentList,
); );
} }
@ -199,10 +201,10 @@ class CreateConstructor extends CorrectionProducer {
Future<void> _write( Future<void> _write(
ChangeBuilder builder, ChangeBuilder builder,
SimpleIdentifier name, Token name,
ClassElement targetElement, ClassElement targetElement,
InsertionLocation targetLocation, { InsertionLocation targetLocation, {
SimpleIdentifier? constructorName, Token? constructorName,
bool isConst = false, bool isConst = false,
ArgumentList? argumentList, ArgumentList? argumentList,
}) async { }) async {
@ -213,12 +215,12 @@ class CreateConstructor extends CorrectionProducer {
builder.writeConstructorDeclaration(targetElement.name, builder.writeConstructorDeclaration(targetElement.name,
isConst: isConst, isConst: isConst,
argumentList: argumentList, argumentList: argumentList,
constructorName: constructorName, constructorName: constructorName?.lexeme,
constructorNameGroupName: 'NAME'); constructorNameGroupName: 'NAME');
builder.write(targetLocation.suffix); builder.write(targetLocation.suffix);
}); });
if (targetFile == file) { if (targetFile == file) {
builder.addLinkedPosition(range.node(name), 'NAME'); builder.addLinkedPosition(range.token(name), 'NAME');
} }
}); });
} }

View file

@ -28,7 +28,7 @@ class CreateConstructorForFinalFields extends CorrectionProducer {
return; return;
} }
var className = classDeclaration.name.name; var className = classDeclaration.name2.lexeme;
var superType = classDeclaration.declaredElement?.supertype; var superType = classDeclaration.declaredElement?.supertype;
if (superType == null) { if (superType == null) {
return; return;
@ -70,7 +70,7 @@ class CreateConstructorForFinalFields extends CorrectionProducer {
for (var variableList in variableLists) { for (var variableList in variableLists) {
fieldNames.addAll(variableList.variables fieldNames.addAll(variableList.variables
.where((v) => v.initializer == null) .where((v) => v.initializer == null)
.map((v) => v.name.name)); .map((v) => v.name2.lexeme));
} }
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
@ -143,7 +143,7 @@ class CreateConstructorForFinalFields extends CorrectionProducer {
for (var variableList in variableLists) { for (var variableList in variableLists) {
var fieldNames = variableList.variables var fieldNames = variableList.variables
.where((v) => v.initializer == null) .where((v) => v.initializer == null)
.map((v) => v.name.name); .map((v) => v.name2.lexeme);
for (var fieldName in fieldNames) { for (var fieldName in fieldNames) {
if (fieldName == 'child' || fieldName == 'children') { if (fieldName == 'child' || fieldName == 'children') {

View file

@ -37,8 +37,7 @@ class CreateField extends CorrectionProducer {
return; return;
} }
var nameNode = parameter.identifier; _fieldName = parameter.name.lexeme;
_fieldName = nameNode.name;
var targetLocation = utils.prepareNewFieldLocation(targetClassNode); var targetLocation = utils.prepareNewFieldLocation(targetClassNode);
if (targetLocation == null) { if (targetLocation == null) {

View file

@ -68,7 +68,7 @@ class CreateMethod extends CorrectionProducer {
final classElement = classDecl.declaredElement!; final classElement = classDecl.declaredElement!;
var missingEquals = memberDecl is FieldDeclaration || var missingEquals = memberDecl is FieldDeclaration ||
(memberDecl as MethodDeclaration).name.name == 'hashCode'; (memberDecl as MethodDeclaration).name2.lexeme == 'hashCode';
ExecutableElement? element; ExecutableElement? element;
if (missingEquals) { if (missingEquals) {
_memberName = '=='; _memberName = '==';

View file

@ -34,7 +34,7 @@ class DataDriven extends MultiCorrectionProducer {
importedUris.add(uri.relativeUri); importedUris.add(uri.relativeUri);
} }
} }
var matchers = ElementMatcher.matchersForNode(node); var matchers = ElementMatcher.matchersForNode(node, token);
if (matchers.isEmpty) { if (matchers.isEmpty) {
// The node doesn't represent any element that can be transformed. // The node doesn't represent any element that can be transformed.
return; return;

View file

@ -40,15 +40,15 @@ class EncapsulateField extends CorrectionProducer {
return; return;
} }
var field = fields.first; var field = fields.first;
var nameNode = field.name; var nameToken = field.name2;
var fieldElement = field.declaredElement as FieldElement; var fieldElement = field.declaredElement as FieldElement;
// should have a public name // should have a public name
var name = nameNode.name; var name = nameToken.lexeme;
if (Identifier.isPrivateName(name)) { if (Identifier.isPrivateName(name)) {
return; return;
} }
// should be on the name // should be on the name
if (nameNode != node) { if (nameToken != token) {
return; return;
} }
@ -60,17 +60,17 @@ class EncapsulateField extends CorrectionProducer {
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
// rename field // rename field
builder.addSimpleReplacement(range.node(nameNode), '_$name'); builder.addSimpleReplacement(range.token(nameToken), '_$name');
// update references in constructors // update references in constructors
for (var member in classDeclaration.members) { for (var member in classDeclaration.members) {
if (member is ConstructorDeclaration) { if (member is ConstructorDeclaration) {
for (var parameter in member.parameters.parameters) { for (var parameter in member.parameters.parameters) {
var identifier = parameter.identifier; var identifier = parameter.name;
var parameterElement = parameter.declaredElement; var parameterElement = parameter.declaredElement;
if (identifier != null && if (identifier != null &&
parameterElement is FieldFormalParameterElement && parameterElement is FieldFormalParameterElement &&
parameterElement.field == fieldElement) { parameterElement.field == fieldElement) {
builder.addSimpleReplacement(range.node(identifier), '_$name'); builder.addSimpleReplacement(range.token(identifier), '_$name');
} }
} }
} }

View file

@ -34,7 +34,7 @@ class ExtendClassForMixin extends CorrectionProducer {
_typeName = message.substring(startIndex, endIndex); _typeName = message.substring(startIndex, endIndex);
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion( builder.addSimpleInsertion(
declaration.typeParameters?.end ?? declaration.name.end, declaration.typeParameters?.end ?? declaration.name2.end,
' extends $_typeName'); ' extends $_typeName');
}); });
} }

View file

@ -146,7 +146,7 @@ class FlutterConvertToStatefulWidget extends CorrectionProducer {
builder.writeln(' @override'); builder.writeln(' @override');
builder.write(' '); builder.write(' ');
builder.writeReference(stateClass); builder.writeReference(stateClass);
builder.write('<${widgetClass.name}$typeParams>'); builder.write('<${widgetClass.name2.lexeme}$typeParams>');
builder.writeln(' createState() => $stateName$typeParams();'); builder.writeln(' createState() => $stateName$typeParams();');
if (hasEmptyLineAfterCreateState) { if (hasEmptyLineAfterCreateState) {
builder.writeln(); builder.writeln();
@ -205,7 +205,7 @@ class FlutterConvertToStatefulWidget extends CorrectionProducer {
builder.writeReference(stateClass); builder.writeReference(stateClass);
// Write just param names (and not bounds, metadata and docs). // Write just param names (and not bounds, metadata and docs).
builder.write('<${widgetClass.name}'); builder.write('<${widgetClass.name2.lexeme}');
if (typeParameters != null) { if (typeParameters != null) {
builder.write('<'); builder.write('<');
var first = true; var first = true;
@ -214,7 +214,7 @@ class FlutterConvertToStatefulWidget extends CorrectionProducer {
builder.write(', '); builder.write(', ');
first = false; first = false;
} }
builder.write(param.name.name); builder.write(param.name2.lexeme);
} }
builder.write('>'); builder.write('>');
} }
@ -247,7 +247,7 @@ class FlutterConvertToStatefulWidget extends CorrectionProducer {
MethodDeclaration? _findBuildMethod(ClassDeclaration widgetClass) { MethodDeclaration? _findBuildMethod(ClassDeclaration widgetClass) {
for (var member in widgetClass.members) { for (var member in widgetClass.members) {
if (member is MethodDeclaration && member.name.name == 'build') { if (member is MethodDeclaration && member.name2.lexeme == 'build') {
var parameters = member.parameters; var parameters = member.parameters;
if (parameters != null && parameters.parameters.length == 1) { if (parameters != null && parameters.parameters.length == 1) {
return member; return member;

View file

@ -48,7 +48,7 @@ class FlutterConvertToStatelessWidget extends CorrectionProducer {
var stateClassElement = stateClass?.declaredElement; var stateClassElement = stateClass?.declaredElement;
if (stateClass == null || if (stateClass == null ||
stateClassElement == null || stateClassElement == null ||
!Identifier.isPrivateName(stateClass.name.name) || !Identifier.isPrivateName(stateClass.name2.lexeme) ||
!_isSameTypeParameters(widgetClass, stateClass)) { !_isSameTypeParameters(widgetClass, stateClass)) {
return; return;
} }
@ -170,7 +170,7 @@ class FlutterConvertToStatelessWidget extends CorrectionProducer {
MethodDeclaration? _findCreateStateMethod(ClassDeclaration widgetClass) { MethodDeclaration? _findCreateStateMethod(ClassDeclaration widgetClass) {
for (var member in widgetClass.members) { for (var member in widgetClass.members) {
if (member is MethodDeclaration && member.name.name == 'createState') { if (member is MethodDeclaration && member.name2.lexeme == 'createState') {
var parameters = member.parameters; var parameters = member.parameters;
if (parameters?.parameters.isEmpty ?? false) { if (parameters?.parameters.isEmpty ?? false) {
return member; return member;
@ -214,7 +214,7 @@ class FlutterConvertToStatelessWidget extends CorrectionProducer {
outer: outer:
for (var stateParam in stateParams) { for (var stateParam in stateParams) {
for (var widgetParam in widgetParams) { for (var widgetParam in widgetParams) {
if (stateParam.name.name == widgetParam.name.name && if (stateParam.name2.lexeme == widgetParam.name2.lexeme &&
stateParam.bound?.type == widgetParam.bound?.type) { stateParam.bound?.type == widgetParam.bound?.type) {
continue outer; continue outer;
} }
@ -242,7 +242,7 @@ class FlutterConvertToStatelessWidget extends CorrectionProducer {
} }
if (expression is MethodInvocation && if (expression is MethodInvocation &&
expression.target is SuperExpression && expression.target is SuperExpression &&
methodDeclaration!.name.name == expression.methodName.name) { methodDeclaration!.name2.lexeme == expression.methodName.name) {
return true; return true;
} }
} }
@ -388,7 +388,7 @@ class _StateUsageVisitor extends RecursiveAstVisitor<void> {
var classDeclaration = var classDeclaration =
methodDeclaration?.thisOrAncestorOfType<ClassDeclaration>(); methodDeclaration?.thisOrAncestorOfType<ClassDeclaration>();
if (methodDeclaration?.name.name != 'createState' || if (methodDeclaration?.name2.lexeme != 'createState' ||
classDeclaration?.declaredElement != widgetClassElement) { classDeclaration?.declaredElement != widgetClassElement) {
used = true; used = true;
} }

View file

@ -44,7 +44,7 @@ class InlineTypedef extends CorrectionProducer {
List<FormalParameter> parameters; List<FormalParameter> parameters;
if (parent is FunctionTypeAlias) { if (parent is FunctionTypeAlias) {
returnType = parent.returnType; returnType = parent.returnType;
_name = parent.name.name; _name = parent.name2.lexeme;
typeParameters = parent.typeParameters; typeParameters = parent.typeParameters;
parameters = parent.parameters.parameters; parameters = parent.parameters.parameters;
} else if (parent is GenericTypeAlias) { } else if (parent is GenericTypeAlias) {
@ -56,7 +56,7 @@ class InlineTypedef extends CorrectionProducer {
return; return;
} }
returnType = functionType.returnType; returnType = functionType.returnType;
_name = parent.name.name; _name = parent.name2.lexeme;
typeParameters = functionType.typeParameters; typeParameters = functionType.typeParameters;
parameters = functionType.parameters.parameters; parameters = functionType.parameters.parameters;
} else { } else {
@ -128,10 +128,10 @@ class InlineTypedef extends CorrectionProducer {
builder.write(utils.getNodeText(typeAnnotation)); builder.write(utils.getNodeText(typeAnnotation));
} }
if (parameter.isNamed) { if (parameter.isNamed) {
var identifier = parameter.identifier; var identifier = parameter.name;
if (identifier != null) { if (identifier != null) {
builder.write(' '); builder.write(' ');
builder.write(identifier.name); builder.write(identifier.lexeme);
} }
} }
} }

View file

@ -148,7 +148,7 @@ class JoinVariableDeclaration extends CorrectionProducer {
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement( builder.addSimpleReplacement(
range.endStart(declaredVariable.name, assignment.operator), range.endStart(declaredVariable.name2, assignment.operator),
' ', ' ',
); );
}); });

View file

@ -23,7 +23,7 @@ class MakeClassAbstract extends CorrectionProducer {
if (enclosingClass == null) { if (enclosingClass == null) {
return; return;
} }
_className = enclosingClass.name.name; _className = enclosingClass.name2.lexeme;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion( builder.addSimpleInsertion(
enclosingClass.classKeyword.offset, 'abstract '); enclosingClass.classKeyword.offset, 'abstract ');

View file

@ -28,7 +28,9 @@ class MakeFieldPublic extends CorrectionProducer {
var getterName = node.name; var getterName = node.name;
_fieldName = '_$getterName'; _fieldName = '_$getterName';
var parent = node.parent; var parent = node.parent;
if (parent is MethodDeclaration && parent.name == node && parent.isGetter) { if (parent is MethodDeclaration &&
parent.name2 == token &&
parent.isGetter) {
var container = parent.parent; var container = parent.parent;
if (container is ClassOrMixinDeclaration) { if (container is ClassOrMixinDeclaration) {
var members = container.members; var members = container.members;
@ -36,12 +38,12 @@ class MakeFieldPublic extends CorrectionProducer {
VariableDeclaration? field; VariableDeclaration? field;
for (var member in members) { for (var member in members) {
if (member is MethodDeclaration && if (member is MethodDeclaration &&
member.name.name == getterName && member.name2.lexeme == getterName &&
member.isSetter) { member.isSetter) {
setter = member; setter = member;
} else if (member is FieldDeclaration) { } else if (member is FieldDeclaration) {
for (var variable in member.fields.variables) { for (var variable in member.fields.variables) {
if (variable.name.name == _fieldName) { if (variable.name2.lexeme == _fieldName) {
field = variable; field = variable;
} }
} }
@ -51,7 +53,7 @@ class MakeFieldPublic extends CorrectionProducer {
return; return;
} }
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement(range.node(field!.name), getterName); builder.addSimpleReplacement(range.token(field!.name2), getterName);
builder.removeMember(members, parent); builder.removeMember(members, parent);
builder.removeMember(members, setter!); builder.removeMember(members, setter!);
}); });

View file

@ -62,7 +62,7 @@ class MakeFinal extends CorrectionProducer {
builder.addSimpleInsertion(type.offset, 'final '); builder.addSimpleInsertion(type.offset, 'final ');
return; return;
} }
final identifier = simpleNode.identifier; final identifier = simpleNode.name;
if (identifier != null) { if (identifier != null) {
builder.addSimpleInsertion(identifier.offset, 'final '); builder.addSimpleInsertion(identifier.offset, 'final ');
} else { } else {

View file

@ -118,7 +118,7 @@ class MakeVariableNullable extends CorrectionProducer {
if (parameter.question != null) { if (parameter.question != null) {
return; return;
} }
_variableName = parameter.identifier.name; _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
// Add '?' after `)`. // Add '?' after `)`.
builder.addSimpleInsertion(parameter.endToken.end, '?'); builder.addSimpleInsertion(parameter.endToken.end, '?');
@ -128,7 +128,7 @@ class MakeVariableNullable extends CorrectionProducer {
if (type == null || !_typeCanBeMadeNullable(type)) { if (type == null || !_typeCanBeMadeNullable(type)) {
return; return;
} }
_variableName = parameter.identifier.name; _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(type.end, '?'); builder.addSimpleInsertion(type.end, '?');
}); });
@ -141,7 +141,7 @@ class MakeVariableNullable extends CorrectionProducer {
if (parameter.question != null) { if (parameter.question != null) {
return; return;
} }
_variableName = parameter.identifier.name; _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
// Add '?' after `)`. // Add '?' after `)`.
builder.addSimpleInsertion(parameter.endToken.end, '?'); builder.addSimpleInsertion(parameter.endToken.end, '?');
@ -155,12 +155,12 @@ class MakeVariableNullable extends CorrectionProducer {
return; return;
} }
var identifier = parameter.identifier; var identifier = parameter.name;
if (identifier == null) { if (identifier == null) {
return; return;
} }
_variableName = identifier.name; _variableName = identifier.lexeme;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(type.end, '?'); builder.addSimpleInsertion(type.end, '?');
}); });
@ -174,7 +174,7 @@ class MakeVariableNullable extends CorrectionProducer {
if (parameter.question != null) { if (parameter.question != null) {
return; return;
} }
_variableName = parameter.identifier.name; _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
// Add '?' after `)`. // Add '?' after `)`.
builder.addSimpleInsertion(parameter.endToken.end, '?'); builder.addSimpleInsertion(parameter.endToken.end, '?');
@ -184,7 +184,7 @@ class MakeVariableNullable extends CorrectionProducer {
if (type == null || !_typeCanBeMadeNullable(type)) { if (type == null || !_typeCanBeMadeNullable(type)) {
return; return;
} }
_variableName = parameter.identifier.name; _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(type.end, '?'); builder.addSimpleInsertion(type.end, '?');
}); });
@ -226,7 +226,7 @@ class MakeVariableNullable extends CorrectionProducer {
Future<void> _updateVariableType(ChangeBuilder builder, Future<void> _updateVariableType(ChangeBuilder builder,
VariableDeclarationList declarationList, DartType newType) async { VariableDeclarationList declarationList, DartType newType) async {
var variable = declarationList.variables[0]; var variable = declarationList.variables[0];
_variableName = variable.name.name; _variableName = variable.name2.lexeme;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
var keyword = declarationList.keyword; var keyword = declarationList.keyword;
if (keyword != null && keyword.type == Keyword.VAR) { if (keyword != null && keyword.type == Keyword.VAR) {

View file

@ -38,7 +38,7 @@ class RemoveInitializer extends CorrectionProducer {
var parameter = node.thisOrAncestorOfType<DefaultFormalParameter>(); var parameter = node.thisOrAncestorOfType<DefaultFormalParameter>();
if (parameter != null) { if (parameter != null) {
// Handle formal parameters with default values. // Handle formal parameters with default values.
var identifier = parameter.identifier; var identifier = parameter.name;
var defaultValue = parameter.defaultValue; var defaultValue = parameter.defaultValue;
if (identifier != null && defaultValue != null) { if (identifier != null && defaultValue != null) {
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
@ -54,7 +54,7 @@ class RemoveInitializer extends CorrectionProducer {
if (variable != null && initializer != null) { if (variable != null && initializer != null) {
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addDeletion( builder.addDeletion(
range.endEnd(variable.name, initializer), range.endEnd(variable.name2, initializer),
); );
}); });
} else { } else {

View file

@ -20,7 +20,7 @@ class RemoveParametersInGetterDeclaration extends CorrectionProducer {
final node = this.node; final node = this.node;
if (node is MethodDeclaration) { if (node is MethodDeclaration) {
// Support for the analyzer error. // Support for the analyzer error.
var name = node.name; var name = node.name2;
var body = node.body; var body = node.body;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement(range.endStart(name, body), ' '); builder.addSimpleReplacement(range.endStart(name, body), ' ');

View file

@ -55,12 +55,12 @@ class RemoveTypeAnnotation extends CorrectionProducer {
} }
// ignore if an incomplete variable declaration // ignore if an incomplete variable declaration
if (declarationList.variables.length == 1 && if (declarationList.variables.length == 1 &&
declarationList.variables[0].name.isSynthetic) { declarationList.variables[0].name2.isSynthetic) {
return; return;
} }
// must be not after the name of the variable // must be not after the name of the variable
var firstVariable = declarationList.variables[0]; var firstVariable = declarationList.variables[0];
if (selectionOffset > firstVariable.name.end) { if (selectionOffset > firstVariable.name2.end) {
return; return;
} }
@ -127,7 +127,7 @@ class RemoveTypeAnnotation extends CorrectionProducer {
return; return;
} }
var keyword = declaration.keyword; var keyword = declaration.keyword;
var variableName = declaration.identifier; var variableName = declaration.name;
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
var typeRange = range.startStart(typeNode, variableName); var typeRange = range.startStart(typeNode, variableName);
if (keyword != null && keyword.lexeme != 'var') { if (keyword != null && keyword.lexeme != 'var') {

View file

@ -27,7 +27,7 @@ class RemoveUnusedLocalVariable extends CorrectionProducer {
@override @override
Future<void> compute(ChangeBuilder builder) async { Future<void> compute(ChangeBuilder builder) async {
final declaration = node.parent; final declaration = node.parent;
if (!(declaration is VariableDeclaration && declaration.name == node)) { if (!(declaration is VariableDeclaration && declaration.name2 == token)) {
return; return;
} }

View file

@ -25,7 +25,7 @@ class RenameMethodParameter extends CorrectionProducer {
Future<void> compute(ChangeBuilder builder) async { Future<void> compute(ChangeBuilder builder) async {
final parameter = node.parent; final parameter = node.parent;
if (parameter is! FormalParameter) return; if (parameter is! FormalParameter) return;
var paramIdentifier = parameter.identifier; var paramIdentifier = parameter.name;
if (paramIdentifier == null) return; if (paramIdentifier == null) return;
var method = parameter.thisOrAncestorOfType<MethodDeclaration>(); var method = parameter.thisOrAncestorOfType<MethodDeclaration>();
@ -38,12 +38,12 @@ class RenameMethodParameter extends CorrectionProducer {
if (classElement is! ClassElement) return; if (classElement is! ClassElement) return;
var parentMethod = classElement.lookUpInheritedMethod( var parentMethod = classElement.lookUpInheritedMethod(
method.name.name, classElement.library); method.name2.lexeme, classElement.library);
if (parentMethod == null) return; if (parentMethod == null) return;
var parameters = methodParameters.parameters; var parameters = methodParameters.parameters;
var parentParameters = parentMethod.parameters; var parentParameters = parentMethod.parameters;
var oldName = paramIdentifier.name; var oldName = paramIdentifier.lexeme;
var i = parameters.indexOf(parameter); var i = parameters.indexOf(parameter);
if (0 <= i && i < parentParameters.length) { if (0 <= i && i < parentParameters.length) {

View file

@ -114,17 +114,17 @@ class ReplaceConditionalWithIfElse extends CorrectionProducer {
builder.writeType(type); builder.writeType(type);
}); });
} else { } else {
builder.addInsertion(variable.name.offset, (builder) { builder.addInsertion(variable.name2.offset, (builder) {
builder.writeType(type); builder.writeType(type);
builder.write(' '); builder.write(' ');
}); });
} }
} }
builder.addDeletion(range.endEnd(variable.name, conditional)); builder.addDeletion(range.endEnd(variable.name2, conditional));
var conditionSrc = utils.getNodeText(conditional.condition); var conditionSrc = utils.getNodeText(conditional.condition);
var thenSrc = utils.getNodeText(conditional.thenExpression); var thenSrc = utils.getNodeText(conditional.thenExpression);
var elseSrc = utils.getNodeText(conditional.elseExpression); var elseSrc = utils.getNodeText(conditional.elseExpression);
var name = variable.name.name; var name = variable.name2.lexeme;
var src = eol; var src = eol;
src += '${prefix}if ($conditionSrc) {$eol'; src += '${prefix}if ($conditionSrc) {$eol';
src += '$prefix$indent$name = $thenSrc;$eol'; src += '$prefix$indent$name = $thenSrc;$eol';

View file

@ -28,8 +28,8 @@ class ReplaceWithIdentifier extends CorrectionProducer {
node.thisOrAncestorOfType<FunctionTypedFormalParameter>(); node.thisOrAncestorOfType<FunctionTypedFormalParameter>();
if (functionTyped != null) { if (functionTyped != null) {
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement(range.node(functionTyped), builder.addSimpleReplacement(
utils.getNodeText(functionTyped.identifier)); range.node(functionTyped), functionTyped.name.lexeme);
}); });
} }
} }

View file

@ -110,7 +110,7 @@ class ReplaceWithVar extends CorrectionProducer {
} }
await builder.addDartFileEdit(file, (builder) { await builder.addDartFileEdit(file, (builder) {
if (parent.isConst || parent.isFinal) { if (parent.isConst || parent.isFinal) {
builder.addDeletion(range.startStart(type, parent.identifier)); builder.addDeletion(range.startStart(type, parent.name));
} else { } else {
builder.addSimpleReplacement(range.node(type), 'var'); builder.addSimpleReplacement(range.node(type), 'var');
} }

View file

@ -32,11 +32,11 @@ class SortUnnamedConstructorFirst extends CorrectionProducer {
.firstWhereOrNull((child) => child is ConstructorDeclaration) .firstWhereOrNull((child) => child is ConstructorDeclaration)
as ConstructorDeclaration?; as ConstructorDeclaration?;
if (firstConstructor == null || if (firstConstructor == null ||
firstConstructor.name == null || firstConstructor.name2 == null ||
firstConstructor.name?.name == 'new') return; firstConstructor.name2?.lexeme == 'new') return;
final unnamedConstructor = clazz.childEntities.firstWhereOrNull( final unnamedConstructor = clazz.childEntities.firstWhereOrNull(
(child) => child is ConstructorDeclaration && child.name == null) (child) => child is ConstructorDeclaration && child.name2 == null)
as ConstructorDeclaration?; as ConstructorDeclaration?;
if (unnamedConstructor == null) return; if (unnamedConstructor == null) return;

View file

@ -41,7 +41,7 @@ class SplitVariableDeclaration extends CorrectionProducer {
// The caret must be between the type and the variable name. // The caret must be between the type and the variable name.
var variable = variables[0]; var variable = variables[0];
if (!range.startEnd(statement, variable.name).contains(selectionOffset)) { if (!range.startEnd(statement, variable.name2).contains(selectionOffset)) {
return; return;
} }
@ -64,8 +64,8 @@ class SplitVariableDeclaration extends CorrectionProducer {
} }
var indent = utils.getNodePrefix(statement); var indent = utils.getNodePrefix(statement);
var name = variable.name.name; var name = variable.name2.lexeme;
builder.addSimpleInsertion(variable.name.end, ';$eol$indent$name'); builder.addSimpleInsertion(variable.name2.end, ';$eol$indent$name');
}); });
} }
} }

View file

@ -87,7 +87,7 @@ class AddTypeParameter extends Change<_Data> {
if (_isInvalidIndex(typeParameters?.typeParameters)) { if (_isInvalidIndex(typeParameters?.typeParameters)) {
return null; return null;
} }
return _TypeParameterData(typeParameters, parent.name.end); return _TypeParameterData(typeParameters, parent.name2.end);
} else if (node is TypeArgumentList && parent is ExtensionOverride) { } else if (node is TypeArgumentList && parent is ExtensionOverride) {
// wrong_number_of_type_arguments_extension // wrong_number_of_type_arguments_extension
if (!argumentValue.validate(context)) { if (!argumentValue.validate(context)) {

View file

@ -5,6 +5,7 @@
import 'package:analysis_server/src/services/correction/fix/data_driven/element_descriptor.dart'; import 'package:analysis_server/src/services/correction/fix/data_driven/element_descriptor.dart';
import 'package:analysis_server/src/services/correction/fix/data_driven/element_kind.dart'; import 'package:analysis_server/src/services/correction/fix/data_driven/element_kind.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart' import 'package:analyzer/dart/element/element.dart'
show ClassElement, ExtensionElement, PrefixElement; show ClassElement, ExtensionElement, PrefixElement;
import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type.dart';
@ -97,7 +98,7 @@ class ElementMatcher {
/// Return a list of element matchers that will match the element that is, or /// Return a list of element matchers that will match the element that is, or
/// should be, associated with the given [node]. The list will be empty if /// should be, associated with the given [node]. The list will be empty if
/// there are no appropriate matchers for the [node]. /// there are no appropriate matchers for the [node].
static List<ElementMatcher> matchersForNode(AstNode? node) { static List<ElementMatcher> matchersForNode(AstNode? node, Token? nameToken) {
if (node == null) { if (node == null) {
return const <ElementMatcher>[]; return const <ElementMatcher>[];
} }
@ -106,7 +107,7 @@ class ElementMatcher {
return const <ElementMatcher>[]; return const <ElementMatcher>[];
} }
var builder = _MatcherBuilder(importedUris); var builder = _MatcherBuilder(importedUris);
builder.buildMatchersForNode(node); builder.buildMatchersForNode(node, nameToken);
return builder.matchers.toList(); return builder.matchers.toList();
} }
@ -143,7 +144,7 @@ class _MatcherBuilder {
_MatcherBuilder(this.importedUris); _MatcherBuilder(this.importedUris);
void buildMatchersForNode(AstNode? node) { void buildMatchersForNode(AstNode? node, Token? nameToken) {
if (node is ArgumentList) { if (node is ArgumentList) {
_buildFromArgumentList(node); _buildFromArgumentList(node);
} else if (node is BinaryExpression) { } else if (node is BinaryExpression) {
@ -159,8 +160,8 @@ class _MatcherBuilder {
_buildFromNamedType(node); _buildFromNamedType(node);
} else if (node is PrefixedIdentifier) { } else if (node is PrefixedIdentifier) {
_buildFromPrefixedIdentifier(node); _buildFromPrefixedIdentifier(node);
} else if (node is SimpleIdentifier) { } else if (node is SimpleIdentifier && nameToken != null) {
_buildFromSimpleIdentifier(node); _buildFromSimpleIdentifier(node, nameToken);
} else if (node is TypeArgumentList) { } else if (node is TypeArgumentList) {
_buildFromTypeArgumentList(node); _buildFromTypeArgumentList(node);
} }
@ -257,7 +258,7 @@ class _MatcherBuilder {
/// Build a matcher for the method being declared. /// Build a matcher for the method being declared.
void _buildFromMethodDeclaration(MethodDeclaration node) { void _buildFromMethodDeclaration(MethodDeclaration node) {
_addMatcher( _addMatcher(
components: [node.name.name], components: [node.name2.lexeme],
kinds: [ElementKind.methodKind], kinds: [ElementKind.methodKind],
); );
} }
@ -447,7 +448,7 @@ class _MatcherBuilder {
} }
/// Build a matcher for the element referenced by the identifier. /// Build a matcher for the element referenced by the identifier.
void _buildFromSimpleIdentifier(SimpleIdentifier node) { void _buildFromSimpleIdentifier(SimpleIdentifier node, Token nameToken) {
// TODO(brianwilkerson) Use the static element, if there is one, in order to // TODO(brianwilkerson) Use the static element, if there is one, in order to
// get a more exact matcher. // get a more exact matcher.
var parent = node.parent; var parent = node.parent;
@ -458,7 +459,7 @@ class _MatcherBuilder {
_buildFromArgumentList(parent.parent!.parent as ArgumentList); _buildFromArgumentList(parent.parent!.parent as ArgumentList);
} else if (parent is NamedType) { } else if (parent is NamedType) {
_buildFromNamedType(parent); _buildFromNamedType(parent);
} else if (parent is MethodDeclaration && node == parent.name) { } else if (parent is MethodDeclaration && nameToken == parent.name2) {
_buildFromMethodDeclaration(parent); _buildFromMethodDeclaration(parent);
} else if (parent is MethodInvocation && } else if (parent is MethodInvocation &&
node == parent.methodName && node == parent.methodName &&

View file

@ -38,9 +38,9 @@ class RenameParameter extends Change<_Data> {
if (overriddenParameter == null) { if (overriddenParameter == null) {
// If the overridden parameter has already been removed, then just // If the overridden parameter has already been removed, then just
// rename the old parameter to have the new name. // rename the old parameter to have the new name.
var identifier = parameter.identifier; var identifier = parameter.name;
if (identifier != null) { if (identifier != null) {
builder.addSimpleReplacement(range.node(identifier), newName); builder.addSimpleReplacement(range.token(identifier), newName);
} }
} else { } else {
// If the overridden parameter still exists, then mark it as // If the overridden parameter still exists, then mark it as

View file

@ -34,7 +34,7 @@ List<String> getVariableNameSuggestionsForExpression(DartType? expectedType,
// If we're in a build() method, use 'build' as the name prefix. // If we're in a build() method, use 'build' as the name prefix.
var method = assignedExpression?.thisOrAncestorOfType<MethodDeclaration>(); var method = assignedExpression?.thisOrAncestorOfType<MethodDeclaration>();
if (method != null) { if (method != null) {
var enclosingName = method.name.name; var enclosingName = method.name2.lexeme;
if (enclosingName.startsWith('build')) { if (enclosingName.startsWith('build')) {
prefix = 'build'; prefix = 'build';
} }

View file

@ -112,19 +112,14 @@ class MemberSorter {
String name; String name;
if (member is ConstructorDeclaration) { if (member is ConstructorDeclaration) {
kind = _MemberKind.CLASS_CONSTRUCTOR; kind = _MemberKind.CLASS_CONSTRUCTOR;
var nameNode = member.name; name = member.name2?.lexeme ?? '';
if (nameNode == null) {
name = '';
} else {
name = nameNode.name;
}
} else if (member is FieldDeclaration) { } else if (member is FieldDeclaration) {
var fieldDeclaration = member; var fieldDeclaration = member;
List<VariableDeclaration> fields = fieldDeclaration.fields.variables; List<VariableDeclaration> fields = fieldDeclaration.fields.variables;
if (fields.isNotEmpty) { if (fields.isNotEmpty) {
kind = _MemberKind.CLASS_FIELD; kind = _MemberKind.CLASS_FIELD;
isStatic = fieldDeclaration.isStatic; isStatic = fieldDeclaration.isStatic;
name = fields[0].name.name; name = fields[0].name2.lexeme;
} else { } else {
// Don't sort members if there are errors in the code. // Don't sort members if there are errors in the code.
return; return;
@ -132,7 +127,7 @@ class MemberSorter {
} else if (member is MethodDeclaration) { } else if (member is MethodDeclaration) {
var method = member; var method = member;
isStatic = method.isStatic; isStatic = method.isStatic;
name = method.name.name; name = method.name2.lexeme;
if (method.isGetter) { if (method.isGetter) {
kind = _MemberKind.CLASS_ACCESSOR; kind = _MemberKind.CLASS_ACCESSOR;
name += ' getter'; name += ' getter';
@ -172,23 +167,22 @@ class MemberSorter {
String name; String name;
if (member is ClassOrMixinDeclaration) { if (member is ClassOrMixinDeclaration) {
kind = _MemberKind.UNIT_CLASS; kind = _MemberKind.UNIT_CLASS;
name = member.name.name; name = member.name2.lexeme;
} else if (member is ClassTypeAlias) { } else if (member is ClassTypeAlias) {
kind = _MemberKind.UNIT_CLASS; kind = _MemberKind.UNIT_CLASS;
name = member.name.name; name = member.name2.lexeme;
} else if (member is EnumDeclaration) { } else if (member is EnumDeclaration) {
kind = _MemberKind.UNIT_CLASS; kind = _MemberKind.UNIT_CLASS;
name = member.name.name; name = member.name2.lexeme;
} else if (member is ExtensionDeclaration) { } else if (member is ExtensionDeclaration) {
kind = _MemberKind.UNIT_EXTENSION; kind = _MemberKind.UNIT_EXTENSION;
name = member.name?.name ?? ''; name = member.name2?.lexeme ?? '';
} else if (member is FunctionDeclaration) { } else if (member is FunctionDeclaration) {
var function = member; name = member.name2.lexeme;
name = function.name.name; if (member.isGetter) {
if (function.isGetter) {
kind = _MemberKind.UNIT_ACCESSOR; kind = _MemberKind.UNIT_ACCESSOR;
name += ' getter'; name += ' getter';
} else if (function.isSetter) { } else if (member.isSetter) {
kind = _MemberKind.UNIT_ACCESSOR; kind = _MemberKind.UNIT_ACCESSOR;
name += ' setter'; name += ' setter';
} else { } else {
@ -200,10 +194,10 @@ class MemberSorter {
} }
} else if (member is FunctionTypeAlias) { } else if (member is FunctionTypeAlias) {
kind = _MemberKind.UNIT_FUNCTION_TYPE; kind = _MemberKind.UNIT_FUNCTION_TYPE;
name = member.name.name; name = member.name2.lexeme;
} else if (member is GenericTypeAlias) { } else if (member is GenericTypeAlias) {
kind = _MemberKind.UNIT_GENERIC_TYPE_ALIAS; kind = _MemberKind.UNIT_GENERIC_TYPE_ALIAS;
name = member.name.name; name = member.name2.lexeme;
} else if (member is TopLevelVariableDeclaration) { } else if (member is TopLevelVariableDeclaration) {
var variableDeclaration = member; var variableDeclaration = member;
List<VariableDeclaration> variables = List<VariableDeclaration> variables =
@ -214,7 +208,7 @@ class MemberSorter {
} else { } else {
kind = _MemberKind.UNIT_VARIABLE; kind = _MemberKind.UNIT_VARIABLE;
} }
name = variables[0].name.name; name = variables[0].name2.lexeme;
} else { } else {
// Don't sort members if there are errors in the code. // Don't sort members if there are errors in the code.
return; return;

View file

@ -476,7 +476,7 @@ bool isLeftHandOfAssignment(SimpleIdentifier node) {
return true; return true;
} }
return node.parent is VariableDeclaration && return node.parent is VariableDeclaration &&
(node.parent as VariableDeclaration).name == node; (node.parent as VariableDeclaration).name2 == node.token;
} }
/// Return `true` if the given [node] is the name of a [NamedExpression]. /// Return `true` if the given [node] is the name of a [NamedExpression].

View file

@ -288,7 +288,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// anchor- defines/binding // anchor- defines/binding
addAnchorEdgesContainingEdge( addAnchorEdgesContainingEdge(
syntacticEntity: node.name, syntacticEntity: node.name2,
edges: [ edges: [
schema.DEFINES_BINDING_EDGE, schema.DEFINES_BINDING_EDGE,
], ],
@ -355,7 +355,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// anchor // anchor
addAnchorEdgesContainingEdge( addAnchorEdgesContainingEdge(
syntacticEntity: node.name, syntacticEntity: node.name2,
edges: [ edges: [
schema.DEFINES_BINDING_EDGE, schema.DEFINES_BINDING_EDGE,
], ],
@ -471,9 +471,9 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// anchor // anchor
var start = node.returnType.offset; var start = node.returnType.offset;
var end = node.returnType.end; var end = node.returnType.end;
var nameNode = node.name; var nameToken = node.name2;
if (nameNode != null) { if (nameToken != null) {
end = nameNode.end; end = nameToken.end;
} }
addAnchorEdgesContainingEdge( addAnchorEdgesContainingEdge(
start: start, start: start,
@ -503,7 +503,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
@override @override
void visitDeclaredIdentifier(DeclaredIdentifier node) { void visitDeclaredIdentifier(DeclaredIdentifier node) {
var declaredElement = node.declaredElement!; var declaredElement = node.declaredElement!;
_handleVariableDeclaration(declaredElement, node.identifier, _handleVariableDeclaration(declaredElement, node.name,
subKind: schema.LOCAL_SUBKIND, type: declaredElement.type); subKind: schema.LOCAL_SUBKIND, type: declaredElement.type);
// no children // no children
@ -517,7 +517,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// anchor- defines/binding, defines // anchor- defines/binding, defines
addAnchorEdgesContainingEdge( addAnchorEdgesContainingEdge(
syntacticEntity: node.name, syntacticEntity: node.name2,
edges: [ edges: [
schema.DEFINES_BINDING_EDGE, schema.DEFINES_BINDING_EDGE,
schema.DEFINES_EDGE, schema.DEFINES_EDGE,
@ -539,7 +539,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// anchor- defines/binding // anchor- defines/binding
addAnchorEdgesContainingEdge( addAnchorEdgesContainingEdge(
syntacticEntity: node.name, syntacticEntity: node.name2,
edges: [ edges: [
schema.DEFINES_BINDING_EDGE, schema.DEFINES_BINDING_EDGE,
], ],
@ -578,7 +578,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
_handleRefEdge( _handleRefEdge(
element, element,
const <String>[schema.REF_EDGE], const <String>[schema.REF_EDGE],
syntacticEntity: node.identifier, syntacticEntity: node.name,
); );
// visit children // visit children
@ -599,7 +599,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// anchor- defines/binding // anchor- defines/binding
addAnchorEdgesContainingEdge( addAnchorEdgesContainingEdge(
syntacticEntity: node.name, syntacticEntity: node.name2,
edges: [ edges: [
schema.DEFINES_BINDING_EDGE, schema.DEFINES_BINDING_EDGE,
], ],
@ -665,7 +665,6 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// visit children // visit children
_safelyVisit(node.documentationComment); _safelyVisit(node.documentationComment);
_safelyVisitList(node.metadata); _safelyVisitList(node.metadata);
_safelyVisit(node.identifier);
_safelyVisit(node.typeParameters); _safelyVisit(node.typeParameters);
_safelyVisit(node.parameters); _safelyVisit(node.parameters);
} }
@ -752,7 +751,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// anchor- defines/binding // anchor- defines/binding
addAnchorEdgesContainingEdge( addAnchorEdgesContainingEdge(
syntacticEntity: node.name, syntacticEntity: node.name2,
edges: [ edges: [
schema.DEFINES_BINDING_EDGE, schema.DEFINES_BINDING_EDGE,
], ],
@ -824,7 +823,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// node.identifier can be null in cases with the new generic function type // node.identifier can be null in cases with the new generic function type
// syntax // syntax
// TODO(jwren) add test cases for this situation // TODO(jwren) add test cases for this situation
var identifier = node.identifier; var identifier = node.name;
if (identifier != null) { if (identifier != null) {
// The anchor and anchor edges generation are broken into two cases, the // The anchor and anchor edges generation are broken into two cases, the
// first case is "method(parameter_name) ...", where the parameter // first case is "method(parameter_name) ...", where the parameter
@ -920,7 +919,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor<void> with OutputUtils {
// variable // variable
var declaredElement = node.declaredElement!; var declaredElement = node.declaredElement!;
_handleVariableDeclaration(declaredElement, node.name, _handleVariableDeclaration(declaredElement, node.name2,
subKind: isLocal ? schema.LOCAL_SUBKIND : schema.FIELD_SUBKIND, subKind: isLocal ? schema.LOCAL_SUBKIND : schema.FIELD_SUBKIND,
type: declaredElement.type); type: declaredElement.type);

View file

@ -523,6 +523,7 @@ class _OccurrencesVisitor extends GeneralizingAstVisitor<void> {
@override @override
void visitSimpleIdentifier(SimpleIdentifier node) { void visitSimpleIdentifier(SimpleIdentifier node) {
var parent = node.parent; var parent = node.parent;
// ignore: deprecated_member_use
if (parent is VariableDeclaration && parent.name == node || if (parent is VariableDeclaration && parent.name == node ||
parent is AssignmentExpression && parent.leftHandSide == node) { parent is AssignmentExpression && parent.leftHandSide == node) {
return; return;

View file

@ -310,8 +310,8 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
parameter = parameter.parameter; parameter = parameter.parameter;
} }
if (parameter is NormalFormalParameter) { if (parameter is NormalFormalParameter) {
_parameters.add(_Parameter( final element = parameter.declaredElement!;
parameter.identifier!.name, parameter.declaredElement!.type, _parameters.add(_Parameter(element.name, element.type,
isMethodParameter: true)); isMethodParameter: true));
} }
} }

View file

@ -144,36 +144,36 @@ class AstWriter extends UnifyingAstVisitor with TreeWriter {
/// declaration. /// declaration.
String? _getName(AstNode node) { String? _getName(AstNode node) {
if (node is ClassTypeAlias) { if (node is ClassTypeAlias) {
return node.name.name; return node.name2.lexeme;
} else if (node is ClassDeclaration) { } else if (node is ClassDeclaration) {
return node.name.name; return node.name2.lexeme;
} else if (node is ConstructorDeclaration) { } else if (node is ConstructorDeclaration) {
var name = node.name; var name = node.name2;
if (name == null) { if (name == null) {
return node.returnType.name; return node.returnType.name;
} else { } else {
return '${node.returnType.name}.${name.name}'; return '${node.returnType.name}.${name.lexeme}';
} }
} else if (node is ConstructorName) { } else if (node is ConstructorName) {
return node.toSource(); return node.toSource();
} else if (node is FieldDeclaration) { } else if (node is FieldDeclaration) {
return _getNames(node.fields); return _getNames(node.fields);
} else if (node is FunctionDeclaration) { } else if (node is FunctionDeclaration) {
return node.name.name; return node.name2.lexeme;
} else if (node is FunctionTypeAlias) { } else if (node is FunctionTypeAlias) {
return node.name.name; return node.name2.lexeme;
} else if (node is Identifier) { } else if (node is Identifier) {
return node.name; return node.name;
} else if (node is MethodDeclaration) { } else if (node is MethodDeclaration) {
return node.name.name; return node.name2.lexeme;
} else if (node is TopLevelVariableDeclaration) { } else if (node is TopLevelVariableDeclaration) {
return _getNames(node.variables); return _getNames(node.variables);
} else if (node is TypeAnnotation) { } else if (node is TypeAnnotation) {
return node.toSource(); return node.toSource();
} else if (node is TypeParameter) { } else if (node is TypeParameter) {
return node.name.name; return node.name2.lexeme;
} else if (node is VariableDeclaration) { } else if (node is VariableDeclaration) {
return node.name.name; return node.name2.lexeme;
} }
return null; return null;
} }
@ -189,7 +189,7 @@ class AstWriter extends UnifyingAstVisitor with TreeWriter {
} else { } else {
buffer.write(', '); buffer.write(', ');
} }
buffer.write(variable.name.name); buffer.write(variable.name2.lexeme);
} }
return buffer.toString(); return buffer.toString();
} }

View file

@ -503,7 +503,6 @@ void f() {
assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'AAA<int>.name('); assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'AAA<int>.name(');
assertHasRegion(HighlightRegionType.CLASS, 'int>('); assertHasRegion(HighlightRegionType.CLASS, 'int>(');
assertHasRegion(HighlightRegionType.CLASS, 'int>.name('); assertHasRegion(HighlightRegionType.CLASS, 'int>.name(');
assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'name(p)');
assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'name(42)'); assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'name(42)');
} }

View file

@ -32,8 +32,8 @@ void main() {
throw Exception(parseResult.errors); throw Exception(parseResult.errors);
} }
var lintNamesClass = parseResult.unit.declarations var lintNamesClass = parseResult.unit.declarations.firstWhere(
.firstWhere((m) => m is ClassDeclaration && m.name.name == 'LintNames'); (m) => m is ClassDeclaration && m.name2.lexeme == 'LintNames');
var collector = _FixCollector(); var collector = _FixCollector();
lintNamesClass.accept(collector); lintNamesClass.accept(collector);
@ -65,7 +65,7 @@ class _FixCollector extends GeneralizingAstVisitor<void> {
@override @override
void visitFieldDeclaration(FieldDeclaration node) { void visitFieldDeclaration(FieldDeclaration node) {
for (var v in node.fields.variables) { for (var v in node.fields.variables) {
lintNames.add(v.name.name); lintNames.add(v.name2.lexeme);
} }
} }
} }

View file

@ -6,7 +6,7 @@ import 'package:analysis_server/src/services/correction/namespace.dart';
import 'package:analysis_server/src/services/refactoring/refactoring.dart'; import 'package:analysis_server/src/services/refactoring/refactoring.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/ast/extensions.dart'; import 'package:analyzer/src/dart/ast/element_locator.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element; import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
import 'package:test/test.dart'; import 'package:test/test.dart';
@ -41,7 +41,7 @@ class RenameRefactoringTest extends RefactoringTest {
/// the [SimpleIdentifier] at the given [search] pattern. /// the [SimpleIdentifier] at the given [search] pattern.
void createRenameRefactoringAtString(String search) { void createRenameRefactoringAtString(String search) {
var identifier = findNode.simple(search); var identifier = findNode.simple(search);
var element = identifier.writeOrReadElement; var element = ElementLocator.locate(identifier);
if (element is PrefixElement) { if (element is PrefixElement) {
element = getImportElement(identifier); element = getImportElement(identifier);
} }

View file

@ -23,7 +23,7 @@ abstract class AbstractElementMatcherTest extends DataDrivenFixProcessorTest {
List<ElementKind>? expectedKinds, List<ElementKind>? expectedKinds,
List<String>? expectedUris}) { List<String>? expectedUris}) {
var node = findNode.any(search); var node = findNode.any(search);
var matchers = ElementMatcher.matchersForNode(node); var matchers = ElementMatcher.matchersForNode(node, node.beginToken);
expect(matchers, hasLength(1)); expect(matchers, hasLength(1));
var matcher = matchers[0]; var matcher = matchers[0];
if (expectedUris != null) { if (expectedUris != null) {

View file

@ -544,7 +544,7 @@ Text createEmptyText() => new Text('');
for (var topDeclaration in unit.declarations) { for (var topDeclaration in unit.declarations) {
if (topDeclaration is TopLevelVariableDeclaration) { if (topDeclaration is TopLevelVariableDeclaration) {
for (var variable in topDeclaration.variables.variables) { for (var variable in topDeclaration.variables.variables) {
if (variable.name.name == name) { if (variable.name2.lexeme == name) {
return variable; return variable;
} }
} }

View file

@ -33,10 +33,10 @@ class BulkFixDetails {
if (classElement != null && if (classElement != null &&
classElement.allSupertypes.any( classElement.allSupertypes.any(
(element) => element.element.name == 'CorrectionProducer')) { (element) => element.element.name == 'CorrectionProducer')) {
var correctionName = classDecl.name.name; var correctionName = classDecl.name2.lexeme;
for (var method in classDecl.members.whereType<MethodDeclaration>()) { for (var method in classDecl.members.whereType<MethodDeclaration>()) {
if (method.name.name == 'canBeAppliedInBulk') { if (method.name2.lexeme == 'canBeAppliedInBulk') {
var hasComment = var hasComment =
method.returnType?.beginToken.precedingComments != null; method.returnType?.beginToken.precedingComments != null;

View file

@ -307,7 +307,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
'documentationComment': node.documentationComment, 'documentationComment': node.documentationComment,
'metadata': node.metadata, 'metadata': node.metadata,
'abstractKeyword': node.abstractKeyword, 'abstractKeyword': node.abstractKeyword,
'name': node.name, 'name': node.name2,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'extendsClause': node.extendsClause, 'extendsClause': node.extendsClause,
'withClause': node.withClause, 'withClause': node.withClause,
@ -324,7 +324,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
'documentationComment': node.documentationComment, 'documentationComment': node.documentationComment,
'metadata': node.metadata, 'metadata': node.metadata,
'abstractKeyword': node.abstractKeyword, 'abstractKeyword': node.abstractKeyword,
'name': node.name, 'name': node.name2,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'superclass': node.superclass, 'superclass': node.superclass,
'withClause': node.withClause, 'withClause': node.withClause,
@ -387,7 +387,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
'constKeyword': node.constKeyword, 'constKeyword': node.constKeyword,
'factoryKeyword': node.factoryKeyword, 'factoryKeyword': node.factoryKeyword,
'returnType': node.returnType, 'returnType': node.returnType,
'name': node.name, 'name': node.name2,
'parameters': node.parameters, 'parameters': node.parameters,
'initializers': node.initializers, 'initializers': node.initializers,
'redirectedConstructor': node.redirectedConstructor, 'redirectedConstructor': node.redirectedConstructor,
@ -428,7 +428,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
_visitChildren(node, { _visitChildren(node, {
'keyword': node.keyword, 'keyword': node.keyword,
'type': node.type, 'type': node.type,
'identifier': node.identifier, 'name': node.name,
}); });
super.visitDeclaredIdentifier(node); super.visitDeclaredIdentifier(node);
} }
@ -482,7 +482,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
_visitChildren(node, { _visitChildren(node, {
'documentationComment': node.documentationComment, 'documentationComment': node.documentationComment,
'metadata': node.metadata, 'metadata': node.metadata,
'name': node.name, 'name': node.name2,
}); });
super.visitEnumConstantDeclaration(node); super.visitEnumConstantDeclaration(node);
} }
@ -492,7 +492,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
_visitChildren(node, { _visitChildren(node, {
'documentationComment': node.documentationComment, 'documentationComment': node.documentationComment,
'metadata': node.metadata, 'metadata': node.metadata,
'name': node.name, 'name': node.name2,
'constants': node.constants, 'constants': node.constants,
}); });
super.visitEnumDeclaration(node); super.visitEnumDeclaration(node);
@ -539,7 +539,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
@override @override
void visitExtensionDeclaration(ExtensionDeclaration node) { void visitExtensionDeclaration(ExtensionDeclaration node) {
_visitChildren(node, { _visitChildren(node, {
'name': node.name, 'name': node.name2,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'extendedType': node.extendedType, 'extendedType': node.extendedType,
'member': node.members, 'member': node.members,
@ -579,7 +579,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
'keyword': node.keyword, 'keyword': node.keyword,
'type': node.type, 'type': node.type,
'thisKeyword': node.thisKeyword, 'thisKeyword': node.thisKeyword,
'identifier': node.identifier, 'name': node.name,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'parameters': node.parameters, 'parameters': node.parameters,
'question': node.question, 'question': node.question,
@ -660,7 +660,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
'metadata': node.metadata, 'metadata': node.metadata,
'externalKeyword': node.externalKeyword, 'externalKeyword': node.externalKeyword,
'propertyKeyword': node.propertyKeyword, 'propertyKeyword': node.propertyKeyword,
'name': node.name, 'name': node.name2,
'functionExpression': node.functionExpression, 'functionExpression': node.functionExpression,
'returnType': node.returnType, 'returnType': node.returnType,
}); });
@ -701,7 +701,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
'documentationComment': node.documentationComment, 'documentationComment': node.documentationComment,
'metadata': node.metadata, 'metadata': node.metadata,
'returnType': node.returnType, 'returnType': node.returnType,
'name': node.name, 'name': node.name2,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'parameters': node.parameters, 'parameters': node.parameters,
}); });
@ -713,7 +713,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
_visitChildren(node, { _visitChildren(node, {
'covariantKeyword': node.covariantKeyword, 'covariantKeyword': node.covariantKeyword,
'returnType': node.returnType, 'returnType': node.returnType,
'identifier': node.identifier, 'name': node.name,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'parameters': node.parameters, 'parameters': node.parameters,
'question': node.question, 'question': node.question,
@ -737,7 +737,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
_visitChildren(node, { _visitChildren(node, {
'documentationComment': node.documentationComment, 'documentationComment': node.documentationComment,
'metadata': node.metadata, 'metadata': node.metadata,
'name': node.name, 'name': node.name2,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'functionType': node.functionType, 'functionType': node.functionType,
}); });
@ -910,7 +910,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
'externalKeyword': node.externalKeyword, 'externalKeyword': node.externalKeyword,
'modifierKeyword': node.modifierKeyword, 'modifierKeyword': node.modifierKeyword,
'returnType': node.returnType, 'returnType': node.returnType,
'name': node.name, 'name': node.name2,
'operatorKeyword': node.operatorKeyword, 'operatorKeyword': node.operatorKeyword,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'parameters': node.parameters, 'parameters': node.parameters,
@ -935,7 +935,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
_visitChildren(node, { _visitChildren(node, {
'documentationComment': node.documentationComment, 'documentationComment': node.documentationComment,
'metadata': node.metadata, 'metadata': node.metadata,
'name': node.name, 'name': node.name2,
'typeParameters': node.typeParameters, 'typeParameters': node.typeParameters,
'onClause': node.onClause, 'onClause': node.onClause,
'implementsClause': node.implementsClause, 'implementsClause': node.implementsClause,
@ -1111,7 +1111,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
'covariantKeyword': node.covariantKeyword, 'covariantKeyword': node.covariantKeyword,
'keyword': node.keyword, 'keyword': node.keyword,
'type': node.type, 'type': node.type,
'identifier': node.identifier, 'name': node.name,
}); });
super.visitSimpleFormalParameter(node); super.visitSimpleFormalParameter(node);
} }
@ -1232,7 +1232,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
@override @override
void visitTypeParameter(TypeParameter node) { void visitTypeParameter(TypeParameter node) {
_visitChildren(node, { _visitChildren(node, {
'name': node.name, 'name': node.name2,
'bound': node.bound, 'bound': node.bound,
}); });
super.visitTypeParameter(node); super.visitTypeParameter(node);
@ -1249,7 +1249,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor<void> {
_visitChildren(node, { _visitChildren(node, {
'documentationComment': node.documentationComment, 'documentationComment': node.documentationComment,
'metadata': node.metadata, 'metadata': node.metadata,
'name': node.name, 'name': node.name2,
'initializer': node.initializer, 'initializer': node.initializer,
}); });
super.visitVariableDeclaration(node); super.visitVariableDeclaration(node);

View file

@ -110,7 +110,7 @@ class ImpliedTypeCollector extends RecursiveAstVisitor<void> {
if (rhsType != null && !rhsType.isDynamic) { if (rhsType != null && !rhsType.isDynamic) {
// Record the name with the type. // Record the name with the type.
data.recordImpliedType( data.recordImpliedType(
node.name.name, node.name2.lexeme,
rhsType.getDisplayString(withNullability: false), rhsType.getDisplayString(withNullability: false),
); );
} }

View file

@ -993,7 +993,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
if (node.target is SuperExpression) { if (node.target is SuperExpression) {
var enclosingMethod = node.thisOrAncestorOfType<MethodDeclaration>(); var enclosingMethod = node.thisOrAncestorOfType<MethodDeclaration>();
if (enclosingMethod != null) { if (enclosingMethod != null) {
if (enclosingMethod.name.name == node.methodName.name) { if (enclosingMethod.name2.lexeme == node.methodName.name) {
data.recordTypeMatch('super invocation member', 'same'); data.recordTypeMatch('super invocation member', 'same');
} else { } else {
data.recordTypeMatch('super invocation member', 'different'); data.recordTypeMatch('super invocation member', 'different');
@ -1120,7 +1120,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
if (node.target is SuperExpression) { if (node.target is SuperExpression) {
var enclosingMethod = node.thisOrAncestorOfType<MethodDeclaration>(); var enclosingMethod = node.thisOrAncestorOfType<MethodDeclaration>();
if (enclosingMethod != null) { if (enclosingMethod != null) {
if (enclosingMethod.name.name == node.propertyName.name) { if (enclosingMethod.name2.lexeme == node.propertyName.name) {
data.recordTypeMatch('super property access member', 'same'); data.recordTypeMatch('super property access member', 'same');
} else { } else {
data.recordTypeMatch('super property access member', 'different'); data.recordTypeMatch('super property access member', 'different');

View file

@ -14,6 +14,7 @@
* Deprecated `CatchClause.exceptionParameter` and `CatchClause.stackTraceParameter`. * Deprecated `CatchClause.exceptionParameter` and `CatchClause.stackTraceParameter`.
Use `exceptionParameter2` and `stackTraceParameter2` instead. Use `exceptionParameter2` and `stackTraceParameter2` instead.
* Added `FileResult.isAugmentation` and `isLibrary` to complement `isPart`. * Added `FileResult.isAugmentation` and `isLibrary` to complement `isPart`.
* Deprecated 'XyzDeclaration.name' in AST, use `name2` and `declaredElement` instead.
## 4.3.1 ## 4.3.1
* Fix `identifier` for `LibraryExportElement` and `LibraryImportElement`. * Fix `identifier` for `LibraryExportElement` and `LibraryImportElement`.

View file

@ -90,19 +90,19 @@ it might look something like this:
void printMembers(CompilationUnit unit) { void printMembers(CompilationUnit unit) {
for (CompilationUnitMember unitMember in unit.declarations) { for (CompilationUnitMember unitMember in unit.declarations) {
if (unitMember is ClassDeclaration) { if (unitMember is ClassDeclaration) {
print(unitMember.name.name); print(unitMember.name2.lexeme);
for (ClassMember classMember in unitMember.members) { for (ClassMember classMember in unitMember.members) {
if (classMember is MethodDeclaration) { if (classMember is MethodDeclaration) {
print(' ${classMember.name}'); print(' ${classMember.name2.lexeme}');
} else if (classMember is FieldDeclaration) { } else if (classMember is FieldDeclaration) {
for (VariableDeclaration field in classMember.fields.variables) { for (VariableDeclaration field in classMember.fields.variables) {
print(' ${field.name.name}'); print(' ${field.name2.lexeme}');
} }
} else if (classMember is ConstructorDeclaration) { } else if (classMember is ConstructorDeclaration) {
if (classMember.name == null) { if (classMember.name2 == null) {
print(' ${unitMember.name.name}'); print(' ${unitMember.name2.lexeme}');
} else { } else {
print(' ${unitMember.name.name}.${classMember.name.name}'); print(' ${unitMember.name2.lexeme}.${classMember.name2.lexeme}');
} }
} }
} }

View file

@ -789,7 +789,7 @@ abstract class CascadeExpression
/// | 'on' type catchPart? [Block] /// | 'on' type catchPart? [Block]
/// ///
/// catchPart ::= /// catchPart ::=
/// 'catch' '(' [SimpleIdentifier] (',' [SimpleIdentifier])? ')' /// 'catch' '(' [CatchClauseParameter] (',' [CatchClauseParameter])? ')'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class CatchClause implements AstNode { abstract class CatchClause implements AstNode {
@ -851,7 +851,7 @@ abstract class CatchClauseParameter extends AstNode {
/// The declaration of a class augmentation. /// The declaration of a class augmentation.
/// ///
/// classAugmentationDeclaration ::= /// classAugmentationDeclaration ::=
/// 'augment' 'class' [SimpleIdentifier] [TypeParameterList]? /// 'augment' 'class' name [TypeParameterList]?
/// [ExtendsClause]? [WithClause]? [ImplementsClause]? /// [ExtendsClause]? [WithClause]? [ImplementsClause]?
/// '{' [ClassMember]* '}' /// '{' [ClassMember]* '}'
/// ///
@ -869,7 +869,7 @@ abstract class ClassAugmentationDeclaration
/// The declaration of a class. /// The declaration of a class.
/// ///
/// classDeclaration ::= /// classDeclaration ::=
/// 'abstract'? 'class' [SimpleIdentifier] [TypeParameterList]? /// 'abstract'? 'class' name [TypeParameterList]?
/// [ExtendsClause]? [WithClause]? [ImplementsClause]? /// [ExtendsClause]? [WithClause]? [ImplementsClause]?
/// '{' [ClassMember]* '}' /// '{' [ClassMember]* '}'
/// ///
@ -986,7 +986,7 @@ abstract class ClassOrMixinDeclaration implements NamedCompilationUnitMember {
/// A class type alias. /// A class type alias.
/// ///
/// classTypeAlias ::= /// classTypeAlias ::=
/// [SimpleIdentifier] [TypeParameterList]? '=' 'abstract'? mixinApplication /// name [TypeParameterList]? '=' 'abstract'? mixinApplication
/// ///
/// mixinApplication ::= /// mixinApplication ::=
/// [TypeName] [WithClause] [ImplementsClause]? ';' /// [TypeName] [WithClause] [ImplementsClause]? ';'
@ -1011,9 +1011,6 @@ abstract class ClassTypeAlias implements TypeAlias {
@Deprecated('Use abstractKeyword instead') @Deprecated('Use abstractKeyword instead')
bool get isAbstract; bool get isAbstract;
@override
SimpleIdentifier get name;
/// Return the name of the superclass of the class being declared. /// Return the name of the superclass of the class being declared.
NamedType get superclass; NamedType get superclass;
@ -1339,7 +1336,7 @@ abstract class Configuration implements AstNode {
/// | 'external'? 'const' constructorName formalParameterList initializerList? /// | 'external'? 'const' constructorName formalParameterList initializerList?
/// ///
/// constructorName ::= /// constructorName ::=
/// [SimpleIdentifier] ('.' [SimpleIdentifier])? /// [SimpleIdentifier] ('.' name)?
/// ///
/// factoryName ::= /// factoryName ::=
/// [Identifier] ('.' [SimpleIdentifier])? /// [Identifier] ('.' [SimpleIdentifier])?
@ -1371,8 +1368,13 @@ abstract class ConstructorDeclaration implements ClassMember {
/// Return the name of the constructor, or `null` if the constructor being /// Return the name of the constructor, or `null` if the constructor being
/// declared is unnamed. /// declared is unnamed.
@Deprecated('Use name2 instead')
SimpleIdentifier? get name; SimpleIdentifier? get name;
/// Return the name of the constructor, or `null` if the constructor being
/// declared is unnamed.
Token? get name2;
/// Return the parameters associated with the constructor. /// Return the parameters associated with the constructor.
FormalParameterList get parameters; FormalParameterList get parameters;
@ -1545,6 +1547,7 @@ abstract class DeclaredIdentifier implements Declaration {
LocalVariableElement? get declaredElement; LocalVariableElement? get declaredElement;
/// Return the name of the variable being declared. /// Return the name of the variable being declared.
@Deprecated('Use identifier2 instead')
SimpleIdentifier get identifier; SimpleIdentifier get identifier;
/// Return `true` if this variable was declared with the 'const' modifier. /// Return `true` if this variable was declared with the 'const' modifier.
@ -1559,6 +1562,9 @@ abstract class DeclaredIdentifier implements Declaration {
/// keyword, or `null` if no keyword was used. /// keyword, or `null` if no keyword was used.
Token? get keyword; Token? get keyword;
/// Return the name of the variable being declared.
Token get name;
/// Return the name of the declared type of the parameter, or `null` if the /// Return the name of the declared type of the parameter, or `null` if the
/// parameter does not have a declared type. /// parameter does not have a declared type.
TypeAnnotation? get type; TypeAnnotation? get type;
@ -1734,13 +1740,17 @@ abstract class EnumConstantDeclaration implements Declaration {
ConstructorElement? get constructorElement; ConstructorElement? get constructorElement;
/// Return the name of the constant. /// Return the name of the constant.
@Deprecated('Use name2 instead')
SimpleIdentifier get name; SimpleIdentifier get name;
/// Return the name of the constant.
Token get name2;
} }
/// The declaration of an enumeration. /// The declaration of an enumeration.
/// ///
/// enumType ::= /// enumType ::=
/// metadata 'enum' [SimpleIdentifier] [TypeParameterList]? /// metadata 'enum' name [TypeParameterList]?
/// [WithClause]? [ImplementsClause]? '{' [SimpleIdentifier] /// [WithClause]? [ImplementsClause]? '{' [SimpleIdentifier]
/// (',' [SimpleIdentifier])* (';' [ClassMember]+)? '}' /// (',' [SimpleIdentifier])* (';' [ClassMember]+)? '}'
/// ///
@ -1765,9 +1775,6 @@ abstract class EnumDeclaration implements NamedCompilationUnitMember {
/// Return the members declared by the enumeration. /// Return the members declared by the enumeration.
NodeList<ClassMember> get members; NodeList<ClassMember> get members;
@override
SimpleIdentifier get name;
/// Return the right curly bracket. /// Return the right curly bracket.
Token get rightBracket; Token get rightBracket;
@ -1946,8 +1953,13 @@ abstract class ExtensionDeclaration implements CompilationUnitMember {
/// Return the name of the extension, or `null` if the extension does not have /// Return the name of the extension, or `null` if the extension does not have
/// a name. /// a name.
@Deprecated('Use name2 instead')
SimpleIdentifier? get name; SimpleIdentifier? get name;
/// Return the name of the extension, or `null` if the extension does not have
/// a name.
Token? get name2;
/// Return the token representing the 'on' keyword. /// Return the token representing the 'on' keyword.
Token get onKeyword; Token get onKeyword;
@ -2061,10 +2073,11 @@ abstract class FieldDeclaration implements ClassMember {
/// ///
/// fieldFormalParameter ::= /// fieldFormalParameter ::=
/// ('final' [TypeAnnotation] | 'const' [TypeAnnotation] | 'var' | [TypeAnnotation])? /// ('final' [TypeAnnotation] | 'const' [TypeAnnotation] | 'var' | [TypeAnnotation])?
/// 'this' '.' [SimpleIdentifier] ([TypeParameterList]? [FormalParameterList])? /// 'this' '.' name ([TypeParameterList]? [FormalParameterList])?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class FieldFormalParameter implements NormalFormalParameter { abstract class FieldFormalParameter implements NormalFormalParameter {
@Deprecated('Use identifier2 instead')
@override @override
SimpleIdentifier get identifier; SimpleIdentifier get identifier;
@ -2072,6 +2085,9 @@ abstract class FieldFormalParameter implements NormalFormalParameter {
/// keyword, or `null` if no keyword was used. /// keyword, or `null` if no keyword was used.
Token? get keyword; Token? get keyword;
@override
Token get name;
/// Return the parameters of the function-typed parameter, or `null` if this /// Return the parameters of the function-typed parameter, or `null` if this
/// is not a function-typed field formal parameter. /// is not a function-typed field formal parameter.
FormalParameterList? get parameters; FormalParameterList? get parameters;
@ -2190,6 +2206,7 @@ abstract class FormalParameter implements AstNode {
/// Return the name of the parameter being declared, or `null` if the /// Return the name of the parameter being declared, or `null` if the
/// parameter doesn't have a name, such as when it's part of a generic /// parameter doesn't have a name, such as when it's part of a generic
/// function type. /// function type.
@Deprecated('Use identifier2 instead')
SimpleIdentifier? get identifier; SimpleIdentifier? get identifier;
/// Return `true` if this parameter was declared with the 'const' modifier. /// Return `true` if this parameter was declared with the 'const' modifier.
@ -2247,6 +2264,11 @@ abstract class FormalParameter implements AstNode {
/// Return the annotations associated with this parameter. /// Return the annotations associated with this parameter.
NodeList<Annotation> get metadata; NodeList<Annotation> get metadata;
/// Return the name of the parameter being declared, or `null` if the
/// parameter doesn't have a name, such as when it's part of a generic
/// function type.
Token? get name;
/// The 'required' keyword, or `null` if the keyword was not used. /// The 'required' keyword, or `null` if the keyword was not used.
Token? get requiredKeyword; Token? get requiredKeyword;
} }
@ -2448,7 +2470,7 @@ abstract class FunctionBody implements AstNode {
/// | functionSignature [FunctionBody] /// | functionSignature [FunctionBody]
/// ///
/// functionSignature ::= /// functionSignature ::=
/// [Type]? ('get' | 'set')? [SimpleIdentifier] [FormalParameterList] /// [Type]? ('get' | 'set')? name [FormalParameterList]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class FunctionDeclaration implements NamedCompilationUnitMember { abstract class FunctionDeclaration implements NamedCompilationUnitMember {
@ -2468,9 +2490,6 @@ abstract class FunctionDeclaration implements NamedCompilationUnitMember {
/// Return `true` if this function declares a setter. /// Return `true` if this function declares a setter.
bool get isSetter; bool get isSetter;
@override
SimpleIdentifier get name;
/// Return the token representing the 'get' or 'set' keyword, or `null` if /// Return the token representing the 'get' or 'set' keyword, or `null` if
/// this is a function declaration rather than a property declaration. /// this is a function declaration rather than a property declaration.
Token? get propertyKeyword; Token? get propertyKeyword;
@ -2592,14 +2611,18 @@ abstract class FunctionTypeAlias implements TypeAlias {
/// A function-typed formal parameter. /// A function-typed formal parameter.
/// ///
/// functionSignature ::= /// functionSignature ::=
/// [TypeAnnotation]? [SimpleIdentifier] [TypeParameterList]? /// [TypeAnnotation]? name [TypeParameterList]?
/// [FormalParameterList] '?'? /// [FormalParameterList] '?'?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class FunctionTypedFormalParameter implements NormalFormalParameter { abstract class FunctionTypedFormalParameter implements NormalFormalParameter {
@Deprecated('Use identifier2 instead')
@override @override
SimpleIdentifier get identifier; SimpleIdentifier get identifier;
@override
Token get name;
/// Return the parameters of the function-typed parameter. /// Return the parameters of the function-typed parameter.
FormalParameterList get parameters; FormalParameterList get parameters;
@ -2666,7 +2689,7 @@ abstract class GenericFunctionType implements TypeAnnotation {
/// A generic type alias. /// A generic type alias.
/// ///
/// functionTypeAlias ::= /// functionTypeAlias ::=
/// metadata 'typedef' [SimpleIdentifier] [TypeParameterList]? = [FunctionType] ';' /// metadata 'typedef' name [TypeParameterList]? = [FunctionType] ';'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class GenericTypeAlias implements TypeAlias { abstract class GenericTypeAlias implements TypeAlias {
@ -3394,8 +3417,12 @@ abstract class MethodDeclaration implements ClassMember {
Token? get modifierKeyword; Token? get modifierKeyword;
/// Return the name of the method. /// Return the name of the method.
@Deprecated('Use name2 instead')
SimpleIdentifier get name; SimpleIdentifier get name;
/// Return the name of the method.
Token get name2;
/// Return the token representing the 'operator' keyword, or `null` if this /// Return the token representing the 'operator' keyword, or `null` if this
/// method does not declare an operator. /// method does not declare an operator.
Token? get operatorKeyword; Token? get operatorKeyword;
@ -3480,7 +3507,7 @@ abstract class MethodReferenceExpression implements Expression {
/// The declaration of a mixin. /// The declaration of a mixin.
/// ///
/// mixinDeclaration ::= /// mixinDeclaration ::=
/// metadata? 'mixin' [SimpleIdentifier] [TypeParameterList]? /// metadata? 'mixin' name [TypeParameterList]?
/// [OnClause]? [ImplementsClause]? '{' [ClassMember]* '}' /// [OnClause]? [ImplementsClause]? '{' [ClassMember]* '}'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@ -3498,7 +3525,11 @@ abstract class MixinDeclaration implements ClassOrMixinDeclaration {
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class NamedCompilationUnitMember implements CompilationUnitMember { abstract class NamedCompilationUnitMember implements CompilationUnitMember {
/// Return the name of the member being declared. /// Return the name of the member being declared.
@Deprecated('Use name2 instead')
SimpleIdentifier get name; SimpleIdentifier get name;
/// Return the name of the member being declared.
Token get name2;
} }
/// An expression that has a name associated with it. They are used in method /// An expression that has a name associated with it. They are used in method
@ -4295,10 +4326,11 @@ abstract class SuperExpression implements Expression {
/// ///
/// superFormalParameter ::= /// superFormalParameter ::=
/// ('final' [TypeAnnotation] | 'const' [TypeAnnotation] | 'var' | [TypeAnnotation])? /// ('final' [TypeAnnotation] | 'const' [TypeAnnotation] | 'var' | [TypeAnnotation])?
/// 'super' '.' [SimpleIdentifier] ([TypeParameterList]? [FormalParameterList])? /// 'super' '.' name ([TypeParameterList]? [FormalParameterList])?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class SuperFormalParameter implements NormalFormalParameter { abstract class SuperFormalParameter implements NormalFormalParameter {
@Deprecated('Use identifier2 instead')
@override @override
SimpleIdentifier get identifier; SimpleIdentifier get identifier;
@ -4306,6 +4338,9 @@ abstract class SuperFormalParameter implements NormalFormalParameter {
/// keyword, or `null` if no keyword was used. /// keyword, or `null` if no keyword was used.
Token? get keyword; Token? get keyword;
@override
Token get name;
/// Return the parameters of the function-typed parameter, or `null` if this /// Return the parameters of the function-typed parameter, or `null` if this
/// is not a function-typed field formal parameter. /// is not a function-typed field formal parameter.
FormalParameterList? get parameters; FormalParameterList? get parameters;
@ -4508,9 +4543,6 @@ abstract class TryStatement implements Statement {
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class TypeAlias implements NamedCompilationUnitMember { abstract class TypeAlias implements NamedCompilationUnitMember {
@override
SimpleIdentifier get name;
/// Return the semicolon terminating the declaration. /// Return the semicolon terminating the declaration.
Token get semicolon; Token get semicolon;
@ -4594,7 +4626,7 @@ abstract class TypeLiteral implements Expression, CommentReferableExpression {
/// A type parameter. /// A type parameter.
/// ///
/// typeParameter ::= /// typeParameter ::=
/// [SimpleIdentifier] ('extends' [TypeAnnotation])? /// name ('extends' [TypeAnnotation])?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class TypeParameter implements Declaration { abstract class TypeParameter implements Declaration {
@ -4610,7 +4642,11 @@ abstract class TypeParameter implements Declaration {
Token? get extendsKeyword; Token? get extendsKeyword;
/// Return the name of the type parameter. /// Return the name of the type parameter.
@Deprecated('Use name2 instead')
SimpleIdentifier get name; SimpleIdentifier get name;
/// Return the name of the type parameter.
Token get name2;
} }
/// Type parameters within a declaration. /// Type parameters within a declaration.
@ -4669,7 +4705,7 @@ abstract class UriBasedDirective implements Directive {
/// [VariableDeclarationList]. /// [VariableDeclarationList].
/// ///
/// variableDeclaration ::= /// variableDeclaration ::=
/// [SimpleIdentifier] ('=' [Expression])? /// name ('=' [Expression])?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
// TODO(paulberry): the grammar does not allow metadata to be associated with a // TODO(paulberry): the grammar does not allow metadata to be associated with a
@ -4701,7 +4737,11 @@ abstract class VariableDeclaration implements Declaration {
bool get isLate; bool get isLate;
/// Return the name of the variable being declared. /// Return the name of the variable being declared.
@Deprecated('Use name2 instead')
SimpleIdentifier get name; SimpleIdentifier get name;
/// Return the name of the variable being declared.
Token get name2;
} }
/// The declaration of one or more variables of the same type. /// The declaration of one or more variables of the same type.

View file

@ -86,10 +86,10 @@ class ErrorReporter {
// TODO(brianwilkerson) Consider extending this method to take any // TODO(brianwilkerson) Consider extending this method to take any
// declaration and compute the correct range for the name of that // declaration and compute the correct range for the name of that
// declaration. This might make it easier to be consistent. // declaration. This might make it easier to be consistent.
if (constructor.name != null) { if (constructor.name2 != null) {
var offset = constructor.returnType.offset; var offset = constructor.returnType.offset;
reportErrorForOffset( reportErrorForOffset(
code, offset, constructor.name!.end - offset, arguments); code, offset, constructor.name2!.end - offset, arguments);
} else { } else {
reportErrorForNode(code, constructor.returnType, arguments); reportErrorForNode(code, constructor.returnType, arguments);
} }

View file

@ -3,37 +3,38 @@
// BSD-style license that can be found in the LICENSE file. // BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
/// Compute the [DefinedNames] for the given [unit]. /// Compute the [DefinedNames] for the given [unit].
DefinedNames computeDefinedNames(CompilationUnit unit) { DefinedNames computeDefinedNames(CompilationUnit unit) {
DefinedNames names = DefinedNames(); DefinedNames names = DefinedNames();
void appendName(Set<String> names, SimpleIdentifier? node) { void appendName(Set<String> names, Token? token) {
var name = node?.name; var lexeme = token?.lexeme;
if (name != null && name.isNotEmpty) { if (lexeme != null && lexeme.isNotEmpty) {
names.add(name); names.add(lexeme);
} }
} }
void appendClassMemberName(ClassMember member) { void appendClassMemberName(ClassMember member) {
if (member is MethodDeclaration) { if (member is MethodDeclaration) {
appendName(names.classMemberNames, member.name); appendName(names.classMemberNames, member.name2);
} else if (member is FieldDeclaration) { } else if (member is FieldDeclaration) {
for (VariableDeclaration field in member.fields.variables) { for (VariableDeclaration field in member.fields.variables) {
appendName(names.classMemberNames, field.name); appendName(names.classMemberNames, field.name2);
} }
} }
} }
void appendTopLevelName(CompilationUnitMember member) { void appendTopLevelName(CompilationUnitMember member) {
if (member is NamedCompilationUnitMember) { if (member is NamedCompilationUnitMember) {
appendName(names.topLevelNames, member.name); appendName(names.topLevelNames, member.name2);
if (member is ClassDeclaration) { if (member is ClassDeclaration) {
member.members.forEach(appendClassMemberName); member.members.forEach(appendClassMemberName);
} }
if (member is EnumDeclaration) { if (member is EnumDeclaration) {
for (var constant in member.constants) { for (var constant in member.constants) {
appendName(names.classMemberNames, constant.name); appendName(names.classMemberNames, constant.name2);
} }
member.members.forEach(appendClassMemberName); member.members.forEach(appendClassMemberName);
} }
@ -42,7 +43,7 @@ DefinedNames computeDefinedNames(CompilationUnit unit) {
} }
} else if (member is TopLevelVariableDeclaration) { } else if (member is TopLevelVariableDeclaration) {
for (VariableDeclaration variable in member.variables.variables) { for (VariableDeclaration variable in member.variables.variables) {
appendName(names.topLevelNames, variable.name); appendName(names.topLevelNames, variable.name2);
} }
} }
} }

View file

@ -910,13 +910,13 @@ class FileState {
if (declaration.macroKeyword != null) { if (declaration.macroKeyword != null) {
var constructors = declaration.members var constructors = declaration.members
.whereType<ConstructorDeclaration>() .whereType<ConstructorDeclaration>()
.map((e) => e.name?.name ?? '') .map((e) => e.name2?.lexeme ?? '')
.where((e) => !e.startsWith('_')) .where((e) => !e.startsWith('_'))
.toList(); .toList();
if (constructors.isNotEmpty) { if (constructors.isNotEmpty) {
macroClasses.add( macroClasses.add(
MacroClass( MacroClass(
name: declaration.name.name, name: declaration.name2.lexeme,
constructors: constructors, constructors: constructors,
), ),
); );
@ -940,21 +940,21 @@ class FileState {
final topLevelDeclarations = <String>{}; final topLevelDeclarations = <String>{};
for (final declaration in unit.declarations) { for (final declaration in unit.declarations) {
if (declaration is ClassDeclaration) { if (declaration is ClassDeclaration) {
topLevelDeclarations.add(declaration.name.name); topLevelDeclarations.add(declaration.name2.lexeme);
} else if (declaration is EnumDeclaration) { } else if (declaration is EnumDeclaration) {
topLevelDeclarations.add(declaration.name.name); topLevelDeclarations.add(declaration.name2.lexeme);
} else if (declaration is ExtensionDeclaration) { } else if (declaration is ExtensionDeclaration) {
var name = declaration.name; var name = declaration.name2;
if (name != null) { if (name != null) {
topLevelDeclarations.add(name.name); topLevelDeclarations.add(name.lexeme);
} }
} else if (declaration is FunctionDeclaration) { } else if (declaration is FunctionDeclaration) {
topLevelDeclarations.add(declaration.name.name); topLevelDeclarations.add(declaration.name2.lexeme);
} else if (declaration is MixinDeclaration) { } else if (declaration is MixinDeclaration) {
topLevelDeclarations.add(declaration.name.name); topLevelDeclarations.add(declaration.name2.lexeme);
} else if (declaration is TopLevelVariableDeclaration) { } else if (declaration is TopLevelVariableDeclaration) {
for (var variable in declaration.variables.variables) { for (var variable in declaration.variables.variables) {
topLevelDeclarations.add(variable.name.name); topLevelDeclarations.add(variable.name2.lexeme);
} }
} }
} }

View file

@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file. // BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/syntactic_entity.dart';
import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
@ -464,8 +465,8 @@ class _IndexContributor extends GeneralizingAstVisitor {
/// of the given [node]. The flag [isQualified] is `true` if [node] has an /// of the given [node]. The flag [isQualified] is `true` if [node] has an
/// explicit or implicit qualifier, so cannot be shadowed by a local /// explicit or implicit qualifier, so cannot be shadowed by a local
/// declaration. /// declaration.
void recordRelation(Element? element, IndexRelationKind kind, AstNode node, void recordRelation(Element? element, IndexRelationKind kind,
bool isQualified) { SyntacticEntity node, bool isQualified) {
if (element != null) { if (element != null) {
recordRelationOffset( recordRelationOffset(
element, kind, node.offset, node.length, isQualified); element, kind, node.offset, node.length, isQualified);
@ -564,7 +565,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
if (node.extendsClause == null) { if (node.extendsClause == null) {
ClassElement? objectElement = declaredElement.supertype?.element; ClassElement? objectElement = declaredElement.supertype?.element;
recordRelationOffset(objectElement, IndexRelationKind.IS_EXTENDED_BY, recordRelationOffset(objectElement, IndexRelationKind.IS_EXTENDED_BY,
node.name.offset, 0, true); node.name2.offset, 0, true);
} }
recordIsAncestorOf(declaredElement); recordIsAncestorOf(declaredElement);
super.visitClassDeclaration(node); super.visitClassDeclaration(node);
@ -654,7 +655,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
offset = constructorSelector.period.offset; offset = constructorSelector.period.offset;
length = constructorSelector.name.end - offset; length = constructorSelector.name.end - offset;
} else { } else {
offset = node.name.end; offset = node.name2.end;
length = 0; length = 0;
} }
recordRelationOffset( recordRelationOffset(
@ -674,7 +675,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
@override @override
void visitEnumDeclaration(EnumDeclaration node) { void visitEnumDeclaration(EnumDeclaration node) {
_addSubtype( _addSubtype(
node.name.name, node.name2.lexeme,
withClause: node.withClause, withClause: node.withClause,
implementsClause: node.implementsClause, implementsClause: node.implementsClause,
memberNodes: node.members, memberNodes: node.members,
@ -713,8 +714,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
if (element is FieldFormalParameterElement) { if (element is FieldFormalParameterElement) {
var field = element.field; var field = element.field;
if (field != null) { if (field != null) {
recordRelation( recordRelation(field, IndexRelationKind.IS_WRITTEN_BY, node.name, true);
field, IndexRelationKind.IS_WRITTEN_BY, node.identifier, true);
} }
} }
@ -861,11 +861,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
} }
// this.field parameter // this.field parameter
if (element is FieldFormalParameterElement) { if (element is FieldFormalParameterElement) {
AstNode parent = node.parent!; IndexRelationKind kind = IndexRelationKind.IS_REFERENCED_BY;
IndexRelationKind kind =
parent is FieldFormalParameter && parent.identifier == node
? IndexRelationKind.IS_WRITTEN_BY
: IndexRelationKind.IS_REFERENCED_BY;
recordRelation(element.field, kind, node, true); recordRelation(element.field, kind, node, true);
return; return;
} }
@ -901,7 +897,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
var superParameter = element.superConstructorParameter; var superParameter = element.superConstructorParameter;
if (superParameter != null) { if (superParameter != null) {
recordRelation(superParameter, IndexRelationKind.IS_REFERENCED_BY, recordRelation(superParameter, IndexRelationKind.IS_REFERENCED_BY,
node.identifier, true); node.name, true);
} }
} }
@ -943,8 +939,8 @@ class _IndexContributor extends GeneralizingAstVisitor {
onClause?.superclassConstraints.forEach(addSupertype); onClause?.superclassConstraints.forEach(addSupertype);
implementsClause?.interfaces.forEach(addSupertype); implementsClause?.interfaces.forEach(addSupertype);
void addMemberName(SimpleIdentifier identifier) { void addMemberName(Token identifier) {
String name = identifier.name; String name = identifier.lexeme;
if (name.isNotEmpty) { if (name.isNotEmpty) {
members.add(name); members.add(name);
} }
@ -952,10 +948,10 @@ class _IndexContributor extends GeneralizingAstVisitor {
for (ClassMember member in memberNodes) { for (ClassMember member in memberNodes) {
if (member is MethodDeclaration && !member.isStatic) { if (member is MethodDeclaration && !member.isStatic) {
addMemberName(member.name); addMemberName(member.name2);
} else if (member is FieldDeclaration && !member.isStatic) { } else if (member is FieldDeclaration && !member.isStatic) {
for (var field in member.fields.variables) { for (var field in member.fields.variables) {
addMemberName(field.name); addMemberName(field.name2);
} }
} }
} }
@ -968,7 +964,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
/// Record the given class as a subclass of its direct superclasses. /// Record the given class as a subclass of its direct superclasses.
void _addSubtypeForClassDeclaration(ClassDeclaration node) { void _addSubtypeForClassDeclaration(ClassDeclaration node) {
_addSubtype(node.name.name, _addSubtype(node.name2.lexeme,
superclass: node.extendsClause?.superclass, superclass: node.extendsClause?.superclass,
withClause: node.withClause, withClause: node.withClause,
implementsClause: node.implementsClause, implementsClause: node.implementsClause,
@ -977,7 +973,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
/// Record the given class as a subclass of its direct superclasses. /// Record the given class as a subclass of its direct superclasses.
void _addSubtypeForClassTypeAlis(ClassTypeAlias node) { void _addSubtypeForClassTypeAlis(ClassTypeAlias node) {
_addSubtype(node.name.name, _addSubtype(node.name2.lexeme,
superclass: node.superclass, superclass: node.superclass,
withClause: node.withClause, withClause: node.withClause,
implementsClause: node.implementsClause, implementsClause: node.implementsClause,
@ -986,7 +982,7 @@ class _IndexContributor extends GeneralizingAstVisitor {
/// Record the given mixin as a subclass of its direct superclasses. /// Record the given mixin as a subclass of its direct superclasses.
void _addSubtypeForMixinDeclaration(MixinDeclaration node) { void _addSubtypeForMixinDeclaration(MixinDeclaration node) {
_addSubtype(node.name.name, _addSubtype(node.name2.lexeme,
onClause: node.onClause, onClause: node.onClause,
implementsClause: node.implementsClause, implementsClause: node.implementsClause,
memberNodes: node.members); memberNodes: node.members);

View file

@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file. // BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/ast/visitor.dart';
/// Compute the set of external names referenced in the [unit]. /// Compute the set of external names referenced in the [unit].
@ -64,7 +65,7 @@ class _LocalNameScope {
_LocalNameScope scope = _LocalNameScope(enclosing); _LocalNameScope scope = _LocalNameScope(enclosing);
for (Statement statement in node.statements) { for (Statement statement in node.statements) {
if (statement is FunctionDeclarationStatement) { if (statement is FunctionDeclarationStatement) {
scope.add(statement.functionDeclaration.name); scope.add(statement.functionDeclaration.name2);
} else if (statement is VariableDeclarationStatement) { } else if (statement is VariableDeclarationStatement) {
scope.addVariableNames(statement.variables); scope.addVariableNames(statement.variables);
} }
@ -80,7 +81,7 @@ class _LocalNameScope {
if (member is FieldDeclaration) { if (member is FieldDeclaration) {
scope.addVariableNames(member.fields); scope.addVariableNames(member.fields);
} else if (member is MethodDeclaration) { } else if (member is MethodDeclaration) {
scope.add(member.name); scope.add(member.name2);
} }
} }
return scope; return scope;
@ -127,7 +128,7 @@ class _LocalNameScope {
_LocalNameScope scope = _LocalNameScope(null); _LocalNameScope scope = _LocalNameScope(null);
for (CompilationUnitMember declaration in node.declarations) { for (CompilationUnitMember declaration in node.declarations) {
if (declaration is NamedCompilationUnitMember) { if (declaration is NamedCompilationUnitMember) {
scope.add(declaration.name); scope.add(declaration.name2);
} else if (declaration is TopLevelVariableDeclaration) { } else if (declaration is TopLevelVariableDeclaration) {
scope.addVariableNames(declaration.variables); scope.addVariableNames(declaration.variables);
} }
@ -135,29 +136,29 @@ class _LocalNameScope {
return scope; return scope;
} }
void add(SimpleIdentifier? identifier) { void add(Token? token) {
if (identifier != null) { if (token != null) {
(names ??= <String>{}).add(identifier.name); (names ??= <String>{}).add(token.lexeme);
} }
} }
void addFormalParameters(FormalParameterList? parameterList) { void addFormalParameters(FormalParameterList? parameterList) {
if (parameterList != null) { if (parameterList != null) {
parameterList.parameters parameterList.parameters
.map((p) => p is NormalFormalParameter ? p.identifier : null) .map((p) => p is NormalFormalParameter ? p.name : null)
.forEach(add); .forEach(add);
} }
} }
void addTypeParameters(TypeParameterList? typeParameterList) { void addTypeParameters(TypeParameterList? typeParameterList) {
if (typeParameterList != null) { if (typeParameterList != null) {
typeParameterList.typeParameters.map((p) => p.name).forEach(add); typeParameterList.typeParameters.map((p) => p.name2).forEach(add);
} }
} }
void addVariableNames(VariableDeclarationList variableList) { void addVariableNames(VariableDeclarationList variableList) {
for (VariableDeclaration variable in variableList.variables) { for (VariableDeclaration variable in variableList.variables) {
add(variable.name); add(variable.name2);
} }
} }

View file

@ -5,6 +5,7 @@
import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart'; import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type_provider.dart'; import 'package:analyzer/dart/element/type_provider.dart';
@ -343,22 +344,22 @@ class _DeclarationByElementLocator extends UnifyingAstVisitor<void> {
if (element is ClassElement) { if (element is ClassElement) {
if (node is ClassOrMixinDeclaration) { if (node is ClassOrMixinDeclaration) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} else if (node is ClassTypeAlias) { } else if (node is ClassTypeAlias) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} else if (node is EnumDeclaration) { } else if (node is EnumDeclaration) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} }
} else if (element is ConstructorElement) { } else if (element is ConstructorElement) {
if (node is ConstructorDeclaration) { if (node is ConstructorDeclaration) {
if (node.name != null) { if (node.name2 != null) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} else { } else {
@ -369,48 +370,48 @@ class _DeclarationByElementLocator extends UnifyingAstVisitor<void> {
} }
} else if (element is ExtensionElement) { } else if (element is ExtensionElement) {
if (node is ExtensionDeclaration) { if (node is ExtensionDeclaration) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} }
} else if (element is FieldElement) { } else if (element is FieldElement) {
if (node is EnumConstantDeclaration) { if (node is EnumConstantDeclaration) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} else if (node is VariableDeclaration) { } else if (node is VariableDeclaration) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} }
} else if (element is FunctionElement) { } else if (element is FunctionElement) {
if (node is FunctionDeclaration && _hasOffset(node.name)) { if (node is FunctionDeclaration && _hasOffset2(node.name2)) {
result = node; result = node;
} }
} else if (element is LocalVariableElement) { } else if (element is LocalVariableElement) {
if (node is VariableDeclaration && _hasOffset(node.name)) { if (node is VariableDeclaration && _hasOffset2(node.name2)) {
result = node; result = node;
} }
} else if (element is MethodElement) { } else if (element is MethodElement) {
if (node is MethodDeclaration && _hasOffset(node.name)) { if (node is MethodDeclaration && _hasOffset2(node.name2)) {
result = node; result = node;
} }
} else if (element is ParameterElement) { } else if (element is ParameterElement) {
if (node is FormalParameter && _hasOffset(node.identifier)) { if (node is FormalParameter && _hasOffset2(node.name)) {
result = node; result = node;
} }
} else if (element is PropertyAccessorElement) { } else if (element is PropertyAccessorElement) {
if (node is FunctionDeclaration) { if (node is FunctionDeclaration) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} else if (node is MethodDeclaration) { } else if (node is MethodDeclaration) {
if (_hasOffset(node.name)) { if (_hasOffset2(node.name2)) {
result = node; result = node;
} }
} }
} else if (element is TopLevelVariableElement) { } else if (element is TopLevelVariableElement) {
if (node is VariableDeclaration && _hasOffset(node.name)) { if (node is VariableDeclaration && _hasOffset2(node.name2)) {
result = node; result = node;
} }
} }
@ -423,4 +424,8 @@ class _DeclarationByElementLocator extends UnifyingAstVisitor<void> {
bool _hasOffset(AstNode? node) { bool _hasOffset(AstNode? node) {
return node?.offset == _nameOffset; return node?.offset == _nameOffset;
} }
bool _hasOffset2(Token? token) {
return token?.offset == _nameOffset;
}
} }

View file

@ -49,7 +49,7 @@ class _UnitApiSignatureComputer {
var functionExpression = declaration.functionExpression; var functionExpression = declaration.functionExpression;
_addTokens( _addTokens(
declaration.beginToken, declaration.beginToken,
(functionExpression.parameters ?? declaration.name).endToken, functionExpression.parameters?.endToken ?? declaration.name2,
); );
_addFunctionBodyModifiers(functionExpression.body); _addFunctionBodyModifiers(functionExpression.body);
} else if (declaration is TopLevelVariableDeclaration) { } else if (declaration is TopLevelVariableDeclaration) {
@ -138,7 +138,7 @@ class _UnitApiSignatureComputer {
signature.addInt(_kindMethodDeclaration); signature.addInt(_kindMethodDeclaration);
_addTokens( _addTokens(
node.beginToken, node.beginToken,
(node.parameters ?? node.name).endToken, node.parameters?.endToken ?? node.name2,
); );
signature.addBool(node.body is EmptyFunctionBody); signature.addBool(node.body is EmptyFunctionBody);
_addFunctionBodyModifiers(node.body); _addFunctionBodyModifiers(node.body);
@ -212,7 +212,7 @@ class _UnitApiSignatureComputer {
signature.addInt(variables.length); signature.addInt(variables.length);
for (var variable in variables) { for (var variable in variables) {
_addNode(variable.name); _addToken(variable.name2);
signature.addBool(variable.initializer != null); signature.addBool(variable.initializer != null);
if (includeInitializers) { if (includeInitializers) {
_addNode(variable.initializer); _addNode(variable.initializer);

View file

@ -1678,6 +1678,9 @@ class ClassDeclarationImpl extends ClassOrMixinDeclarationImpl
/// native clause. /// native clause.
NativeClauseImpl? _nativeClause; NativeClauseImpl? _nativeClause;
@override
ClassElement? declaredElement;
/// Initialize a newly created class declaration. Either or both of the /// Initialize a newly created class declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the class does not have the /// [comment] and [metadata] can be `null` if the class does not have the
/// corresponding attribute. The [abstractKeyword] can be `null` if the class /// corresponding attribute. The [abstractKeyword] can be `null` if the class
@ -1707,9 +1710,6 @@ class ClassDeclarationImpl extends ClassOrMixinDeclarationImpl
_becomeParentOf(_withClause); _becomeParentOf(_withClause);
} }
@override
ClassElement? get declaredElement => _name.staticElement as ClassElement?;
@override @override
ExtendsClauseImpl? get extendsClause => _extendsClause; ExtendsClauseImpl? get extendsClause => _extendsClause;
@ -1746,7 +1746,7 @@ class ClassDeclarationImpl extends ClassOrMixinDeclarationImpl
..addToken('macroKeyword', macroKeyword) ..addToken('macroKeyword', macroKeyword)
..addToken('augmentKeyword', augmentKeyword) ..addToken('augmentKeyword', augmentKeyword)
..addToken('classKeyword', classKeyword) ..addToken('classKeyword', classKeyword)
..addNode('name', name) ..addToken('name', name2)
..addNode('typeParameters', typeParameters) ..addNode('typeParameters', typeParameters)
..addNode('extendsClause', extendsClause) ..addNode('extendsClause', extendsClause)
..addNode('withClause', withClause) ..addNode('withClause', withClause)
@ -1782,7 +1782,8 @@ class ClassDeclarationImpl extends ClassOrMixinDeclarationImpl
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_extendsClause?.accept(visitor); _extendsClause?.accept(visitor);
_withClause?.accept(visitor); _withClause?.accept(visitor);
@ -1886,7 +1887,7 @@ abstract class ClassOrMixinDeclarationImpl
ClassMember classMember = _members[i]; ClassMember classMember = _members[i];
if (classMember is MethodDeclaration) { if (classMember is MethodDeclaration) {
MethodDeclaration method = classMember; MethodDeclaration method = classMember;
if (name == method.name.name) { if (name == method.name2.lexeme) {
return method; return method;
} }
} }
@ -1935,6 +1936,9 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
/// clause. /// clause.
ImplementsClauseImpl? _implementsClause; ImplementsClauseImpl? _implementsClause;
@override
ClassElement? declaredElement;
/// Initialize a newly created class type alias. Either or both of the /// Initialize a newly created class type alias. Either or both of the
/// [comment] and [metadata] can be `null` if the class type alias does not /// [comment] and [metadata] can be `null` if the class type alias does not
/// have the corresponding attribute. The [typeParameters] can be `null` if /// have the corresponding attribute. The [typeParameters] can be `null` if
@ -1962,9 +1966,6 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
_becomeParentOf(_implementsClause); _becomeParentOf(_implementsClause);
} }
@override
ClassElement? get declaredElement => _name.staticElement as ClassElement?;
@override @override
Token get firstTokenAfterCommentAndMetadata { Token get firstTokenAfterCommentAndMetadata {
return abstractKeyword ?? macroKeyword ?? augmentKeyword ?? typedefKeyword; return abstractKeyword ?? macroKeyword ?? augmentKeyword ?? typedefKeyword;
@ -2010,7 +2011,7 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
@override @override
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addToken('typedefKeyword', typedefKeyword) ..addToken('typedefKeyword', typedefKeyword)
..addNode('name', name) ..addToken('name', name2)
..addNode('typeParameters', typeParameters) ..addNode('typeParameters', typeParameters)
..addToken('equals', equals) ..addToken('equals', equals)
..addToken('abstractKeyword', abstractKeyword) ..addToken('abstractKeyword', abstractKeyword)
@ -2027,7 +2028,8 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_superclass.accept(visitor); _superclass.accept(visitor);
_withClause.accept(visitor); _withClause.accept(visitor);
@ -2700,7 +2702,7 @@ class ConstructorDeclarationImpl extends ClassMemberImpl
/// [comment] and [metadata] can be `null` if the constructor does not have /// [comment] and [metadata] can be `null` if the constructor does not have
/// the corresponding attribute. The [constKeyword] can be `null` if the /// the corresponding attribute. The [constKeyword] can be `null` if the
/// constructor cannot be used to create a constant. The [factoryKeyword] can /// constructor cannot be used to create a constant. The [factoryKeyword] can
/// be `null` if the constructor is not a factory. The [period] and [name] can /// be `null` if the constructor is not a factory. The [period] and [name2] can
/// both be `null` if the constructor is not a named constructor. The /// both be `null` if the constructor is not a named constructor. The
/// [separator] can be `null` if the constructor does not have any /// [separator] can be `null` if the constructor does not have any
/// initializers and does not redirect to a different constructor. The list of /// initializers and does not redirect to a different constructor. The list of
@ -2752,13 +2754,20 @@ class ConstructorDeclarationImpl extends ClassMemberImpl
@override @override
NodeListImpl<ConstructorInitializer> get initializers => _initializers; NodeListImpl<ConstructorInitializer> get initializers => _initializers;
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl? get name => _name; SimpleIdentifierImpl? get name {
_name?.staticElement = declaredElement;
set name(SimpleIdentifier? identifier) { return _name;
_name = _becomeParentOf(identifier as SimpleIdentifierImpl?);
} }
set name(SimpleIdentifier? name) {
_name = _becomeParentOf(name as SimpleIdentifierImpl);
}
@override
Token? get name2 => _name?.token;
@override @override
FormalParameterListImpl get parameters => _parameters; FormalParameterListImpl get parameters => _parameters;
@ -2788,7 +2797,7 @@ class ConstructorDeclarationImpl extends ClassMemberImpl
..addToken('factoryKeyword', factoryKeyword) ..addToken('factoryKeyword', factoryKeyword)
..addNode('returnType', returnType) ..addNode('returnType', returnType)
..addToken('period', period) ..addToken('period', period)
..addNode('name', name) ..addToken('name', name2)
..addNode('parameters', parameters) ..addNode('parameters', parameters)
..addToken('separator', separator) ..addToken('separator', separator)
..addNodeList('initializers', initializers) ..addNodeList('initializers', initializers)
@ -3144,6 +3153,9 @@ class DeclaredIdentifierImpl extends DeclarationImpl
/// The name of the variable being declared. /// The name of the variable being declared.
SimpleIdentifierImpl _identifier; SimpleIdentifierImpl _identifier;
@override
LocalVariableElement? declaredElement;
/// Initialize a newly created formal parameter. Either or both of the /// Initialize a newly created formal parameter. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have /// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The [keyword] can be `null` if a type name is /// the corresponding attribute. The [keyword] can be `null` if a type name is
@ -3154,11 +3166,6 @@ class DeclaredIdentifierImpl extends DeclarationImpl
_becomeParentOf(_identifier); _becomeParentOf(_identifier);
} }
@override
LocalVariableElement? get declaredElement {
return _identifier.staticElement as LocalVariableElement;
}
@override @override
Token get endToken => _identifier.endToken; Token get endToken => _identifier.endToken;
@ -3167,8 +3174,12 @@ class DeclaredIdentifierImpl extends DeclarationImpl
return keyword ?? _type?.beginToken ?? _identifier.beginToken; return keyword ?? _type?.beginToken ?? _identifier.beginToken;
} }
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl get identifier => _identifier; SimpleIdentifierImpl get identifier {
_identifier.staticElement = declaredElement;
return _identifier;
}
set identifier(SimpleIdentifier identifier) { set identifier(SimpleIdentifier identifier) {
_identifier = _becomeParentOf(identifier as SimpleIdentifierImpl); _identifier = _becomeParentOf(identifier as SimpleIdentifierImpl);
@ -3180,6 +3191,9 @@ class DeclaredIdentifierImpl extends DeclarationImpl
@override @override
bool get isFinal => keyword?.keyword == Keyword.FINAL; bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
Token get name => _identifier.token;
@override @override
TypeAnnotationImpl? get type => _type; TypeAnnotationImpl? get type => _type;
@ -3191,7 +3205,7 @@ class DeclaredIdentifierImpl extends DeclarationImpl
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addToken('keyword', keyword) ..addToken('keyword', keyword)
..addNode('type', type) ..addNode('type', type)
..addNode('identifier', identifier); ..addToken('name', name);
@override @override
E? accept<E>(AstVisitor<E> visitor) => visitor.visitDeclaredIdentifier(this); E? accept<E>(AstVisitor<E> visitor) => visitor.visitDeclaredIdentifier(this);
@ -3200,7 +3214,8 @@ class DeclaredIdentifierImpl extends DeclarationImpl
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_type?.accept(visitor); _type?.accept(visitor);
_identifier.accept(visitor); // ignore: deprecated_member_use_from_same_package
identifier.accept(visitor);
} }
} }
@ -3279,6 +3294,7 @@ class DefaultFormalParameterImpl extends FormalParameterImpl
return _parameter.endToken; return _parameter.endToken;
} }
@Deprecated('Use identifier2 instead')
@override @override
SimpleIdentifierImpl? get identifier => _parameter.identifier; SimpleIdentifierImpl? get identifier => _parameter.identifier;
@ -3294,6 +3310,9 @@ class DefaultFormalParameterImpl extends FormalParameterImpl
@override @override
NodeListImpl<Annotation> get metadata => _parameter.metadata; NodeListImpl<Annotation> get metadata => _parameter.metadata;
@override
Token? get name => _parameter.name;
@override @override
NormalFormalParameterImpl get parameter => _parameter; NormalFormalParameterImpl get parameter => _parameter;
@ -3642,6 +3661,9 @@ class EnumConstantDeclarationImpl extends DeclarationImpl
/// The name of the constant. /// The name of the constant.
SimpleIdentifierImpl _name; SimpleIdentifierImpl _name;
@override
FieldElement? declaredElement;
@override @override
final EnumConstantArgumentsImpl? arguments; final EnumConstantArgumentsImpl? arguments;
@ -3662,25 +3684,29 @@ class EnumConstantDeclarationImpl extends DeclarationImpl
_becomeParentOf(arguments); _becomeParentOf(arguments);
} }
@override
FieldElement get declaredElement => _name.staticElement as FieldElement;
@override @override
Token get endToken => (arguments ?? _name).endToken; Token get endToken => (arguments ?? _name).endToken;
@override @override
Token get firstTokenAfterCommentAndMetadata => _name.beginToken; Token get firstTokenAfterCommentAndMetadata => _name.beginToken;
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl get name => _name; SimpleIdentifierImpl get name {
_name.staticElement = declaredElement;
return _name;
}
set name(SimpleIdentifier name) { set name(SimpleIdentifier name) {
_name = _becomeParentOf(name as SimpleIdentifierImpl); _name = _becomeParentOf(name as SimpleIdentifierImpl);
} }
@override
Token get name2 => _name.token;
@override @override
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addNode('name', name) ..addToken('name', name2)
..addNode('arguments', arguments); ..addNode('arguments', arguments);
@override @override
@ -3690,7 +3716,8 @@ class EnumConstantDeclarationImpl extends DeclarationImpl
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
arguments?.accept(visitor); arguments?.accept(visitor);
} }
} }
@ -3736,6 +3763,9 @@ class EnumDeclarationImpl extends NamedCompilationUnitMemberImpl
@override @override
Token rightBracket; Token rightBracket;
@override
ClassElement? declaredElement;
/// Initialize a newly created enumeration declaration. Either or both of the /// Initialize a newly created enumeration declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have /// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The list of [constants] must contain at least /// the corresponding attribute. The list of [constants] must contain at least
@ -3764,9 +3794,6 @@ class EnumDeclarationImpl extends NamedCompilationUnitMemberImpl
@override @override
NodeListImpl<EnumConstantDeclaration> get constants => _constants; NodeListImpl<EnumConstantDeclaration> get constants => _constants;
@override
ClassElement? get declaredElement => _name.staticElement as ClassElement?;
@override @override
Token get endToken => rightBracket; Token get endToken => rightBracket;
@ -3802,7 +3829,7 @@ class EnumDeclarationImpl extends NamedCompilationUnitMemberImpl
// TODO(brianwilkerson) Add commas? // TODO(brianwilkerson) Add commas?
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addToken('enumKeyword', enumKeyword) ..addToken('enumKeyword', enumKeyword)
..addNode('name', name) ..addToken('name', name2)
..addNode('typeParameters', typeParameters) ..addNode('typeParameters', typeParameters)
..addNode('withClause', withClause) ..addNode('withClause', withClause)
..addNode('implementsClause', implementsClause) ..addNode('implementsClause', implementsClause)
@ -3818,7 +3845,8 @@ class EnumDeclarationImpl extends NamedCompilationUnitMemberImpl
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_withClause?.accept(visitor); _withClause?.accept(visitor);
_implementsClause?.accept(visitor); _implementsClause?.accept(visitor);
@ -4306,13 +4334,20 @@ class ExtensionDeclarationImpl extends CompilationUnitMemberImpl
@override @override
NodeListImpl<ClassMember> get members => _members; NodeListImpl<ClassMember> get members => _members;
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl? get name => _name; SimpleIdentifierImpl? get name {
_name?.staticElement = declaredElement;
return _name;
}
set name(SimpleIdentifier? identifier) { set name(SimpleIdentifier? identifier) {
_name = _becomeParentOf(identifier as SimpleIdentifierImpl?); _name = _becomeParentOf(identifier as SimpleIdentifierImpl?);
} }
@override
Token? get name2 => _name?.token;
@override @override
ShowClauseImpl? get showClause => _showClause; ShowClauseImpl? get showClause => _showClause;
@ -4330,7 +4365,7 @@ class ExtensionDeclarationImpl extends CompilationUnitMemberImpl
@override @override
ChildEntities get _childEntities => ChildEntities() ChildEntities get _childEntities => ChildEntities()
..addToken('extensionKeyword', extensionKeyword) ..addToken('extensionKeyword', extensionKeyword)
..addNode('name', name) ..addToken('name', name2)
..addNode('typeParameters', typeParameters) ..addNode('typeParameters', typeParameters)
..addToken('onKeyword', onKeyword) ..addToken('onKeyword', onKeyword)
..addNode('extendedType', extendedType) ..addNode('extendedType', extendedType)
@ -4345,6 +4380,7 @@ class ExtensionDeclarationImpl extends CompilationUnitMemberImpl
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
// ignore: deprecated_member_use_from_same_package
name?.accept(visitor); name?.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_extendedType.accept(visitor); _extendedType.accept(visitor);
@ -4617,9 +4653,10 @@ class FieldFormalParameterImpl extends NormalFormalParameterImpl
@override @override
Token get endToken { Token get endToken {
return question ?? _parameters?.endToken ?? identifier.endToken; return question ?? _parameters?.endToken ?? name;
} }
@Deprecated('Use identifier2 instead')
@override @override
SimpleIdentifierImpl get identifier => super.identifier!; SimpleIdentifierImpl get identifier => super.identifier!;
@ -4632,6 +4669,9 @@ class FieldFormalParameterImpl extends NormalFormalParameterImpl
@override @override
bool get isFinal => keyword?.keyword == Keyword.FINAL; bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
Token get name => super.name!;
@override @override
FormalParameterListImpl? get parameters => _parameters; FormalParameterListImpl? get parameters => _parameters;
@ -4659,7 +4699,7 @@ class FieldFormalParameterImpl extends NormalFormalParameterImpl
..addNode('type', type) ..addNode('type', type)
..addToken('thisKeyword', thisKeyword) ..addToken('thisKeyword', thisKeyword)
..addToken('period', period) ..addToken('period', period)
..addNode('identifier', identifier) ..addToken('name', name)
..addNode('parameters', parameters); ..addNode('parameters', parameters);
@override @override
@ -4670,6 +4710,7 @@ class FieldFormalParameterImpl extends NormalFormalParameterImpl
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_type?.accept(visitor); _type?.accept(visitor);
// ignore: deprecated_member_use_from_same_package
identifier.accept(visitor); identifier.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_parameters?.accept(visitor); _parameters?.accept(visitor);
@ -4873,17 +4914,24 @@ abstract class ForLoopPartsImpl extends AstNodeImpl implements ForLoopParts {}
abstract class FormalParameterImpl extends AstNodeImpl abstract class FormalParameterImpl extends AstNodeImpl
implements FormalParameter { implements FormalParameter {
@override @override
ParameterElement? get declaredElement { ParameterElement? declaredElement;
final identifier = this.identifier;
if (identifier == null) {
return null;
}
return identifier.staticElement as ParameterElement?;
}
@Deprecated('Use identifier2 instead')
@override @override
SimpleIdentifierImpl? get identifier; SimpleIdentifierImpl? get identifier;
/// TODO(scheglov) I was not able to update 'nnbd_migration' any better.
SimpleIdentifier? get identifierForMigration {
final token = name;
if (token != null) {
final result = SimpleIdentifierImpl(token);
result.staticElement = declaredElement;
_becomeParentOf(result);
return result;
}
return null;
}
@override @override
bool get isNamed => kind.isNamed; bool get isNamed => kind.isNamed;
@ -4910,19 +4958,6 @@ abstract class FormalParameterImpl extends AstNodeImpl
/// Return the kind of this parameter. /// Return the kind of this parameter.
ParameterKind get kind; ParameterKind get kind;
static void setDeclaredElement(
FormalParameterImpl node,
ParameterElement element,
) {
if (node is DefaultFormalParameterImpl) {
setDeclaredElement(node.parameter, element);
} else if (node is SimpleFormalParameterImpl) {
node.declaredElement = element;
} else {
node.identifier!.staticElement = element;
}
}
} }
/// The formal parameter list of a method declaration, function declaration, or /// The formal parameter list of a method declaration, function declaration, or
@ -5331,6 +5366,9 @@ class FunctionDeclarationImpl extends NamedCompilationUnitMemberImpl
/// The function expression being wrapped. /// The function expression being wrapped.
FunctionExpressionImpl _functionExpression; FunctionExpressionImpl _functionExpression;
@override
ExecutableElement? declaredElement;
/// Initialize a newly created function declaration. Either or both of the /// Initialize a newly created function declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the function does not have the /// [comment] and [metadata] can be `null` if the function does not have the
/// corresponding attribute. The [externalKeyword] can be `null` if the /// corresponding attribute. The [externalKeyword] can be `null` if the
@ -5351,10 +5389,6 @@ class FunctionDeclarationImpl extends NamedCompilationUnitMemberImpl
_becomeParentOf(_functionExpression); _becomeParentOf(_functionExpression);
} }
@override
ExecutableElement? get declaredElement =>
_name.staticElement as ExecutableElement?;
@override @override
Token get endToken => _functionExpression.endToken; Token get endToken => _functionExpression.endToken;
@ -5394,7 +5428,7 @@ class FunctionDeclarationImpl extends NamedCompilationUnitMemberImpl
..addToken('externalKeyword', externalKeyword) ..addToken('externalKeyword', externalKeyword)
..addNode('returnType', returnType) ..addNode('returnType', returnType)
..addToken('propertyKeyword', propertyKeyword) ..addToken('propertyKeyword', propertyKeyword)
..addNode('name', name) ..addToken('name', name2)
..addNode('functionExpression', functionExpression); ..addNode('functionExpression', functionExpression);
@override @override
@ -5404,7 +5438,8 @@ class FunctionDeclarationImpl extends NamedCompilationUnitMemberImpl
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_returnType?.accept(visitor); _returnType?.accept(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_functionExpression.accept(visitor); _functionExpression.accept(visitor);
} }
} }
@ -5692,6 +5727,9 @@ class FunctionTypeAliasImpl extends TypeAliasImpl implements FunctionTypeAlias {
/// The parameters associated with the function type. /// The parameters associated with the function type.
FormalParameterListImpl _parameters; FormalParameterListImpl _parameters;
@override
TypeAliasElement? declaredElement;
/// Initialize a newly created function type alias. Either or both of the /// Initialize a newly created function type alias. Either or both of the
/// [comment] and [metadata] can be `null` if the function does not have the /// [comment] and [metadata] can be `null` if the function does not have the
/// corresponding attribute. The [returnType] can be `null` if no return type /// corresponding attribute. The [returnType] can be `null` if no return type
@ -5712,10 +5750,6 @@ class FunctionTypeAliasImpl extends TypeAliasImpl implements FunctionTypeAlias {
_becomeParentOf(_parameters); _becomeParentOf(_parameters);
} }
@override
TypeAliasElement? get declaredElement =>
_name.staticElement as TypeAliasElement?;
@override @override
FormalParameterListImpl get parameters => _parameters; FormalParameterListImpl get parameters => _parameters;
@ -5741,7 +5775,7 @@ class FunctionTypeAliasImpl extends TypeAliasImpl implements FunctionTypeAlias {
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addToken('typedefKeyword', typedefKeyword) ..addToken('typedefKeyword', typedefKeyword)
..addNode('returnType', returnType) ..addNode('returnType', returnType)
..addNode('name', name) ..addToken('name', name2)
..addNode('typeParameters', typeParameters) ..addNode('typeParameters', typeParameters)
..addNode('parameters', parameters) ..addNode('parameters', parameters)
..addToken('semicolon', semicolon); ..addToken('semicolon', semicolon);
@ -5753,7 +5787,8 @@ class FunctionTypeAliasImpl extends TypeAliasImpl implements FunctionTypeAlias {
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_returnType?.accept(visitor); _returnType?.accept(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_parameters.accept(visitor); _parameters.accept(visitor);
} }
@ -5813,12 +5848,13 @@ class FunctionTypedFormalParameterImpl extends NormalFormalParameterImpl
} else if (_returnType != null) { } else if (_returnType != null) {
return _returnType!.beginToken; return _returnType!.beginToken;
} }
return identifier.beginToken; return name;
} }
@override @override
Token get endToken => question ?? _parameters.endToken; Token get endToken => question ?? _parameters.endToken;
@Deprecated('Use identifier2 instead')
@override @override
SimpleIdentifierImpl get identifier => super.identifier!; SimpleIdentifierImpl get identifier => super.identifier!;
@ -5831,6 +5867,9 @@ class FunctionTypedFormalParameterImpl extends NormalFormalParameterImpl
@override @override
bool get isFinal => false; bool get isFinal => false;
@override
Token get name => super.name!;
@override @override
FormalParameterListImpl get parameters => _parameters; FormalParameterListImpl get parameters => _parameters;
@ -5855,7 +5894,7 @@ class FunctionTypedFormalParameterImpl extends NormalFormalParameterImpl
@override @override
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addNode('returnType', returnType) ..addNode('returnType', returnType)
..addNode('identifier', identifier) ..addToken('name', name)
..addNode('parameters', parameters); ..addNode('parameters', parameters);
@override @override
@ -5866,6 +5905,7 @@ class FunctionTypedFormalParameterImpl extends NormalFormalParameterImpl
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_returnType?.accept(visitor); _returnType?.accept(visitor);
// ignore: deprecated_member_use_from_same_package
identifier.accept(visitor); identifier.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_parameters.accept(visitor); _parameters.accept(visitor);
@ -6003,6 +6043,9 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias {
@override @override
Token equals; Token equals;
@override
Element? declaredElement;
/// Returns a newly created generic type alias. Either or both of the /// Returns a newly created generic type alias. Either or both of the
/// [comment] and [metadata] can be `null` if the variable list does not have /// [comment] and [metadata] can be `null` if the variable list does not have
/// the corresponding attribute. The [typeParameters] can be `null` if there /// the corresponding attribute. The [typeParameters] can be `null` if there
@ -6021,9 +6064,6 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias {
_becomeParentOf(_type); _becomeParentOf(_type);
} }
@override
Element? get declaredElement => name.staticElement;
/// The type of function being defined by the alias. /// The type of function being defined by the alias.
/// ///
/// If the non-function type aliases feature is enabled, a type alias may have /// If the non-function type aliases feature is enabled, a type alias may have
@ -6058,7 +6098,7 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias {
ChildEntities get _childEntities => ChildEntities() ChildEntities get _childEntities => ChildEntities()
..addNodeList('metadata', metadata) ..addNodeList('metadata', metadata)
..addToken('typedefKeyword', typedefKeyword) ..addToken('typedefKeyword', typedefKeyword)
..addNode('name', name) ..addToken('name', name2)
..addNode('typeParameters', typeParameters) ..addNode('typeParameters', typeParameters)
..addToken('equals', equals) ..addToken('equals', equals)
..addNode('type', type); ..addNode('type', type);
@ -6071,6 +6111,7 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias {
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
// ignore: deprecated_member_use_from_same_package
name.accept(visitor); name.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_type.accept(visitor); _type.accept(visitor);
@ -7749,6 +7790,14 @@ class MethodDeclarationImpl extends ClassMemberImpl
/// The body of the method. /// The body of the method.
FunctionBodyImpl _body; FunctionBodyImpl _body;
/// Return the element associated with this method, or `null` if the AST
/// structure has not been resolved. The element can either be a
/// [MethodElement], if this represents the declaration of a normal method, or
/// a [PropertyAccessorElement] if this represents the declaration of either a
/// getter or a setter.
@override
ExecutableElement? declaredElement;
/// Initialize a newly created method declaration. Either or both of the /// Initialize a newly created method declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have /// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The [externalKeyword] can be `null` if the /// the corresponding attribute. The [externalKeyword] can be `null` if the
@ -7784,15 +7833,6 @@ class MethodDeclarationImpl extends ClassMemberImpl
_body = _becomeParentOf(functionBody as FunctionBodyImpl); _body = _becomeParentOf(functionBody as FunctionBodyImpl);
} }
/// Return the element associated with this method, or `null` if the AST
/// structure has not been resolved. The element can either be a
/// [MethodElement], if this represents the declaration of a normal method, or
/// a [PropertyAccessorElement] if this represents the declaration of either a
/// getter or a setter.
@override
ExecutableElement? get declaredElement =>
_name.staticElement as ExecutableElement?;
@override @override
Token get endToken => _body.endToken; Token get endToken => _body.endToken;
@ -7823,13 +7863,20 @@ class MethodDeclarationImpl extends ClassMemberImpl
@override @override
bool get isStatic => modifierKeyword?.keyword == Keyword.STATIC; bool get isStatic => modifierKeyword?.keyword == Keyword.STATIC;
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl get name => _name; SimpleIdentifierImpl get name {
_name.staticElement = declaredElement;
return _name;
}
set name(SimpleIdentifier identifier) { set name(SimpleIdentifier identifier) {
_name = _becomeParentOf(identifier as SimpleIdentifierImpl); _name = _becomeParentOf(identifier as SimpleIdentifierImpl);
} }
@override
Token get name2 => _name.token;
@override @override
FormalParameterListImpl? get parameters => _parameters; FormalParameterListImpl? get parameters => _parameters;
@ -7858,7 +7905,7 @@ class MethodDeclarationImpl extends ClassMemberImpl
..addNode('returnType', returnType) ..addNode('returnType', returnType)
..addToken('propertyKeyword', propertyKeyword) ..addToken('propertyKeyword', propertyKeyword)
..addToken('operatorKeyword', operatorKeyword) ..addToken('operatorKeyword', operatorKeyword)
..addNode('name', name) ..addToken('name', name2)
..addNode('parameters', parameters) ..addNode('parameters', parameters)
..addNode('body', body); ..addNode('body', body);
@ -7869,7 +7916,8 @@ class MethodDeclarationImpl extends ClassMemberImpl
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_returnType?.accept(visitor); _returnType?.accept(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_parameters?.accept(visitor); _parameters?.accept(visitor);
_body.accept(visitor); _body.accept(visitor);
@ -8048,6 +8096,9 @@ class MixinDeclarationImpl extends ClassOrMixinDeclarationImpl
/// super-class constraints. /// super-class constraints.
OnClauseImpl? _onClause; OnClauseImpl? _onClause;
@override
ClassElement? declaredElement;
/// Initialize a newly created mixin declaration. Either or both of the /// Initialize a newly created mixin declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the mixin does not have the /// [comment] and [metadata] can be `null` if the mixin does not have the
/// corresponding attribute. The [typeParameters] can be `null` if the mixin /// corresponding attribute. The [typeParameters] can be `null` if the mixin
@ -8072,9 +8123,6 @@ class MixinDeclarationImpl extends ClassOrMixinDeclarationImpl
_becomeParentOf(_onClause); _becomeParentOf(_onClause);
} }
@override
ClassElement? get declaredElement => _name.staticElement as ClassElement?;
@override @override
Token get firstTokenAfterCommentAndMetadata { Token get firstTokenAfterCommentAndMetadata {
return mixinKeyword; return mixinKeyword;
@ -8099,7 +8147,7 @@ class MixinDeclarationImpl extends ClassOrMixinDeclarationImpl
@override @override
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addToken('mixinKeyword', mixinKeyword) ..addToken('mixinKeyword', mixinKeyword)
..addNode('name', name) ..addToken('name', name2)
..addNode('typeParameters', typeParameters) ..addNode('typeParameters', typeParameters)
..addNode('onClause', onClause) ..addNode('onClause', onClause)
..addNode('implementsClause', implementsClause) ..addNode('implementsClause', implementsClause)
@ -8113,7 +8161,8 @@ class MixinDeclarationImpl extends ClassOrMixinDeclarationImpl
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_onClause?.accept(visitor); _onClause?.accept(visitor);
_implementsClause?.accept(visitor); _implementsClause?.accept(visitor);
@ -8127,19 +8176,26 @@ abstract class NamedCompilationUnitMemberImpl extends CompilationUnitMemberImpl
/// The name of the member being declared. /// The name of the member being declared.
SimpleIdentifierImpl _name; SimpleIdentifierImpl _name;
/// Initialize a newly created compilation unit member with the given [name]. /// Initialize a newly created compilation unit member with the given [name2].
/// Either or both of the [comment] and [metadata] can be `null` if the member /// Either or both of the [comment] and [metadata] can be `null` if the member
/// does not have the corresponding attribute. /// does not have the corresponding attribute.
NamedCompilationUnitMemberImpl(super.comment, super.metadata, this._name) { NamedCompilationUnitMemberImpl(super.comment, super.metadata, this._name) {
_becomeParentOf(_name); _becomeParentOf(_name);
} }
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl get name => _name; SimpleIdentifierImpl get name {
_name.staticElement = declaredElement;
return _name;
}
set name(SimpleIdentifier identifier) { set name(SimpleIdentifier identifier) {
_name = _becomeParentOf(identifier as SimpleIdentifierImpl); _name = _becomeParentOf(identifier as SimpleIdentifierImpl);
} }
@override
Token get name2 => _name.token;
} }
/// An expression that has a name associated with it. They are used in method /// An expression that has a name associated with it. They are used in method
@ -8603,8 +8659,12 @@ abstract class NormalFormalParameterImpl extends FormalParameterImpl
_comment = _becomeParentOf(comment as CommentImpl?); _comment = _becomeParentOf(comment as CommentImpl?);
} }
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl? get identifier => _identifier; SimpleIdentifierImpl? get identifier {
_identifier?.staticElement = declaredElement;
return _identifier;
}
set identifier(SimpleIdentifier? identifier) { set identifier(SimpleIdentifier? identifier) {
_identifier = _becomeParentOf(identifier as SimpleIdentifierImpl?); _identifier = _becomeParentOf(identifier as SimpleIdentifierImpl?);
@ -8627,6 +8687,9 @@ abstract class NormalFormalParameterImpl extends FormalParameterImpl
_metadata.addAll(metadata); _metadata.addAll(metadata);
} }
@override
Token? get name => _identifier?.token;
@override @override
List<AstNode> get sortedCommentAndAnnotations { List<AstNode> get sortedCommentAndAnnotations {
var comment = _comment; var comment = _comment;
@ -9821,11 +9884,11 @@ class SimpleFormalParameterImpl extends NormalFormalParameterImpl
} else if (_type != null) { } else if (_type != null) {
return _type!.beginToken; return _type!.beginToken;
} }
return identifier!.beginToken; return name!;
} }
@override @override
Token get endToken => identifier?.endToken ?? type!.endToken; Token get endToken => name ?? type!.endToken;
@override @override
bool get isConst => keyword?.keyword == Keyword.CONST; bool get isConst => keyword?.keyword == Keyword.CONST;
@ -9847,7 +9910,7 @@ class SimpleFormalParameterImpl extends NormalFormalParameterImpl
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addToken('keyword', keyword) ..addToken('keyword', keyword)
..addNode('type', type) ..addNode('type', type)
..addNode('identifier', identifier); ..addToken('name', name);
@override @override
E? accept<E>(AstVisitor<E> visitor) => E? accept<E>(AstVisitor<E> visitor) =>
@ -9857,6 +9920,7 @@ class SimpleFormalParameterImpl extends NormalFormalParameterImpl
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_type?.accept(visitor); _type?.accept(visitor);
// ignore: deprecated_member_use_from_same_package
identifier?.accept(visitor); identifier?.accept(visitor);
} }
} }
@ -10023,11 +10087,13 @@ class SimpleIdentifierImpl extends IdentifierImpl implements SimpleIdentifier {
} }
} }
if (parent is FieldFormalParameter) { if (parent is FieldFormalParameter) {
// ignore: deprecated_member_use_from_same_package
if (identical(parent.identifier, target)) { if (identical(parent.identifier, target)) {
return false; return false;
} }
} }
if (parent is VariableDeclaration) { if (parent is VariableDeclaration) {
// ignore: deprecated_member_use_from_same_package
if (identical(parent.name, target)) { if (identical(parent.name, target)) {
return false; return false;
} }
@ -10652,9 +10718,10 @@ class SuperFormalParameterImpl extends NormalFormalParameterImpl
@override @override
Token get endToken { Token get endToken {
return question ?? _parameters?.endToken ?? identifier.endToken; return question ?? _parameters?.endToken ?? name;
} }
@Deprecated('Use identifier2 instead')
@override @override
SimpleIdentifierImpl get identifier => super.identifier!; SimpleIdentifierImpl get identifier => super.identifier!;
@ -10667,6 +10734,9 @@ class SuperFormalParameterImpl extends NormalFormalParameterImpl
@override @override
bool get isFinal => keyword?.keyword == Keyword.FINAL; bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
Token get name => super.name!;
@override @override
FormalParameterListImpl? get parameters => _parameters; FormalParameterListImpl? get parameters => _parameters;
@ -10694,7 +10764,7 @@ class SuperFormalParameterImpl extends NormalFormalParameterImpl
..addNode('type', type) ..addNode('type', type)
..addToken('superKeyword', superKeyword) ..addToken('superKeyword', superKeyword)
..addToken('period', period) ..addToken('period', period)
..addNode('identifier', identifier) ..addToken('name', name)
..addNode('typeParameters', typeParameters) ..addNode('typeParameters', typeParameters)
..addNode('parameters', parameters); ..addNode('parameters', parameters);
@ -10706,6 +10776,7 @@ class SuperFormalParameterImpl extends NormalFormalParameterImpl
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_type?.accept(visitor); _type?.accept(visitor);
// ignore: deprecated_member_use_from_same_package
identifier.accept(visitor); identifier.accept(visitor);
_typeParameters?.accept(visitor); _typeParameters?.accept(visitor);
_parameters?.accept(visitor); _parameters?.accept(visitor);
@ -11402,6 +11473,9 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter {
/// explicit upper bound. /// explicit upper bound.
TypeAnnotationImpl? _bound; TypeAnnotationImpl? _bound;
@override
TypeParameterElement? declaredElement;
/// Initialize a newly created type parameter. Either or both of the [comment] /// Initialize a newly created type parameter. Either or both of the [comment]
/// and [metadata] can be `null` if the parameter does not have the /// and [metadata] can be `null` if the parameter does not have the
/// corresponding attribute. The [extendsKeyword] and [bound] can be `null` if /// corresponding attribute. The [extendsKeyword] and [bound] can be `null` if
@ -11419,10 +11493,6 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter {
_bound = _becomeParentOf(type as TypeAnnotationImpl?); _bound = _becomeParentOf(type as TypeAnnotationImpl?);
} }
@override
TypeParameterElement? get declaredElement =>
_name.staticElement as TypeParameterElement?;
@override @override
Token get endToken { Token get endToken {
if (_bound == null) { if (_bound == null) {
@ -11434,6 +11504,7 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter {
@override @override
Token get firstTokenAfterCommentAndMetadata => _name.beginToken; Token get firstTokenAfterCommentAndMetadata => _name.beginToken;
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl get name => _name; SimpleIdentifierImpl get name => _name;
@ -11441,9 +11512,12 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter {
_name = _becomeParentOf(identifier as SimpleIdentifierImpl); _name = _becomeParentOf(identifier as SimpleIdentifierImpl);
} }
@override
Token get name2 => _name.token;
@override @override
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addNode('name', name) ..addToken('name', name2)
..addToken('extendsKeyword', extendsKeyword) ..addToken('extendsKeyword', extendsKeyword)
..addNode('bound', bound); ..addNode('bound', bound);
@ -11453,7 +11527,8 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter {
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_bound?.accept(visitor); _bound?.accept(visitor);
} }
} }
@ -11606,6 +11681,9 @@ class VariableDeclarationImpl extends DeclarationImpl
/// The name of the variable being declared. /// The name of the variable being declared.
SimpleIdentifierImpl _name; SimpleIdentifierImpl _name;
@override
VariableElement? declaredElement;
/// The equal sign separating the variable name from the initial value, or /// The equal sign separating the variable name from the initial value, or
/// `null` if the initial value was not specified. /// `null` if the initial value was not specified.
@override @override
@ -11629,10 +11707,6 @@ class VariableDeclarationImpl extends DeclarationImpl
_becomeParentOf(_initializer); _becomeParentOf(_initializer);
} }
@override
VariableElement? get declaredElement =>
_name.staticElement as VariableElement?;
/// This overridden implementation of [documentationComment] looks in the /// This overridden implementation of [documentationComment] looks in the
/// grandparent node for Dartdoc comments if no documentation is specifically /// grandparent node for Dartdoc comments if no documentation is specifically
/// available on the node. /// available on the node.
@ -11684,16 +11758,23 @@ class VariableDeclarationImpl extends DeclarationImpl
return parent is VariableDeclarationList && parent.isLate; return parent is VariableDeclarationList && parent.isLate;
} }
@Deprecated('Use name2 instead')
@override @override
SimpleIdentifierImpl get name => _name; SimpleIdentifierImpl get name {
_name.staticElement = declaredElement;
return _name;
}
set name(SimpleIdentifier identifier) { set name(SimpleIdentifier identifier) {
_name = _becomeParentOf(identifier as SimpleIdentifierImpl); _name = _becomeParentOf(identifier as SimpleIdentifierImpl);
} }
@override
Token get name2 => _name.token;
@override @override
ChildEntities get _childEntities => super._childEntities ChildEntities get _childEntities => super._childEntities
..addNode('name', name) ..addToken('name', name2)
..addToken('equals', equals) ..addToken('equals', equals)
..addNode('initializer', initializer); ..addNode('initializer', initializer);
@ -11703,7 +11784,8 @@ class VariableDeclarationImpl extends DeclarationImpl
@override @override
void visitChildren(AstVisitor visitor) { void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor); super.visitChildren(visitor);
_name.accept(visitor); // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_initializer?.accept(visitor); _initializer?.accept(visitor);
} }
} }

View file

@ -68,11 +68,26 @@ class _ElementMapper extends GeneralizingAstVisitor<Element> {
return node.element2; return node.element2;
} }
@override
Element? visitFormalParameter(FormalParameter node) {
return node.declaredElement;
}
@override @override
Element? visitFunctionDeclaration(FunctionDeclaration node) { Element? visitFunctionDeclaration(FunctionDeclaration node) {
return node.declaredElement; return node.declaredElement;
} }
@override
Element? visitFunctionTypeAlias(FunctionTypeAlias node) {
return node.declaredElement;
}
@override
Element? visitGenericTypeAlias(GenericTypeAlias node) {
return node.declaredElement;
}
@override @override
Element? visitIdentifier(Identifier node) { Element? visitIdentifier(Identifier node) {
var parent = node.parent; var parent = node.parent;
@ -86,14 +101,16 @@ class _ElementMapper extends GeneralizingAstVisitor<Element> {
// Constructor Elements // Constructor Elements
var returnType = parent.returnType; var returnType = parent.returnType;
if (identical(returnType, node)) { if (identical(returnType, node)) {
var name = parent.name; var name = parent.name2;
if (name != null) { if (name != null) {
return name.staticElement; return parent.declaredElement;
} }
var element = node.staticElement; var element = node.staticElement;
if (element is ClassElement) { if (element is ClassElement) {
return element.unnamedConstructor; return element.unnamedConstructor;
} }
} else if (parent.name2 == node.endToken) {
return parent.declaredElement;
} }
} else if (parent is LibraryIdentifier) { } else if (parent is LibraryIdentifier) {
var grandParent = parent.parent; var grandParent = parent.parent;
@ -175,6 +192,11 @@ class _ElementMapper extends GeneralizingAstVisitor<Element> {
return null; return null;
} }
@override
Element? visitTypeParameter(TypeParameter node) {
return node.declaredElement;
}
@override @override
Element? visitVariableDeclaration(VariableDeclaration node) { Element? visitVariableDeclaration(VariableDeclaration node) {
return node.declaredElement; return node.declaredElement;

View file

@ -72,7 +72,7 @@ enum _Usage { writing, reading }
extension MethodDeclarationExtension on MethodDeclaration { extension MethodDeclarationExtension on MethodDeclaration {
bool get invokesSuperSelf { bool get invokesSuperSelf {
var visitor = _SuperVisitor( var visitor = _SuperVisitor(
name.name, name2.lexeme,
isSetter ? _Usage.writing : _Usage.reading, isSetter ? _Usage.writing : _Usage.reading,
); );
body.accept(visitor); body.accept(visitor);

View file

@ -167,7 +167,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.macroKeyword, suffix: ' '); _visitToken(node.macroKeyword, suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' '); _visitToken(node.augmentKeyword, suffix: ' ');
sink.write('class '); sink.write('class ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.extendsClause, prefix: ' '); _visitNode(node.extendsClause, prefix: ' ');
_visitNode(node.withClause, prefix: ' '); _visitNode(node.withClause, prefix: ' ');
@ -186,7 +186,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.macroKeyword, suffix: ' '); _visitToken(node.macroKeyword, suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' '); _visitToken(node.augmentKeyword, suffix: ' ');
sink.write('class '); sink.write('class ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
sink.write(' = '); sink.write(' = ');
_visitNode(node.superclass); _visitNode(node.superclass);
@ -237,7 +237,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.constKeyword, suffix: ' '); _visitToken(node.constKeyword, suffix: ' ');
_visitToken(node.factoryKeyword, suffix: ' '); _visitToken(node.factoryKeyword, suffix: ' ');
_visitNode(node.returnType); _visitNode(node.returnType);
_visitNode(node.name, prefix: '.'); _visitToken(node.name2, prefix: '.');
_visitNode(node.parameters); _visitNode(node.parameters);
_visitNodeList(node.initializers, prefix: ' : ', separator: ', '); _visitNodeList(node.initializers, prefix: ' : ', separator: ', ');
_visitNode(node.redirectedConstructor, prefix: ' = '); _visitNode(node.redirectedConstructor, prefix: ' = ');
@ -281,7 +281,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.keyword, suffix: ' '); _visitToken(node.keyword, suffix: ' ');
_visitNode(node.type, suffix: ' '); _visitNode(node.type, suffix: ' ');
_visitNode(node.identifier); _visitToken(node.name);
} }
@override @override
@ -336,7 +336,7 @@ class ToSourceVisitor implements AstVisitor<void> {
@override @override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) { void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.arguments); _visitNode(node.arguments);
} }
@ -344,7 +344,7 @@ class ToSourceVisitor implements AstVisitor<void> {
void visitEnumDeclaration(EnumDeclaration node) { void visitEnumDeclaration(EnumDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
sink.write('enum '); sink.write('enum ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.withClause, prefix: ' '); _visitNode(node.withClause, prefix: ' ');
_visitNode(node.implementsClause, prefix: ' '); _visitNode(node.implementsClause, prefix: ' ');
@ -399,7 +399,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.extensionKeyword, suffix: ' '); _visitToken(node.extensionKeyword, suffix: ' ');
_visitToken(node.typeKeyword, suffix: ' '); _visitToken(node.typeKeyword, suffix: ' ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
sink.write(' '); sink.write(' ');
_visitToken(node.onKeyword); _visitToken(node.onKeyword);
@ -437,7 +437,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.keyword, suffix: ' '); _visitToken(node.keyword, suffix: ' ');
_visitNode(node.type, suffix: ' '); _visitNode(node.type, suffix: ' ');
sink.write('this.'); sink.write('this.');
_visitNode(node.identifier); _visitToken(node.name);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.parameters); _visitNode(node.parameters);
} }
@ -528,7 +528,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.externalKeyword, suffix: ' '); _visitToken(node.externalKeyword, suffix: ' ');
_visitNode(node.returnType, suffix: ' '); _visitNode(node.returnType, suffix: ' ');
_visitToken(node.propertyKeyword, suffix: ' '); _visitToken(node.propertyKeyword, suffix: ' ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.functionExpression); _visitNode(node.functionExpression);
} }
@ -562,7 +562,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
sink.write('typedef '); sink.write('typedef ');
_visitNode(node.returnType, suffix: ' '); _visitNode(node.returnType, suffix: ' ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.parameters); _visitNode(node.parameters);
sink.write(';'); sink.write(';');
@ -574,7 +574,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.requiredKeyword, suffix: ' '); _visitToken(node.requiredKeyword, suffix: ' ');
_visitToken(node.covariantKeyword, suffix: ' '); _visitToken(node.covariantKeyword, suffix: ' ');
_visitNode(node.returnType, suffix: ' '); _visitNode(node.returnType, suffix: ' ');
_visitNode(node.identifier); _visitToken(node.name);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.parameters); _visitNode(node.parameters);
if (node.question != null) { if (node.question != null) {
@ -597,7 +597,7 @@ class ToSourceVisitor implements AstVisitor<void> {
void visitGenericTypeAlias(GenericTypeAlias node) { void visitGenericTypeAlias(GenericTypeAlias node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
sink.write('typedef '); sink.write('typedef ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
sink.write(' = '); sink.write(' = ');
_visitNode(node.type); _visitNode(node.type);
@ -771,7 +771,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitNode(node.returnType, suffix: ' '); _visitNode(node.returnType, suffix: ' ');
_visitToken(node.propertyKeyword, suffix: ' '); _visitToken(node.propertyKeyword, suffix: ' ');
_visitToken(node.operatorKeyword, suffix: ' '); _visitToken(node.operatorKeyword, suffix: ' ');
_visitNode(node.name); _visitToken(node.name2);
if (!node.isGetter) { if (!node.isGetter) {
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.parameters); _visitNode(node.parameters);
@ -792,7 +792,7 @@ class ToSourceVisitor implements AstVisitor<void> {
void visitMixinDeclaration(MixinDeclaration node) { void visitMixinDeclaration(MixinDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
sink.write('mixin '); sink.write('mixin ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.onClause, prefix: ' '); _visitNode(node.onClause, prefix: ' ');
_visitNode(node.implementsClause, prefix: ' '); _visitNode(node.implementsClause, prefix: ' ');
@ -958,10 +958,10 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.covariantKeyword, suffix: ' '); _visitToken(node.covariantKeyword, suffix: ' ');
_visitToken(node.keyword, suffix: ' '); _visitToken(node.keyword, suffix: ' ');
_visitNode(node.type); _visitNode(node.type);
if (node.type != null && node.identifier != null) { if (node.type != null && node.name != null) {
sink.write(' '); sink.write(' ');
} }
_visitNode(node.identifier); _visitToken(node.name);
} }
@override @override
@ -1005,7 +1005,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.keyword, suffix: ' '); _visitToken(node.keyword, suffix: ' ');
_visitNode(node.type, suffix: ' '); _visitNode(node.type, suffix: ' ');
sink.write('super.'); sink.write('super.');
_visitNode(node.identifier); _visitToken(node.name);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.parameters); _visitNode(node.parameters);
} }
@ -1093,7 +1093,7 @@ class ToSourceVisitor implements AstVisitor<void> {
if (varianceKeyword != null) { if (varianceKeyword != null) {
sink.write('${varianceKeyword.lexeme} '); sink.write('${varianceKeyword.lexeme} ');
} }
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.bound, prefix: ' extends '); _visitNode(node.bound, prefix: ' extends ');
} }
@ -1107,7 +1107,7 @@ class ToSourceVisitor implements AstVisitor<void> {
@override @override
void visitVariableDeclaration(VariableDeclaration node) { void visitVariableDeclaration(VariableDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitNode(node.name); _visitToken(node.name2);
_visitNode(node.initializer, prefix: ' = '); _visitNode(node.initializer, prefix: ' = ');
} }

View file

@ -249,7 +249,7 @@ class AstComparator implements AstVisitor<bool> {
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.abstractKeyword, other.abstractKeyword) && isEqualTokens(node.abstractKeyword, other.abstractKeyword) &&
isEqualTokens(node.classKeyword, other.classKeyword) && isEqualTokens(node.classKeyword, other.classKeyword) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) && isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualNodes(node.extendsClause, other.extendsClause) && isEqualNodes(node.extendsClause, other.extendsClause) &&
isEqualNodes(node.withClause, other.withClause) && isEqualNodes(node.withClause, other.withClause) &&
@ -266,7 +266,7 @@ class AstComparator implements AstVisitor<bool> {
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.typedefKeyword, other.typedefKeyword) && isEqualTokens(node.typedefKeyword, other.typedefKeyword) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) && isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualTokens(node.equals, other.equals) && isEqualTokens(node.equals, other.equals) &&
isEqualTokens(node.abstractKeyword, other.abstractKeyword) && isEqualTokens(node.abstractKeyword, other.abstractKeyword) &&
@ -332,7 +332,7 @@ class AstComparator implements AstVisitor<bool> {
isEqualTokens(node.factoryKeyword, other.factoryKeyword) && isEqualTokens(node.factoryKeyword, other.factoryKeyword) &&
isEqualNodes(node.returnType, other.returnType) && isEqualNodes(node.returnType, other.returnType) &&
isEqualTokens(node.period, other.period) && isEqualTokens(node.period, other.period) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.parameters, other.parameters) && isEqualNodes(node.parameters, other.parameters) &&
isEqualTokens(node.separator, other.separator) && isEqualTokens(node.separator, other.separator) &&
_isEqualNodeLists(node.initializers, other.initializers) && _isEqualNodeLists(node.initializers, other.initializers) &&
@ -387,7 +387,7 @@ class AstComparator implements AstVisitor<bool> {
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.keyword, other.keyword) &&
isEqualNodes(node.type, other.type) && isEqualNodes(node.type, other.type) &&
isEqualNodes(node.identifier, other.identifier); isEqualTokens(node.name, other.name);
} }
@override @override
@ -450,7 +450,7 @@ class AstComparator implements AstVisitor<bool> {
return isEqualNodes( return isEqualNodes(
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualNodes(node.name, other.name); isEqualTokens(node.name2, other.name2);
} }
@override @override
@ -460,7 +460,7 @@ class AstComparator implements AstVisitor<bool> {
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.enumKeyword, other.enumKeyword) && isEqualTokens(node.enumKeyword, other.enumKeyword) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualTokens(node.leftBracket, other.leftBracket) && isEqualTokens(node.leftBracket, other.leftBracket) &&
_isEqualNodeLists(node.constants, other.constants) && _isEqualNodeLists(node.constants, other.constants) &&
isEqualTokens(node.rightBracket, other.rightBracket); isEqualTokens(node.rightBracket, other.rightBracket);
@ -507,7 +507,7 @@ class AstComparator implements AstVisitor<bool> {
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.extensionKeyword, other.extensionKeyword) && isEqualTokens(node.extensionKeyword, other.extensionKeyword) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) && isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualTokens(node.onKeyword, other.onKeyword) && isEqualTokens(node.onKeyword, other.onKeyword) &&
isEqualNodes(node.extendedType, other.extendedType) && isEqualNodes(node.extendedType, other.extendedType) &&
@ -547,7 +547,7 @@ class AstComparator implements AstVisitor<bool> {
isEqualNodes(node.type, other.type) && isEqualNodes(node.type, other.type) &&
isEqualTokens(node.thisKeyword, other.thisKeyword) && isEqualTokens(node.thisKeyword, other.thisKeyword) &&
isEqualTokens(node.period, other.period) && isEqualTokens(node.period, other.period) &&
isEqualNodes(node.identifier, other.identifier); isEqualTokens(node.name, other.name);
} }
@override @override
@ -627,7 +627,7 @@ class AstComparator implements AstVisitor<bool> {
isEqualTokens(node.externalKeyword, other.externalKeyword) && isEqualTokens(node.externalKeyword, other.externalKeyword) &&
isEqualNodes(node.returnType, other.returnType) && isEqualNodes(node.returnType, other.returnType) &&
isEqualTokens(node.propertyKeyword, other.propertyKeyword) && isEqualTokens(node.propertyKeyword, other.propertyKeyword) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.functionExpression, other.functionExpression); isEqualNodes(node.functionExpression, other.functionExpression);
} }
@ -666,7 +666,7 @@ class AstComparator implements AstVisitor<bool> {
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.typedefKeyword, other.typedefKeyword) && isEqualTokens(node.typedefKeyword, other.typedefKeyword) &&
isEqualNodes(node.returnType, other.returnType) && isEqualNodes(node.returnType, other.returnType) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) && isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualNodes(node.parameters, other.parameters) && isEqualNodes(node.parameters, other.parameters) &&
isEqualTokens(node.semicolon, other.semicolon); isEqualTokens(node.semicolon, other.semicolon);
@ -679,7 +679,7 @@ class AstComparator implements AstVisitor<bool> {
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualNodes(node.returnType, other.returnType) && isEqualNodes(node.returnType, other.returnType) &&
isEqualNodes(node.identifier, other.identifier) && isEqualTokens(node.name, other.name) &&
isEqualNodes(node.parameters, other.parameters); isEqualNodes(node.parameters, other.parameters);
} }
@ -700,7 +700,7 @@ class AstComparator implements AstVisitor<bool> {
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.typedefKeyword, other.typedefKeyword) && isEqualTokens(node.typedefKeyword, other.typedefKeyword) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) && isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualTokens(node.equals, other.equals) && isEqualTokens(node.equals, other.equals) &&
isEqualNodes(node.type, other.type); isEqualNodes(node.type, other.type);
@ -894,7 +894,7 @@ class AstComparator implements AstVisitor<bool> {
isEqualNodes(node.returnType, other.returnType) && isEqualNodes(node.returnType, other.returnType) &&
isEqualTokens(node.propertyKeyword, other.propertyKeyword) && isEqualTokens(node.propertyKeyword, other.propertyKeyword) &&
isEqualTokens(node.operatorKeyword, other.operatorKeyword) && isEqualTokens(node.operatorKeyword, other.operatorKeyword) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.parameters, other.parameters) && isEqualNodes(node.parameters, other.parameters) &&
isEqualNodes(node.body, other.body); isEqualNodes(node.body, other.body);
} }
@ -915,7 +915,7 @@ class AstComparator implements AstVisitor<bool> {
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.mixinKeyword, other.mixinKeyword) && isEqualTokens(node.mixinKeyword, other.mixinKeyword) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) && isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualNodes(node.onClause, other.onClause) && isEqualNodes(node.onClause, other.onClause) &&
isEqualNodes(node.implementsClause, other.implementsClause) && isEqualNodes(node.implementsClause, other.implementsClause) &&
@ -1099,7 +1099,7 @@ class AstComparator implements AstVisitor<bool> {
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.keyword, other.keyword) &&
isEqualNodes(node.type, other.type) && isEqualNodes(node.type, other.type) &&
isEqualNodes(node.identifier, other.identifier); isEqualTokens(node.name, other.name);
} }
@override @override
@ -1153,7 +1153,7 @@ class AstComparator implements AstVisitor<bool> {
isEqualNodes(node.type, other.type) && isEqualNodes(node.type, other.type) &&
isEqualTokens(node.superKeyword, other.superKeyword) && isEqualTokens(node.superKeyword, other.superKeyword) &&
isEqualTokens(node.period, other.period) && isEqualTokens(node.period, other.period) &&
isEqualNodes(node.identifier, other.identifier); isEqualTokens(node.name, other.name);
} }
@override @override
@ -1250,7 +1250,7 @@ class AstComparator implements AstVisitor<bool> {
return isEqualNodes( return isEqualNodes(
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualTokens((node as TypeParameterImpl).varianceKeyword, isEqualTokens((node as TypeParameterImpl).varianceKeyword,
(other as TypeParameterImpl).varianceKeyword) && (other as TypeParameterImpl).varianceKeyword) &&
isEqualTokens(node.extendsKeyword, other.extendsKeyword) && isEqualTokens(node.extendsKeyword, other.extendsKeyword) &&
@ -1271,7 +1271,7 @@ class AstComparator implements AstVisitor<bool> {
return isEqualNodes( return isEqualNodes(
node.documentationComment, other.documentationComment) && node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodeLists(node.metadata, other.metadata) &&
isEqualNodes(node.name, other.name) && isEqualTokens(node.name2, other.name2) &&
isEqualTokens(node.equals, other.equals) && isEqualTokens(node.equals, other.equals) &&
isEqualNodes(node.initializer, other.initializer); isEqualNodes(node.initializer, other.initializer);
} }
@ -1805,10 +1805,7 @@ class NodeReplacer implements AstVisitor<bool> {
@override @override
bool visitClassDeclaration(covariant ClassDeclarationImpl node) { bool visitClassDeclaration(covariant ClassDeclarationImpl node) {
if (identical(node.name, _oldNode)) { if (identical(node.typeParameters, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList; node.typeParameters = _newNode as TypeParameterList;
return true; return true;
} else if (identical(node.extendsClause, _oldNode)) { } else if (identical(node.extendsClause, _oldNode)) {
@ -1831,10 +1828,7 @@ class NodeReplacer implements AstVisitor<bool> {
@override @override
bool visitClassTypeAlias(covariant ClassTypeAliasImpl node) { bool visitClassTypeAlias(covariant ClassTypeAliasImpl node) {
if (identical(node.name, _oldNode)) { if (identical(node.typeParameters, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList; node.typeParameters = _newNode as TypeParameterList;
return true; return true;
} else if (identical(node.superclass, _oldNode)) { } else if (identical(node.superclass, _oldNode)) {
@ -1915,9 +1909,6 @@ class NodeReplacer implements AstVisitor<bool> {
if (identical(node.returnType, _oldNode)) { if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as Identifier; node.returnType = _newNode as Identifier;
return true; return true;
} else if (identical(node.name, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.parameters, _oldNode)) { } else if (identical(node.parameters, _oldNode)) {
node.parameters = _newNode as FormalParameterList; node.parameters = _newNode as FormalParameterList;
return true; return true;
@ -1986,9 +1977,6 @@ class NodeReplacer implements AstVisitor<bool> {
if (identical(node.type, _oldNode)) { if (identical(node.type, _oldNode)) {
node.type = _newNode as TypeAnnotation; node.type = _newNode as TypeAnnotation;
return true; return true;
} else if (identical(node.identifier, _oldNode)) {
node.identifier = _newNode as SimpleIdentifier;
return true;
} }
return visitAnnotatedNode(node); return visitAnnotatedNode(node);
} }
@ -2048,19 +2036,12 @@ class NodeReplacer implements AstVisitor<bool> {
@override @override
bool visitEnumConstantDeclaration( bool visitEnumConstantDeclaration(
covariant EnumConstantDeclarationImpl node) { covariant EnumConstantDeclarationImpl node) {
if (identical(node.name, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
}
return visitAnnotatedNode(node); return visitAnnotatedNode(node);
} }
@override @override
bool visitEnumDeclaration(covariant EnumDeclarationImpl node) { bool visitEnumDeclaration(covariant EnumDeclarationImpl node) {
if (identical(node.name, _oldNode)) { if (identical(node.typeParameters, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList; node.typeParameters = _newNode as TypeParameterList;
return true; return true;
} else if (identical(node.withClause, _oldNode)) { } else if (identical(node.withClause, _oldNode)) {
@ -2115,9 +2096,6 @@ class NodeReplacer implements AstVisitor<bool> {
return true; return true;
} else if (_replaceInList(node.metadata)) { } else if (_replaceInList(node.metadata)) {
return true; return true;
} else if (identical(node.name, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.typeParameters, _oldNode)) { } else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList; node.typeParameters = _newNode as TypeParameterList;
return true; return true;
@ -2264,9 +2242,6 @@ class NodeReplacer implements AstVisitor<bool> {
if (identical(node.returnType, _oldNode)) { if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as TypeAnnotation; node.returnType = _newNode as TypeAnnotation;
return true; return true;
} else if (identical(node.name, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.functionExpression, _oldNode)) { } else if (identical(node.functionExpression, _oldNode)) {
node.functionExpression = _newNode as FunctionExpression; node.functionExpression = _newNode as FunctionExpression;
return true; return true;
@ -2332,9 +2307,6 @@ class NodeReplacer implements AstVisitor<bool> {
if (identical(node.returnType, _oldNode)) { if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as TypeAnnotation; node.returnType = _newNode as TypeAnnotation;
return true; return true;
} else if (identical(node.name, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.typeParameters, _oldNode)) { } else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList; node.typeParameters = _newNode as TypeParameterList;
return true; return true;
@ -2379,10 +2351,7 @@ class NodeReplacer implements AstVisitor<bool> {
@override @override
bool visitGenericTypeAlias(GenericTypeAlias node) { bool visitGenericTypeAlias(GenericTypeAlias node) {
var nodeImpl = node as GenericTypeAliasImpl; var nodeImpl = node as GenericTypeAliasImpl;
if (identical(node.name, _oldNode)) { if (identical(node.typeParameters, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.typeParameters, _oldNode)) {
nodeImpl.typeParameters = _newNode as TypeParameterList; nodeImpl.typeParameters = _newNode as TypeParameterList;
return true; return true;
} else if (identical(node.type, _oldNode)) { } else if (identical(node.type, _oldNode)) {
@ -2591,9 +2560,6 @@ class NodeReplacer implements AstVisitor<bool> {
if (identical(node.returnType, _oldNode)) { if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as TypeAnnotation; node.returnType = _newNode as TypeAnnotation;
return true; return true;
} else if (identical(node.name, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.parameters, _oldNode)) { } else if (identical(node.parameters, _oldNode)) {
node.parameters = _newNode as FormalParameterList; node.parameters = _newNode as FormalParameterList;
return true; return true;
@ -2632,9 +2598,6 @@ class NodeReplacer implements AstVisitor<bool> {
return true; return true;
} else if (_replaceInList(node.metadata)) { } else if (_replaceInList(node.metadata)) {
return true; return true;
} else if (identical(node.name, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.typeParameters, _oldNode)) { } else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList; node.typeParameters = _newNode as TypeParameterList;
return true; return true;
@ -2707,9 +2670,6 @@ class NodeReplacer implements AstVisitor<bool> {
if (identical(node.documentationComment, _oldNode)) { if (identical(node.documentationComment, _oldNode)) {
node.documentationComment = _newNode as Comment; node.documentationComment = _newNode as Comment;
return true; return true;
} else if (identical(node.identifier, _oldNode)) {
node.identifier = _newNode as SimpleIdentifier;
return true;
} else if (_replaceInList(node.metadata)) { } else if (_replaceInList(node.metadata)) {
return true; return true;
} }
@ -3016,10 +2976,7 @@ class NodeReplacer implements AstVisitor<bool> {
@override @override
bool visitTypeParameter(covariant TypeParameterImpl node) { bool visitTypeParameter(covariant TypeParameterImpl node) {
if (identical(node.name, _oldNode)) { if (identical(node.bound, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.bound, _oldNode)) {
node.bound = _newNode as TypeAnnotation; node.bound = _newNode as TypeAnnotation;
return true; return true;
} }
@ -3044,10 +3001,7 @@ class NodeReplacer implements AstVisitor<bool> {
@override @override
bool visitVariableDeclaration(covariant VariableDeclarationImpl node) { bool visitVariableDeclaration(covariant VariableDeclarationImpl node) {
if (identical(node.name, _oldNode)) { if (identical(node.initializer, _oldNode)) {
node.name = _newNode as SimpleIdentifier;
return true;
} else if (identical(node.initializer, _oldNode)) {
node.initializer = _newNode as Expression; node.initializer = _newNode as Expression;
return true; return true;
// TODO(srawlins) also replace node's declared element's // TODO(srawlins) also replace node's declared element's
@ -3173,8 +3127,8 @@ class ScopedNameFinder extends GeneralizingAstVisitor<void> {
@override @override
void visitCatchClause(CatchClause node) { void visitCatchClause(CatchClause node) {
_addToScope2(node.exceptionParameter2?.name); _addToScope(node.exceptionParameter2?.name);
_addToScope2(node.stackTraceParameter2?.name); _addToScope(node.stackTraceParameter2?.name);
super.visitCatchClause(node); super.visitCatchClause(node);
} }
@ -3193,7 +3147,7 @@ class ScopedNameFinder extends GeneralizingAstVisitor<void> {
@override @override
void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) { void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
_addToScope(node.loopVariable.identifier); _addToScope(node.loopVariable.name);
super.visitForEachPartsWithDeclaration(node); super.visitForEachPartsWithDeclaration(node);
} }
@ -3260,28 +3214,19 @@ class ScopedNameFinder extends GeneralizingAstVisitor<void> {
void _addParameters(NodeList<FormalParameter> vars) { void _addParameters(NodeList<FormalParameter> vars) {
for (FormalParameter var2 in vars) { for (FormalParameter var2 in vars) {
_addToScope(var2.identifier); _addToScope(var2.name);
} }
} }
void _addToScope(SimpleIdentifier? identifier) { void _addToScope(Token? identifier) {
if (identifier != null && _isInRange(identifier)) { if (identifier != null && _isInRange(identifier)) {
_locals.add(identifier.name);
}
}
/// TODO(scheglov) If we still have [_addToScope] after:
/// https://dart-review.googlesource.com/c/sdk/+/252566,
/// rename to `_addNodeToScope` and `_addTokenToScope`.
void _addToScope2(Token? identifier) {
if (identifier != null && _isInRange2(identifier)) {
_locals.add(identifier.lexeme); _locals.add(identifier.lexeme);
} }
} }
void _addVariables(NodeList<VariableDeclaration> variables) { void _addVariables(NodeList<VariableDeclaration> variables) {
for (VariableDeclaration variable in variables) { for (VariableDeclaration variable in variables) {
_addToScope(variable.name); _addToScope(variable.name2);
} }
} }
@ -3297,21 +3242,12 @@ class ScopedNameFinder extends GeneralizingAstVisitor<void> {
_addVariables(statement.variables.variables); _addVariables(statement.variables.variables);
} else if (statement is FunctionDeclarationStatement && } else if (statement is FunctionDeclarationStatement &&
!_referenceIsWithinLocalFunction) { !_referenceIsWithinLocalFunction) {
_addToScope(statement.functionDeclaration.name); _addToScope(statement.functionDeclaration.name2);
} }
} }
} }
bool _isInRange(AstNode node) { bool _isInRange(Token token) {
if (_position < 0) {
// if source position is not set then all nodes are in range
return true;
// not reached
}
return node.end < _position;
}
bool _isInRange2(Token token) {
if (_position < 0) { if (_position < 0) {
// if source position is not set then all nodes are in range // if source position is not set then all nodes are in range
return true; return true;

View file

@ -576,7 +576,8 @@ class ConstantVerifier extends RecursiveAstVisitor<void> {
if (member is FieldDeclaration && !member.isStatic) { if (member is FieldDeclaration && !member.isStatic) {
for (VariableDeclaration variableDeclaration for (VariableDeclaration variableDeclaration
in member.fields.variables) { in member.fields.variables) {
if (isEnumDeclaration && variableDeclaration.name.name == 'values') { if (isEnumDeclaration &&
variableDeclaration.name2.lexeme == 'values') {
continue; continue;
} }
var initializer = variableDeclaration.initializer; var initializer = variableDeclaration.initializer;
@ -597,7 +598,7 @@ class ConstantVerifier extends RecursiveAstVisitor<void> {
CompileTimeErrorCode CompileTimeErrorCode
.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST, .CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST,
constKeyword, constKeyword,
[variableDeclaration.name.name]); [variableDeclaration.name2.lexeme]);
} }
} }
} }

View file

@ -5,6 +5,7 @@
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/element_locator.dart'; import 'package:analyzer/src/dart/ast/element_locator.dart';
import 'package:analyzer/src/dart/element/element.dart'; import 'package:analyzer/src/dart/element/element.dart';
import 'package:collection/src/iterable_extensions.dart'; import 'package:collection/src/iterable_extensions.dart';
@ -15,6 +16,9 @@ Element? getElementOfNode(AstNode? node) {
if (node == null) { if (node == null) {
return null; return null;
} }
if (node is DeclaredSimpleIdentifier) {
node = node.parent;
}
if (node is SimpleIdentifier && node.parent is LibraryIdentifier) { if (node is SimpleIdentifier && node.parent is LibraryIdentifier) {
node = node.parent; node = node.parent;
} }
@ -280,7 +284,7 @@ class ReferencesCollector extends GeneralizingAstVisitor<void> {
MatchInfo(e.nameOffset + e.nameLength, 0, MatchKind.DECLARATION)); MatchInfo(e.nameOffset + e.nameLength, 0, MatchKind.DECLARATION));
} else { } else {
var offset = node.period!.offset; var offset = node.period!.offset;
var length = node.name!.end - offset; var length = node.name2!.end - offset;
references.add(MatchInfo(offset, length, MatchKind.DECLARATION)); references.add(MatchInfo(offset, length, MatchKind.DECLARATION));
} }
} }
@ -329,7 +333,7 @@ class ReferencesCollector extends GeneralizingAstVisitor<void> {
offset = constructorSelector.period.offset; offset = constructorSelector.period.offset;
length = constructorSelector.name.end - offset; length = constructorSelector.name.end - offset;
} else { } else {
offset = node.name.end; offset = node.name2.end;
length = 0; length = 0;
} }
var kind = node.arguments == null var kind = node.arguments == null

View file

@ -26,7 +26,7 @@ Set<Object> _computeExplicitlyTypedParameterSet(
int unnamedParameterIndex = 0; int unnamedParameterIndex = 0;
for (var formalParameter in parameters) { for (var formalParameter in parameters) {
var key = formalParameter.isNamed var key = formalParameter.isNamed
? formalParameter.identifier?.name ?? '' ? formalParameter.name?.lexeme ?? ''
: unnamedParameterIndex++; : unnamedParameterIndex++;
if (formalParameter.isExplicitlyTyped) { if (formalParameter.isExplicitlyTyped) {
result.add(key); result.add(key);

View file

@ -135,7 +135,7 @@ class PrefixedIdentifierResolver {
return false; return false;
} }
if (parent is ConstructorDeclaration) { if (parent is ConstructorDeclaration) {
if (parent.name == node || parent.returnType == node) { if (parent.returnType == node) {
return false; return false;
} }
} }

View file

@ -240,7 +240,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitClassDeclaration(covariant ClassDeclarationImpl node) { void visitClassDeclaration(covariant ClassDeclarationImpl node) {
ClassElementImpl element = _elementWalker!.getClass(); ClassElementImpl element = _elementWalker!.getClass();
node.name.staticElement = element; node.declaredElement = element;
_namedTypeResolver.enclosingClass = element; _namedTypeResolver.enclosingClass = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -275,7 +275,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitClassTypeAlias(covariant ClassTypeAliasImpl node) { void visitClassTypeAlias(covariant ClassTypeAliasImpl node) {
ClassElementImpl element = _elementWalker!.getClass(); ClassElementImpl element = _elementWalker!.getClass();
node.name.staticElement = element; node.declaredElement = element;
_namedTypeResolver.enclosingClass = element; _namedTypeResolver.enclosingClass = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -303,7 +303,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
void visitConstructorDeclaration(ConstructorDeclaration node) { void visitConstructorDeclaration(ConstructorDeclaration node) {
ConstructorElementImpl element = _elementWalker!.getConstructor(); ConstructorElementImpl element = _elementWalker!.getConstructor();
(node as ConstructorDeclarationImpl).declaredElement = element; (node as ConstructorDeclarationImpl).declaredElement = element;
node.name?.staticElement = element; node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -330,10 +330,10 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitDeclaredIdentifier(covariant DeclaredIdentifierImpl node) { void visitDeclaredIdentifier(covariant DeclaredIdentifierImpl node) {
var nameNode = node.identifier; var nameToken = node.name;
var element = LocalVariableElementImpl(nameNode.name, nameNode.offset); var element = LocalVariableElementImpl(nameToken.lexeme, nameToken.offset);
_elementHolder.enclose(element); _elementHolder.enclose(element);
nameNode.staticElement = element; node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -354,14 +354,14 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) { void visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
var normalParameter = node.parameter; var normalParameter = node.parameter;
var nameNode = normalParameter.identifier; var nameToken = normalParameter.name;
ParameterElementImpl element; ParameterElementImpl element;
if (_elementWalker != null) { if (_elementWalker != null) {
element = _elementWalker!.getParameter(); element = _elementWalker!.getParameter();
} else { } else {
var name = nameNode?.name ?? ''; var name = nameToken?.lexeme ?? '';
var nameOffset = nameNode?.offset ?? -1; var nameOffset = nameToken?.offset ?? -1;
if (node.parameter is FieldFormalParameter) { if (node.parameter is FieldFormalParameter) {
// Only for recovery, this should not happen in valid code. // Only for recovery, this should not happen in valid code.
element = DefaultFieldFormalParameterElementImpl( element = DefaultFieldFormalParameterElementImpl(
@ -389,10 +389,8 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
} }
} }
if (normalParameter is SimpleFormalParameterImpl) { normalParameter.declaredElement = element;
normalParameter.declaredElement = element; node.declaredElement = element;
}
nameNode?.staticElement = element;
normalParameter.accept(this); normalParameter.accept(this);
@ -409,8 +407,8 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitEnumConstantDeclaration( void visitEnumConstantDeclaration(
covariant EnumConstantDeclarationImpl node) { covariant EnumConstantDeclarationImpl node) {
var element = _elementWalker!.getVariable(); var element = _elementWalker!.getVariable() as ConstFieldElementImpl;
node.name.staticElement = element; node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -427,7 +425,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitEnumDeclaration(covariant EnumDeclarationImpl node) { void visitEnumDeclaration(covariant EnumDeclarationImpl node) {
EnumElementImpl element = _elementWalker!.getEnum(); EnumElementImpl element = _elementWalker!.getEnum();
node.name.staticElement = element; node.declaredElement = element;
_namedTypeResolver.enclosingClass = element; _namedTypeResolver.enclosingClass = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -466,7 +464,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
void visitExtensionDeclaration(ExtensionDeclaration node) { void visitExtensionDeclaration(ExtensionDeclaration node) {
var element = _elementWalker!.getExtension(); var element = _elementWalker!.getExtension();
(node as ExtensionDeclarationImpl).declaredElement = element; (node as ExtensionDeclarationImpl).declaredElement = element;
node.name?.staticElement = element; node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -489,15 +487,15 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
if (node.parent is DefaultFormalParameter) { if (node.parent is DefaultFormalParameter) {
element = node.declaredElement as FieldFormalParameterElementImpl; element = node.declaredElement as FieldFormalParameterElementImpl;
} else { } else {
var nameNode = node.identifier; var nameToken = node.name;
if (_elementWalker != null) { if (_elementWalker != null) {
element = element =
_elementWalker!.getParameter() as FieldFormalParameterElementImpl; _elementWalker!.getParameter() as FieldFormalParameterElementImpl;
} else { } else {
// Only for recovery, this should not happen in valid code. // Only for recovery, this should not happen in valid code.
element = FieldFormalParameterElementImpl( element = FieldFormalParameterElementImpl(
name: nameNode.name, name: nameToken.lexeme,
nameOffset: nameNode.offset, nameOffset: nameToken.offset,
parameterKind: node.kind, parameterKind: node.kind,
); );
_elementHolder.enclose(element); _elementHolder.enclose(element);
@ -506,7 +504,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
element.isFinal = node.isFinal; element.isFinal = node.isFinal;
_setCodeRange(element, node); _setCodeRange(element, node);
} }
nameNode.staticElement = element; node.declaredElement = element;
} }
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -548,7 +546,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
element = node.isGetter || node.isSetter element = node.isGetter || node.isSetter
? _elementWalker!.getAccessor() ? _elementWalker!.getAccessor()
: _elementWalker!.getFunction(); : _elementWalker!.getFunction();
node.name.staticElement = element; node.declaredElement = element;
} else { } else {
element = node.declaredElement as ExecutableElementImpl; element = node.declaredElement as ExecutableElementImpl;
@ -648,7 +646,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitFunctionTypeAlias(covariant FunctionTypeAliasImpl node) { void visitFunctionTypeAlias(covariant FunctionTypeAliasImpl node) {
var element = _elementWalker!.getTypedef(); var element = _elementWalker!.getTypedef();
node.name.staticElement = element; node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -670,13 +668,13 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
if (node.parent is DefaultFormalParameter) { if (node.parent is DefaultFormalParameter) {
element = node.declaredElement as ParameterElementImpl; element = node.declaredElement as ParameterElementImpl;
} else { } else {
var nameNode = node.identifier; var nameToken = node.name;
if (_elementWalker != null) { if (_elementWalker != null) {
element = _elementWalker!.getParameter(); element = _elementWalker!.getParameter();
} else { } else {
element = ParameterElementImpl( element = ParameterElementImpl(
name: nameNode.name, name: nameToken.lexeme,
nameOffset: nameNode.offset, nameOffset: nameToken.offset,
parameterKind: node.kind, parameterKind: node.kind,
); );
_elementHolder.addParameter(element); _elementHolder.addParameter(element);
@ -685,7 +683,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
element.isFinal = node.isFinal; element.isFinal = node.isFinal;
_setCodeRange(element, node); _setCodeRange(element, node);
} }
nameNode.staticElement = element; node.declaredElement = element;
} }
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -762,7 +760,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitGenericTypeAlias(covariant GenericTypeAliasImpl node) { void visitGenericTypeAlias(covariant GenericTypeAliasImpl node) {
var element = _elementWalker!.getTypedef(); var element = _elementWalker!.getTypedef();
node.name.staticElement = element; node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -864,7 +862,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
ExecutableElementImpl element = node.isGetter || node.isSetter ExecutableElementImpl element = node.isGetter || node.isSetter
? _elementWalker!.getAccessor() ? _elementWalker!.getAccessor()
: _elementWalker!.getFunction(); : _elementWalker!.getFunction();
node.name.staticElement = element; node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -899,7 +897,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
@override @override
void visitMixinDeclaration(covariant MixinDeclarationImpl node) { void visitMixinDeclaration(covariant MixinDeclarationImpl node) {
var element = _elementWalker!.getMixin(); var element = _elementWalker!.getMixin();
node.name.staticElement = element; node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -975,14 +973,14 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
if (node.parent is DefaultFormalParameter) { if (node.parent is DefaultFormalParameter) {
element = node.declaredElement as ParameterElementImpl; element = node.declaredElement as ParameterElementImpl;
} else { } else {
var nameNode = node.identifier; var nameToken = node.name;
if (_elementWalker != null) { if (_elementWalker != null) {
element = _elementWalker!.getParameter(); element = _elementWalker!.getParameter();
} else { } else {
if (nameNode != null) { if (nameToken != null) {
element = ParameterElementImpl( element = ParameterElementImpl(
name: nameNode.name, name: nameToken.lexeme,
nameOffset: nameNode.offset, nameOffset: nameToken.offset,
parameterKind: node.kind, parameterKind: node.kind,
); );
} else { } else {
@ -1003,7 +1001,6 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
} }
node.declaredElement = element; node.declaredElement = element;
} }
nameNode?.staticElement = element;
node.declaredElement = element; node.declaredElement = element;
} }
@ -1021,15 +1018,15 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
if (node.parent is DefaultFormalParameter) { if (node.parent is DefaultFormalParameter) {
element = node.declaredElement as SuperFormalParameterElementImpl; element = node.declaredElement as SuperFormalParameterElementImpl;
} else { } else {
var nameNode = node.identifier; var nameToken = node.name;
if (_elementWalker != null) { if (_elementWalker != null) {
element = element =
_elementWalker!.getParameter() as SuperFormalParameterElementImpl; _elementWalker!.getParameter() as SuperFormalParameterElementImpl;
} else { } else {
// Only for recovery, this should not happen in valid code. // Only for recovery, this should not happen in valid code.
element = SuperFormalParameterElementImpl( element = SuperFormalParameterElementImpl(
name: nameNode.name, name: nameToken.lexeme,
nameOffset: nameNode.offset, nameOffset: nameToken.offset,
parameterKind: node.kind, parameterKind: node.kind,
); );
_elementHolder.enclose(element); _elementHolder.enclose(element);
@ -1038,7 +1035,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
element.isFinal = node.isFinal; element.isFinal = node.isFinal;
_setCodeRange(element, node); _setCodeRange(element, node);
} }
nameNode.staticElement = element; node.declaredElement = element;
} }
_setOrCreateMetadataElements(element, node.metadata); _setOrCreateMetadataElements(element, node.metadata);
@ -1112,7 +1109,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
VariableElementImpl element; VariableElementImpl element;
if (_elementWalker != null) { if (_elementWalker != null) {
element = _elementWalker!.getVariable(); element = _elementWalker!.getVariable();
node.name.staticElement = element; node.declaredElement = element;
} else { } else {
var localElement = node.declaredElement as LocalVariableElementImpl; var localElement = node.declaredElement as LocalVariableElementImpl;
element = localElement; element = localElement;
@ -1196,9 +1193,9 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
void _buildLocalFunctionElement( void _buildLocalFunctionElement(
covariant FunctionDeclarationStatementImpl statement) { covariant FunctionDeclarationStatementImpl statement) {
var node = statement.functionDeclaration; var node = statement.functionDeclaration;
var nameNode = node.name; var nameToken = node.name2;
var element = FunctionElementImpl(nameNode.name, nameNode.offset); var element = FunctionElementImpl(nameToken.lexeme, nameToken.offset);
nameNode.staticElement = element; node.declaredElement = element;
_define(element); _define(element);
_elementHolder.enclose(element); _elementHolder.enclose(element);
} }
@ -1209,21 +1206,21 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
var isLate = variableList.isLate; var isLate = variableList.isLate;
for (var variable in variableList.variables) { for (var variable in variableList.variables) {
variable as VariableDeclarationImpl; variable as VariableDeclarationImpl;
var variableName = variable.name; var nameToken = variable.name2;
LocalVariableElementImpl element; LocalVariableElementImpl element;
if (isConst && variable.initializer != null) { if (isConst && variable.initializer != null) {
element = ConstLocalVariableElementImpl( element = ConstLocalVariableElementImpl(
variableName.name, nameToken.lexeme,
variableName.offset, nameToken.offset,
); );
} else { } else {
element = LocalVariableElementImpl( element = LocalVariableElementImpl(
variableName.name, nameToken.lexeme,
variableName.offset, nameToken.offset,
); );
} }
variableName.staticElement = element; variable.declaredElement = element;
_elementHolder.enclose(element); _elementHolder.enclose(element);
_define(element); _define(element);
@ -1241,18 +1238,20 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
for (var typeParameter in typeParameterList.typeParameters) { for (var typeParameter in typeParameterList.typeParameters) {
typeParameter as TypeParameterImpl; typeParameter as TypeParameterImpl;
var name = typeParameter.name; var name = typeParameter.name2;
TypeParameterElementImpl element; TypeParameterElementImpl element;
if (_elementWalker != null) { if (_elementWalker != null) {
element = _elementWalker!.getTypeParameter(); element = _elementWalker!.getTypeParameter();
} else { } else {
element = TypeParameterElementImpl(name.name, name.offset); element = TypeParameterElementImpl(name.lexeme, name.offset);
_elementHolder.addTypeParameter(element); _elementHolder.addTypeParameter(element);
_setCodeRange(element, typeParameter); _setCodeRange(element, typeParameter);
} }
name.staticElement = element; typeParameter.declaredElement = element;
// ignore: deprecated_member_use_from_same_package
typeParameter.name.staticElement = element;
_define(element); _define(element);
_setOrCreateMetadataElements(element, typeParameter.metadata); _setOrCreateMetadataElements(element, typeParameter.metadata);
} }

View file

@ -77,7 +77,7 @@ class SimpleIdentifierResolver with ScopeHelpers {
return false; return false;
} }
if (parent is ConstructorDeclaration) { if (parent is ConstructorDeclaration) {
if (parent.name == node || parent.returnType == node) { if (parent.returnType == node) {
return false; return false;
} }
} }

View file

@ -33,7 +33,7 @@ class VariableDeclarationResolver {
_resolver.errorReporter.reportErrorForNode( _resolver.errorReporter.reportErrorForNode(
HintCode.INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE, HintCode.INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE,
node, node,
[node.name.name], [node.name2.lexeme],
); );
} }
return; return;
@ -70,8 +70,13 @@ class VariableDeclarationResolver {
element.constantInitializer = initializer; element.constantInitializer = initializer;
} }
_resolver.checkForInvalidAssignment(node.name, initializer, _resolver.checkForAssignableExpressionAtType(
whyNotPromoted: whyNotPromoted); initializer,
initializer.typeOrThrow,
element.type,
CompileTimeErrorCode.INVALID_ASSIGNMENT,
whyNotPromoted: whyNotPromoted,
);
} }
void _setInferredType(VariableElement element, DartType initializerType) { void _setInferredType(VariableElement element, DartType initializerType) {

View file

@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file. // BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/syntactic_entity.dart';
import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/diagnostic/diagnostic.dart';
@ -74,7 +75,7 @@ class DiagnosticFactory {
AnalysisError invalidOverride( AnalysisError invalidOverride(
Source source, Source source,
ErrorCode? errorCode, ErrorCode? errorCode,
AstNode errorNode, SyntacticEntity errorNode,
ExecutableElement member, ExecutableElement member,
ExecutableElement superMember) { ExecutableElement superMember) {
errorCode ??= CompileTimeErrorCode.INVALID_OVERRIDE; errorCode ??= CompileTimeErrorCode.INVALID_OVERRIDE;

View file

@ -301,9 +301,9 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
if (undefinedParam != null) { if (undefinedParam != null) {
String? name; String? name;
if (parent is FunctionDeclaration) { if (parent is FunctionDeclaration) {
name = parent.name.name; name = parent.name2.lexeme;
} else if (parent is MethodDeclaration) { } else if (parent is MethodDeclaration) {
name = parent.name.name; name = parent.name2.lexeme;
} }
if (name != null) { if (name != null) {
var paramName = undefinedParam is SimpleStringLiteral var paramName = undefinedParam is SimpleStringLiteral
@ -494,9 +494,9 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
// Overridden members are always inside classes or mixins, which are // Overridden members are always inside classes or mixins, which are
// always named, so we can safely assume // always named, so we can safely assume
// `overriddenElement.enclosingElement2.name` is non-`null`. // `overriddenElement.enclosingElement2.name` is non-`null`.
_errorReporter.reportErrorForNode( _errorReporter.reportErrorForToken(
HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, field.name, [ HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, field.name2, [
field.name.name, field.name2.lexeme,
overriddenElement.enclosingElement2.displayName overriddenElement.enclosingElement2.displayName
]); ]);
} }
@ -534,7 +534,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
// Return types are inferred only on non-recursive local functions. // Return types are inferred only on non-recursive local functions.
if (node.parent is CompilationUnit && !node.isSetter) { if (node.parent is CompilationUnit && !node.isSetter) {
_checkStrictInferenceReturnType(node.returnType, node, node.name.name); _checkStrictInferenceReturnType(
node.returnType, node, node.name2.lexeme);
} }
_checkStrictInferenceInParameters(node.functionExpression.parameters, _checkStrictInferenceInParameters(node.functionExpression.parameters,
body: node.functionExpression.body); body: node.functionExpression.body);
@ -571,15 +572,14 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
@override @override
void visitFunctionTypeAlias(FunctionTypeAlias node) { void visitFunctionTypeAlias(FunctionTypeAlias node) {
_checkStrictInferenceReturnType(node.returnType, node, node.name.name); _checkStrictInferenceReturnType(node.returnType, node, node.name2.lexeme);
_checkStrictInferenceInParameters(node.parameters); _checkStrictInferenceInParameters(node.parameters);
super.visitFunctionTypeAlias(node); super.visitFunctionTypeAlias(node);
} }
@override @override
void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) { void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
_checkStrictInferenceReturnType( _checkStrictInferenceReturnType(node.returnType, node, node.name.lexeme);
node.returnType, node, node.identifier.name);
_checkStrictInferenceInParameters(node.parameters); _checkStrictInferenceInParameters(node.parameters);
super.visitFunctionTypedFormalParameter(node); super.visitFunctionTypedFormalParameter(node);
} }
@ -598,7 +598,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
void visitGenericTypeAlias(GenericTypeAlias node) { void visitGenericTypeAlias(GenericTypeAlias node) {
if (node.functionType != null) { if (node.functionType != null) {
_checkStrictInferenceReturnType( _checkStrictInferenceReturnType(
node.functionType!.returnType, node, node.name.name); node.functionType!.returnType, node, node.name2.lexeme);
} }
super.visitGenericTypeAlias(node); super.visitGenericTypeAlias(node);
} }
@ -672,7 +672,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
: false; : false;
if (!node.isSetter && !elementIsOverride) { if (!node.isSetter && !elementIsOverride) {
_checkStrictInferenceReturnType(node.returnType, node, node.name.name); _checkStrictInferenceReturnType(
node.returnType, node, node.name2.lexeme);
} }
if (!elementIsOverride) { if (!elementIsOverride) {
_checkStrictInferenceInParameters(node.parameters, body: node.body); _checkStrictInferenceInParameters(node.parameters, body: node.body);
@ -688,10 +689,11 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
// Overridden members are always inside classes or mixins, which are // Overridden members are always inside classes or mixins, which are
// always named, so we can safely assume // always named, so we can safely assume
// `overriddenElement.enclosingElement2.name` is non-`null`. // `overriddenElement.enclosingElement2.name` is non-`null`.
_errorReporter.reportErrorForNode( _errorReporter.reportErrorForToken(
HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, node.name2, [
node.name, node.name2.lexeme,
[node.name.name, overriddenElement.enclosingElement2.displayName]); overriddenElement.enclosingElement2.displayName
]);
} }
super.visitMethodDeclaration(node); super.visitMethodDeclaration(node);
@ -1051,8 +1053,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
definedOrInheritedNonFinalInstanceFields( definedOrInheritedNonFinalInstanceFields(
element, HashSet<ClassElement>()); element, HashSet<ClassElement>());
if (nonFinalFields.isNotEmpty) { if (nonFinalFields.isNotEmpty) {
_errorReporter.reportErrorForNode( _errorReporter.reportErrorForToken(HintCode.MUST_BE_IMMUTABLE,
HintCode.MUST_BE_IMMUTABLE, node.name, [nonFinalFields.join(', ')]); node.name2, [nonFinalFields.join(', ')]);
} }
} }
} }
@ -1124,8 +1126,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
// Note that null return types are expected to be flagged by other analyses. // Note that null return types are expected to be flagged by other analyses.
var returnType = decl.returnType?.type; var returnType = decl.returnType?.type;
if (returnType is VoidType) { if (returnType is VoidType) {
_errorReporter.reportErrorForNode(HintCode.INVALID_FACTORY_METHOD_DECL, _errorReporter.reportErrorForToken(HintCode.INVALID_FACTORY_METHOD_DECL,
decl.name, [decl.name.toString()]); decl.name2, [decl.name2.lexeme]);
return; return;
} }
@ -1153,8 +1155,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
} }
} }
_errorReporter.reportErrorForNode(HintCode.INVALID_FACTORY_METHOD_IMPL, _errorReporter.reportErrorForToken(
decl.name, [decl.name.toString()]); HintCode.INVALID_FACTORY_METHOD_IMPL, decl.name2, [decl.name2.lexeme]);
} }
void _checkForInvalidSealedSuperclass(NamedCompilationUnitMember node) { void _checkForInvalidSealedSuperclass(NamedCompilationUnitMember node) {
@ -1314,18 +1316,25 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
return; return;
} }
var errorNode = functionNode;
if (functionNode is FunctionDeclaration) { if (functionNode is FunctionDeclaration) {
errorNode = functionNode.name; _errorReporter.reportErrorForToken(
HintCode.MISSING_RETURN,
functionNode.name2,
[returnType],
);
} else if (functionNode is MethodDeclaration) { } else if (functionNode is MethodDeclaration) {
errorNode = functionNode.name; _errorReporter.reportErrorForToken(
HintCode.MISSING_RETURN,
functionNode.name2,
[returnType],
);
} else {
_errorReporter.reportErrorForNode(
HintCode.MISSING_RETURN,
functionNode,
[returnType],
);
} }
_errorReporter.reportErrorForNode(
HintCode.MISSING_RETURN,
errorNode,
[returnType],
);
} }
void _checkForNullableTypeInCatchClause(CatchClause node) { void _checkForNullableTypeInCatchClause(CatchClause node) {
@ -1451,7 +1460,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
/// ///
/// Return `true` if and only if a hint code is generated on the passed node. /// Return `true` if and only if a hint code is generated on the passed node.
bool _checkForUnnecessaryNoSuchMethod(MethodDeclaration node) { bool _checkForUnnecessaryNoSuchMethod(MethodDeclaration node) {
if (node.name.name != FunctionElement.NO_SUCH_METHOD_METHOD_NAME) { if (node.name2.lexeme != FunctionElement.NO_SUCH_METHOD_METHOD_NAME) {
return false; return false;
} }
bool isNonObjectNoSuchMethodInvocation(Expression? invocation) { bool isNonObjectNoSuchMethodInvocation(Expression? invocation) {
@ -1473,8 +1482,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
FunctionBody body = node.body; FunctionBody body = node.body;
if (body is ExpressionFunctionBody) { if (body is ExpressionFunctionBody) {
if (isNonObjectNoSuchMethodInvocation(body.expression)) { if (isNonObjectNoSuchMethodInvocation(body.expression)) {
_errorReporter.reportErrorForNode( _errorReporter.reportErrorForToken(
HintCode.UNNECESSARY_NO_SUCH_METHOD, node.name); HintCode.UNNECESSARY_NO_SUCH_METHOD, node.name2);
return true; return true;
} }
} else if (body is BlockFunctionBody) { } else if (body is BlockFunctionBody) {
@ -1483,8 +1492,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
Statement returnStatement = statements.first; Statement returnStatement = statements.first;
if (returnStatement is ReturnStatement && if (returnStatement is ReturnStatement &&
isNonObjectNoSuchMethodInvocation(returnStatement.expression)) { isNonObjectNoSuchMethodInvocation(returnStatement.expression)) {
_errorReporter.reportErrorForNode( _errorReporter.reportErrorForToken(
HintCode.UNNECESSARY_NO_SUCH_METHOD, node.name); HintCode.UNNECESSARY_NO_SUCH_METHOD, node.name2);
return true; return true;
} }
} }
@ -1611,7 +1620,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
for (var param in parameterList.parameters) { for (var param in parameterList.parameters) {
// Param is defined. // Param is defined.
if (param.identifier?.name == unlessParam) { if (param.name?.lexeme == unlessParam) {
return null; return null;
} }
} }
@ -1804,8 +1813,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
} }
static String _formalParameterNameOrEmpty(FormalParameter node) { static String _formalParameterNameOrEmpty(FormalParameter node) {
var identifier = node.identifier; return node.name?.lexeme ?? '';
return identifier?.name ?? '';
} }
static bool _hasNonVirtualAnnotation(ExecutableElement element) { static bool _hasNonVirtualAnnotation(ExecutableElement element) {
@ -1901,7 +1909,7 @@ class _InvalidAccessVerifier {
if (node.leftOperand is SuperExpression) { if (node.leftOperand is SuperExpression) {
var methodDeclaration = node.thisOrAncestorOfType<MethodDeclaration>(); var methodDeclaration = node.thisOrAncestorOfType<MethodDeclaration>();
if (methodDeclaration?.name.name == operator.lexeme) { if (methodDeclaration?.name2.lexeme == operator.lexeme) {
return; return;
} }
} }
@ -2032,7 +2040,7 @@ class _InvalidAccessVerifier {
parent is PropertyAccess && parent.target is SuperExpression) { parent is PropertyAccess && parent.target is SuperExpression) {
var methodDeclaration = var methodDeclaration =
grandparent?.thisOrAncestorOfType<MethodDeclaration>(); grandparent?.thisOrAncestorOfType<MethodDeclaration>();
if (methodDeclaration?.name.name == identifier.name) { if (methodDeclaration?.name2.lexeme == identifier.name) {
validOverride = true; validOverride = true;
} }
} }

View file

@ -234,10 +234,10 @@ class ConstructorFieldsVerifier {
_fieldMap[fieldElement] = _InitState.initInFieldFormal; _fieldMap[fieldElement] = _InitState.initInFieldFormal;
} else if (state == _InitState.initInDeclaration) { } else if (state == _InitState.initInDeclaration) {
if (fieldElement.isFinal || fieldElement.isConst) { if (fieldElement.isFinal || fieldElement.isConst) {
_errorReporter.reportErrorForNode( _errorReporter.reportErrorForToken(
CompileTimeErrorCode CompileTimeErrorCode
.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, .FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
parameter.identifier, parameter.name,
[fieldElement.displayName], [fieldElement.displayName],
); );
} }

Some files were not shown because too many files have changed in this diff Show more