Version 2.19.0-58.0.dev
Merge commit '7bfc64861756630a573d72107ed693b1c4943dca' into 'dev'
diff --git a/DEPS b/DEPS
index 5c90859..ff0a30e 100644
--- a/DEPS
+++ b/DEPS
@@ -108,7 +108,7 @@
# For more details, see https://github.com/dart-lang/sdk/issues/30164.
"dart_style_rev": "d7b73536a8079331c888b7da539b80e6825270ea", # manually rev'd
- "dartdoc_rev": "d7513b2ee0a9bad6c9526f6b0ba970b4fcca17d0",
+ "dartdoc_rev": "7edeeeb20a506cadec3788c273fdee6cad91e07c",
"devtools_rev": "d131d19091f6b89ac89486bd92440a25a523e8b0",
"ffi_rev": "18b2b549d55009ff594600b04705ff6161681e07",
"file_rev": "0132eeedea2933513bf230513a766a8baeab0c4f",
@@ -116,10 +116,10 @@
"glob_rev": "1d51fcc172e5adfbae6e82c3f8f119774cb2fca2",
"html_rev": "8243e967caad9932c13971af3b2a7c8f028383d5",
"http_multi_server_rev": "20bf079c8955d1250a45afb9cb096472a724a551",
- "http_parser_rev": "d25b3c9e7f23e31ac388a03361737110768597f6",
+ "http_parser_rev": "b968f7ddde0588273a6cbd1d2eb6569f418606ac",
"http_rev": "5055b684ae45fb141a106ef6ced988aa37ed0ea6",
"icu_rev": "81d656878ec611cb0b42d52c82e9dae93920d9ba",
- "intl_rev": "64dccc499162bebecb1ee29dc994f3e0c1416e96",
+ "intl_rev": "7e3a1bbdeff241323f56295d8991c004bef815e6",
"jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1",
"json_rpc_2_rev": "805e6536dd961d66f6b8cd46d8f3e61774f957c9",
"linter_rev": "b4afc10055f3009478da1eac1827f9fef42c3759", # 1.26.0
@@ -129,15 +129,15 @@
"markupsafe_rev": "8f45f5cfa0009d2a70589bcda0349b8cb2b72783",
"matcher_rev": "cba63ebf8ed1daeffd5f3c55fd30085152c4512d",
"mime_rev": "0a75a41445eb642674a0a271eecde78cb025ee60",
- "mockito_rev": "d8a2ddd2054390bd03d34bf64c940884e6f7a596",
+ "mockito_rev": "2acf22f4d400c6e1eee0f6ca595092220fba8b34",
"oauth2_rev": "199ebf15cbd5b07958438184f32e41c4447a57bf",
"package_config_rev": "cff98c90acc457a3b0750f0a7da0e351a35e5d0c",
"path_rev": "9955b27b9bb98d87591208e19eb01c51d29fd467",
"ply_rev": "604b32590ffad5cbb82e4afef1d305512d06ae93",
"pool_rev": "fa84ddd0e39f45bf3f09dcc5d6b9fbdda7820fef",
- "protobuf_rev": "9aad6aadcc0fc616051c7e0eaef78c26b3dd7b60",
+ "protobuf_rev": "504eefeae9892602ea50c20159db1db3768012a9",
"pub_rev": "9bf4289d6fd5d6872a8929d6312bbd7098f3ea9c", # manually rev'd
- "pub_semver_rev": "5c0b4bfd5ca57fe16f1319c581dc8c882e9b8cb2",
+ "pub_semver_rev": "9fd28757ba45961ac5449e0f2b0020670e921475",
"root_certificates_rev": "692f6d6488af68e0121317a9c2c9eb393eb0ee50",
"shelf_rev": "0371a64bd3b99044ee3158bacf8813bba735a9c7",
"source_map_stack_trace_rev": "72dbf21a33293b2b8434d0a9751e36f9463981ac",
@@ -149,10 +149,10 @@
"string_scanner_rev": "2d84b16d8ae03c3a8c2417b71abe0fe6de7d8bf6",
"sync_http_rev": "39509d69fd5a9c3da46eab48fcafdf62e6ad4580",
"term_glyph_rev": "ec7cf7bb51ebb7d55760a1359f6697690dbc06ba",
- "test_descriptor_rev": "c21e15daa3a22a7066f081d4d30aa5cae8b5de36",
+ "test_descriptor_rev": "f392f85a9804349976be041616ef66925cee8a91",
"test_process_rev": "3e695bcfeab551473ddc288970f345f30e5e1375",
"test_reflective_loader_rev": "8d0de01bbe852fea1f8e33aba907abcba50a8a1e",
- "test_rev": "b144a336776eaa1f9420f3ab38214d8c061c663e",
+ "test_rev": "aba7de5851ace64f1f887369ae9424582d9d4d7f",
"typed_data_rev": "bb10b64f9a56b8fb49307d4465474bf1c1309f6d",
"usage_rev": "e287a72228974886d8a3b40ddcdf12f69d7c6a22",
"vector_math_rev": "09ba4fa74e668177211f917a1c14789cd05d3cab",
@@ -160,7 +160,7 @@
"web_components_rev": "8f57dac273412a7172c8ade6f361b407e2e4ed02",
"web_socket_channel_rev": "99dbdc5769e19b9eeaf69449a59079153c6a8b1f",
"WebCore_rev": "bcb10901266c884e7b3740abc597ab95373ab55c",
- "webdev_rev": "27cc5c9228ca59e721bc41fe7028e0fd6b995748",
+ "webdev_rev": "37bf4af1b0961f053e7cf4990a34ca5fd0ad0fd4",
"webdriver_rev": "e1a9ad671ee82e05eee463f922a34585ed2d2f15",
"webkit_inspection_protocol_rev": "57522d6b29d94903b765c757079d906555d5a171",
"yaml_edit_rev": "01589b3ce447b03aed991db49f1ec6445ad5476d",
diff --git a/pkg/analysis_server/lib/src/cider/rename.dart b/pkg/analysis_server/lib/src/cider/rename.dart
index 73f1716..3ff2d18 100644
--- a/pkg/analysis_server/lib/src/cider/rename.dart
+++ b/pkg/analysis_server/lib/src/cider/rename.dart
@@ -65,7 +65,7 @@
void _analyzePossibleConflicts(
ConstructorElement element, RefactoringStatus result, String newName) {
- var parentClass = element.enclosingElement2;
+ var parentClass = element.enclosingElement3;
// Check if the "newName" is the name of the enclosing class.
if (parentClass.name == newName) {
result.addError('The constructor should not have the same name '
@@ -254,7 +254,7 @@
var stateName = flutterState.newName;
var match = await canRename._fileResolver.findReferences2(stateClass);
var sourcePath = stateClass.source.fullName;
- var location = stateClass.enclosingElement2.lineInfo
+ var location = stateClass.enclosingElement3.lineInfo
.getLocation(stateClass.nameOffset);
CiderSearchMatch ciderMatch;
var searchInfo =
@@ -297,7 +297,7 @@
Future<CiderReplaceMatch?> _replaceSyntheticConstructor() async {
var element = canRename.refactoringElement.element;
- var classElement = element.enclosingElement2;
+ var classElement = element.enclosingElement3;
var fileResolver = canRename._fileResolver;
var libraryPath = classElement!.library!.source.fullName;
@@ -382,7 +382,7 @@
}
bool _canRenameElement(Element element) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (element is ConstructorElement) {
return true;
}
diff --git a/pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart b/pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart
index ca17b51..577c75d4 100644
--- a/pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart
@@ -104,7 +104,7 @@
codeRange = _codeRangeForElement(element),
file = element.source!.fullName,
kind = CallHierarchyKind.forElement(element) {
- final enclosingElement = element.enclosingElement2;
+ final enclosingElement = element.enclosingElement3;
final container =
enclosingElement != null ? _getContainer(enclosingElement) : null;
containerName = container != null ? _getDisplayName(container) : null;
@@ -330,7 +330,7 @@
}
}
} else if (node is ConstructorDeclaration) {
- final name = node.name;
+ final name = node.name2;
if (name != null && offset < name.offset) {
return null;
}
diff --git a/pkg/analysis_server/lib/src/computer/computer_color.dart b/pkg/analysis_server/lib/src/computer/computer_color.dart
index 21db001..6649356 100644
--- a/pkg/analysis_server/lib/src/computer/computer_color.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_color.dart
@@ -83,7 +83,7 @@
final constructor = expression.constructorName;
final staticElement = constructor.staticElement;
- final classElement = staticElement?.enclosingElement2;
+ final classElement = staticElement?.enclosingElement3;
final className = classElement?.name;
final constructorName = constructor.name?.name;
final constructorArgs = expression.argumentList.arguments
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
index b74240d..36715bb 100644
--- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
@@ -305,7 +305,7 @@
var parent = node.parent;
var isInvocation = parent is MethodInvocation && parent.methodName == node;
HighlightRegionType type;
- var isTopLevel = element.enclosingElement2 is CompilationUnitElement;
+ var isTopLevel = element.enclosingElement3 is CompilationUnitElement;
if (node.inDeclarationContext()) {
type = isTopLevel
? HighlightRegionType.TOP_LEVEL_FUNCTION_DECLARATION
@@ -334,7 +334,7 @@
return false;
}
// getter or setter
- var isTopLevel = element.enclosingElement2 is CompilationUnitElement;
+ var isTopLevel = element.enclosingElement3 is CompilationUnitElement;
HighlightRegionType type;
if (element.isGetter) {
if (isTopLevel) {
@@ -682,6 +682,14 @@
computer._addRegion_token(
node.factoryKeyword, HighlightRegionType.BUILT_IN);
computer._addRegion_token(node.constKeyword, HighlightRegionType.KEYWORD);
+ computer._addRegion_token(
+ node.name2,
+ HighlightRegionType.CONSTRUCTOR,
+ semanticTokenType: SemanticTokenTypes.method,
+ semanticTokenModifiers: {
+ CustomSemanticTokenModifiers.constructor,
+ },
+ );
super.visitConstructorDeclaration(node);
}
@@ -743,8 +751,8 @@
@override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
- computer._addRegion_node(
- node.name,
+ computer._addRegion_token(
+ node.name2,
HighlightRegionType.ENUM_CONSTANT,
);
node.visitChildren(this);
@@ -803,8 +811,8 @@
if (element is FieldFormalParameterElement) {
var field = element.field;
if (field != null) {
- computer._addRegion_node(
- node.identifier,
+ computer._addRegion_token(
+ node.name,
HighlightRegionType.INSTANCE_FIELD_REFERENCE,
);
}
@@ -1109,6 +1117,12 @@
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
+ final parent = node.parent;
+ // ignore: deprecated_member_use
+ if (parent is ConstructorDeclaration && parent.name == node) {
+ return;
+ }
+
computer._addIdentifierRegion(node);
super.visitSimpleIdentifier(node);
}
@@ -1135,8 +1149,8 @@
HighlightRegionType.KEYWORD,
);
- computer._addRegion_node(
- node.identifier,
+ computer._addRegion_token(
+ node.name,
HighlightRegionType.PARAMETER_DECLARATION,
);
diff --git a/pkg/analysis_server/lib/src/computer/computer_hover.dart b/pkg/analysis_server/lib/src/computer/computer_hover.dart
index 3ca0f28..bba7cc4 100644
--- a/pkg/analysis_server/lib/src/computer/computer_hover.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_hover.dart
@@ -71,7 +71,7 @@
hover.elementKind = element.kind.displayName;
hover.isDeprecated = element.hasDeprecated;
// not local element
- if (element.enclosingElement2 is! ExecutableElement) {
+ if (element.enclosingElement3 is! ExecutableElement) {
// containing class
var containingClass = element.thisOrAncestorOfType<ClassElement>();
if (containingClass != null && containingClass != element) {
@@ -152,7 +152,7 @@
element = element.field;
}
if (element is ParameterElement) {
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
if (element == null) {
// This can happen when the code is invalid, such as having a field formal
@@ -197,9 +197,9 @@
var result =
dartdocInfo.processDartdoc(rawDoc, includeSummary: includeSummary);
- var documentedElementClass = documentedElement.enclosingElement2;
+ var documentedElementClass = documentedElement.enclosingElement3;
if (documentedElementClass != null &&
- documentedElementClass != element.enclosingElement2) {
+ documentedElementClass != element.enclosingElement3) {
var documentedClass = documentedElementClass.displayName;
result.full = '${result.full}\n\nCopied from `$documentedClass`.';
}
diff --git a/pkg/analysis_server/lib/src/computer/computer_outline.dart b/pkg/analysis_server/lib/src/computer/computer_outline.dart
index b0140fd..237e310 100644
--- a/pkg/analysis_server/lib/src/computer/computer_outline.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_outline.dart
@@ -6,6 +6,7 @@
import 'package:analysis_server/src/utilities/flutter.dart';
import 'package:analyzer/dart/analysis/results.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/element/element.dart' as engine;
import 'package:analyzer_plugin/protocol/protocol_common.dart';
@@ -90,9 +91,13 @@
endLine: endLine, endColumn: endColumn);
}
+ Location _getLocationToken(Token token) {
+ return _getLocationOffsetLength(token.offset, token.length);
+ }
+
Outline _newClassOutline(ClassDeclaration node, List<Outline> classContents) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
var element = Element(
ElementKind.CLASS,
name,
@@ -100,14 +105,14 @@
isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node),
isAbstract: node.abstractKeyword != null),
- location: _getLocationNode(nameNode),
+ location: _getLocationToken(nameToken),
typeParameters: _getTypeParametersStr(node.typeParameters));
return _nodeOutline(node, element, classContents);
}
Outline _newClassTypeAlias(ClassTypeAlias node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
var element = Element(
ElementKind.CLASS_TYPE_ALIAS,
name,
@@ -115,7 +120,7 @@
isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node),
isAbstract: node.abstractKeyword != null),
- location: _getLocationNode(nameNode),
+ location: _getLocationToken(nameToken),
typeParameters: _getTypeParametersStr(node.typeParameters));
return _nodeOutline(node, element);
}
@@ -125,14 +130,14 @@
var name = returnType.name;
var offset = returnType.offset;
var length = returnType.length;
- var constructorNameNode = constructor.name;
+ var constructorNameToken = constructor.name2;
var isPrivate = false;
- if (constructorNameNode != null) {
- var constructorName = constructorNameNode.name;
+ if (constructorNameToken != null) {
+ var constructorName = constructorNameToken.lexeme;
isPrivate = Identifier.isPrivateName(constructorName);
name += '.$constructorName';
- offset = constructorNameNode.offset;
- length = constructorNameNode.length;
+ offset = constructorNameToken.offset;
+ length = constructorNameToken.length;
}
var parameters = constructor.parameters;
var parametersStr = _safeToSource(parameters);
@@ -148,50 +153,52 @@
}
Outline _newEnumConstant(EnumConstantDeclaration node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
var element = Element(
ElementKind.ENUM_CONSTANT,
name,
Element.makeFlags(
isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)),
- location: _getLocationNode(nameNode));
+ location: _getLocationToken(nameToken));
return _nodeOutline(node, element);
}
Outline _newEnumOutline(EnumDeclaration node, List<Outline> children) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
var element = Element(
ElementKind.ENUM,
name,
Element.makeFlags(
isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)),
- location: _getLocationNode(nameNode));
+ location: _getLocationToken(nameToken));
return _nodeOutline(node, element, children);
}
Outline _newExtensionOutline(
ExtensionDeclaration node, List<Outline> extensionContents) {
- var nameNode = node.name;
- var name = nameNode?.name ?? '';
+ var nameToken = node.name2;
+ var name = nameToken?.lexeme ?? '';
var element = Element(
ElementKind.EXTENSION,
name,
Element.makeFlags(
isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)),
- location: _getLocationNode(nameNode ?? node.extendedType),
+ location: nameToken != null
+ ? _getLocationToken(nameToken)
+ : _getLocationNode(node.extendedType),
typeParameters: _getTypeParametersStr(node.typeParameters));
return _nodeOutline(node, element, extensionContents);
}
Outline _newFunctionOutline(FunctionDeclaration function, bool isStatic) {
var returnType = function.returnType;
- var nameNode = function.name;
- var name = nameNode.name;
+ var nameToken = function.name2;
+ var name = nameToken.lexeme;
var functionExpression = function.functionExpression;
var parameters = functionExpression.parameters;
ElementKind kind;
@@ -211,7 +218,7 @@
isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(function),
isStatic: isStatic),
- location: _getLocationNode(nameNode),
+ location: _getLocationToken(nameToken),
parameters: parametersStr,
returnType: returnTypeStr,
typeParameters:
@@ -222,8 +229,8 @@
Outline _newFunctionTypeAliasOutline(FunctionTypeAlias node) {
var returnType = node.returnType;
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
var parameters = node.parameters;
var parametersStr = _safeToSource(parameters);
var returnTypeStr = _safeToSource(returnType);
@@ -233,7 +240,7 @@
Element.makeFlags(
isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)),
- location: _getLocationNode(nameNode),
+ location: _getLocationToken(nameToken),
parameters: parametersStr,
returnType: returnTypeStr,
typeParameters: _getTypeParametersStr(node.typeParameters));
@@ -241,8 +248,8 @@
}
Outline _newGenericTypeAliasOutline(GenericTypeAlias node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
var aliasedType = node.type;
var aliasedFunctionType =
@@ -258,7 +265,7 @@
isDeprecated: _isDeprecated(node),
),
aliasedType: _safeToSource(aliasedType),
- location: _getLocationNode(nameNode),
+ location: _getLocationToken(nameToken),
parameters: aliasedFunctionType != null
? _safeToSource(aliasedFunctionType.parameters)
: null,
@@ -273,8 +280,8 @@
Outline _newMethodOutline(MethodDeclaration method) {
var returnType = method.returnType;
- var nameNode = method.name;
- var name = nameNode.name;
+ var nameToken = method.name2;
+ var name = nameToken.lexeme;
var parameters = method.parameters;
ElementKind kind;
if (method.isGetter) {
@@ -294,7 +301,7 @@
isDeprecated: _isDeprecated(method),
isAbstract: method.isAbstract,
isStatic: method.isStatic),
- location: _getLocationNode(nameNode),
+ location: _getLocationToken(nameToken),
parameters: parametersStr,
returnType: returnTypeStr,
typeParameters: _getTypeParametersStr(method.typeParameters));
@@ -304,15 +311,15 @@
Outline _newMixinOutline(MixinDeclaration node, List<Outline> mixinContents) {
node.firstTokenAfterCommentAndMetadata;
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
var element = Element(
ElementKind.MIXIN,
name,
Element.makeFlags(
isPrivate: Identifier.isPrivateName(name),
isDeprecated: _isDeprecated(node)),
- location: _getLocationNode(nameNode),
+ location: _getLocationToken(nameToken),
typeParameters: _getTypeParametersStr(node.typeParameters));
return _nodeOutline(node, element, mixinContents);
}
@@ -327,8 +334,8 @@
Outline _newVariableOutline(String typeName, ElementKind kind,
VariableDeclaration variable, bool isStatic) {
- var nameNode = variable.name;
- var name = nameNode.name;
+ var nameToken = variable.name2;
+ var name = nameToken.lexeme;
var element = Element(
kind,
name,
@@ -338,7 +345,7 @@
isStatic: isStatic,
isConst: variable.isConst,
isFinal: variable.isFinal),
- location: _getLocationNode(nameNode),
+ location: _getLocationToken(nameToken),
returnType: typeName);
return _nodeOutline(variable, element);
}
@@ -521,7 +528,7 @@
/// Return `true` if the given [element] is a top-level member of the test
/// package.
bool _isInsideTestPackage(engine.FunctionElement element) {
- var parent = element.enclosingElement2;
+ var parent = element.enclosingElement3;
return parent is engine.CompilationUnitElement &&
parent.source.fullName.endsWith('test.dart');
}
diff --git a/pkg/analysis_server/lib/src/computer/computer_overrides.dart b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
index d55a4c6..9b7736e 100644
--- a/pkg/analysis_server/lib/src/computer/computer_overrides.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
@@ -6,11 +6,12 @@
import 'package:analysis_server/src/protocol_server.dart' as proto;
import 'package:analysis_server/src/utilities/extensions/ast.dart';
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart';
/// Return the elements that the given [element] overrides.
OverriddenElements findOverriddenElements(Element element) {
- if (element.enclosingElement2 is ClassElement) {
+ if (element.enclosingElement3 is ClassElement) {
return _OverriddenElementsFinder(element).find();
}
return OverriddenElements(element, <Element>[], <Element>[]);
@@ -35,9 +36,8 @@
return _overrides;
}
- /// Add a new [Override] for the declaration with the given name [node].
- void _addOverride(SimpleIdentifier node) {
- var element = node.staticElement;
+ /// Add a new [Override] for the declaration with the given name [token].
+ void _addOverride(Token token, Element? element) {
if (element != null) {
var overridesResult = _OverriddenElementsFinder(element).find();
var superElements = overridesResult.superElements;
@@ -53,7 +53,7 @@
member.nonSynthetic,
withNullability: _unit.isNonNullableByDefault))
.toList();
- _overrides.add(proto.Override(node.offset, node.length,
+ _overrides.add(proto.Override(token.offset, token.length,
superclassMember: superMember,
interfaceMembers: nullIfEmpty(interfaceMembers)));
}
@@ -66,7 +66,7 @@
if (classMember.isStatic) {
continue;
}
- _addOverride(classMember.name);
+ _addOverride(classMember.name2, classMember.declaredElement);
}
if (classMember is FieldDeclaration) {
if (classMember.isStatic) {
@@ -74,7 +74,7 @@
}
List<VariableDeclaration> fields = classMember.fields.variables;
for (var field in fields) {
- _addOverride(field.name);
+ _addOverride(field.name2, field.declaredElement);
}
}
}
@@ -109,7 +109,7 @@
final Set<ClassElement> _visited = <ClassElement>{};
factory _OverriddenElementsFinder(Element seed) {
- var class_ = seed.enclosingElement2 as ClassElement;
+ var class_ = seed.enclosingElement3 as ClassElement;
var library = class_.library;
var name = seed.displayName;
List<ElementKind> kinds;
diff --git a/pkg/analysis_server/lib/src/computer/imported_elements_computer.dart b/pkg/analysis_server/lib/src/computer/imported_elements_computer.dart
index bed6b92..e500165 100644
--- a/pkg/analysis_server/lib/src/computer/imported_elements_computer.dart
+++ b/pkg/analysis_server/lib/src/computer/imported_elements_computer.dart
@@ -82,7 +82,7 @@
!_isConstructorDeclarationReturnType(node)) {
var nodeElement = node.writeOrReadElement;
if (nodeElement != null &&
- nodeElement.enclosingElement2 is CompilationUnitElement) {
+ nodeElement.enclosingElement3 is CompilationUnitElement) {
var nodeLibrary = nodeElement.library;
var path = nodeLibrary?.definingCompilationUnit.source.fullName;
if (path == null) {
diff --git a/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart b/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart
index d11c738..47b7bbf 100644
--- a/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart
+++ b/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart
@@ -27,6 +27,13 @@
final Map<Element, List<int>> elementsOffsets = <Element, List<int>>{};
@override
+ void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+ _addOccurrence(node.declaredElement!, node.name2.offset);
+
+ super.visitEnumConstantDeclaration(node);
+ }
+
+ @override
void visitSimpleIdentifier(SimpleIdentifier node) {
var element = node.writeOrReadElement;
if (element != null) {
diff --git a/pkg/analysis_server/lib/src/protocol_server.dart b/pkg/analysis_server/lib/src/protocol_server.dart
index 1b25da7..b64b933 100644
--- a/pkg/analysis_server/lib/src/protocol_server.dart
+++ b/pkg/analysis_server/lib/src/protocol_server.dart
@@ -215,7 +215,7 @@
OverriddenMember newOverriddenMember_fromEngine(engine.Element member,
{required bool withNullability}) {
var element = convertElement(member, withNullability: withNullability);
- var className = member.enclosingElement2!.displayName;
+ var className = member.enclosingElement3!.displayName;
return OverriddenMember(element, className);
}
@@ -262,7 +262,7 @@
var path = <Element>[];
if (element is engine.PrefixElement) {
- element = element.enclosingElement2.definingCompilationUnit;
+ element = element.enclosingElement3.definingCompilationUnit;
}
var withNullability = element.library?.isNonNullableByDefault ?? false;
@@ -277,7 +277,7 @@
return element;
}
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is engine.LibraryElement) {
element = enclosingElement;
}
diff --git a/pkg/analysis_server/lib/src/search/element_references.dart b/pkg/analysis_server/lib/src/search/element_references.dart
index 57d16bf..cfa38cd 100644
--- a/pkg/analysis_server/lib/src/search/element_references.dart
+++ b/pkg/analysis_server/lib/src/search/element_references.dart
@@ -73,6 +73,6 @@
if (element is ConstructorElement) {
return false;
}
- return element.enclosingElement2 is ClassElement;
+ return element.enclosingElement3 is ClassElement;
}
}
diff --git a/pkg/analysis_server/lib/src/search/type_hierarchy.dart b/pkg/analysis_server/lib/src/search/type_hierarchy.dart
index 7064baa..f532954 100644
--- a/pkg/analysis_server/lib/src/search/type_hierarchy.dart
+++ b/pkg/analysis_server/lib/src/search/type_hierarchy.dart
@@ -35,10 +35,10 @@
Element? element = _pivotElement;
if (_pivotElement is FieldElement) {
_pivotFieldFinal = (_pivotElement as FieldElement).isFinal;
- element = _pivotElement.enclosingElement2;
+ element = _pivotElement.enclosingElement3;
}
if (_pivotElement is ExecutableElement) {
- element = _pivotElement.enclosingElement2;
+ element = _pivotElement.enclosingElement3;
}
if (element is ClassElement) {
_pivotClass = element;
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
index e8241d4..363121d 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
@@ -478,17 +478,26 @@
}
}
+ /// 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) {
if (entity is SimpleIdentifier) {
- var identifier = entity.name;
- if (offset >= entity.offset && offset < entity.end) {
- return identifier.substring(0, offset - entity.offset);
- } else if (offset == entity.end) {
- return identifier;
- }
+ return fromToken(entity.token);
}
var children = entity.childEntities;
entity = children.isEmpty ? null : children.first;
+ if (entity is Token) {
+ return fromToken(entity);
+ }
}
return '';
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
index 70ccf2f..df5b7456 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
@@ -979,7 +979,7 @@
var parent = node.parent;
if (parent is VariableDeclarationList) {
return parent.type?.type ??
- _impliedDartTypeWithName(typeProvider, node.name.name);
+ _impliedDartTypeWithName(typeProvider, node.name2.lexeme);
}
}
return null;
@@ -992,7 +992,7 @@
var equals = varDecl.equals;
if (equals != null && equals.end <= offset) {
return node.type?.type ??
- _impliedDartTypeWithName(typeProvider, varDecl.name.name);
+ _impliedDartTypeWithName(typeProvider, varDecl.name2.lexeme);
}
}
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart
index d732186..2157dcc 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart
@@ -37,9 +37,9 @@
param = param.parameter;
}
if (param is FieldFormalParameter) {
- var fieldId = param.identifier;
+ var fieldId = param.name;
if (fieldId != request.target.entity) {
- var fieldName = fieldId.name;
+ var fieldName = fieldId.lexeme;
if (fieldName.isNotEmpty) {
referencedFields.add(fieldName);
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
index 8e5c326..060361b 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
@@ -146,7 +146,7 @@
void visitClassDeclaration(ClassDeclaration node) {
final entity = this.entity;
// Don't suggest class name
- if (entity == node.name) {
+ if (entity == node.name2) {
return;
}
if (entity == node.rightBracket) {
@@ -266,7 +266,7 @@
return;
}
- if (entity == node.name) {
+ if (entity == node.name2) {
return;
}
@@ -298,7 +298,7 @@
@override
void visitExtensionDeclaration(ExtensionDeclaration node) {
// Don't suggest extension name
- if (entity == node.name) {
+ if (entity == node.name2) {
return;
}
if (entity == node.rightBracket) {
@@ -407,15 +407,13 @@
bool hasCovariant() {
var last = lastParameter();
return last != null &&
- (last.covariantKeyword != null ||
- last.identifier?.name == 'covariant');
+ (last.covariantKeyword != null || last.name?.lexeme == 'covariant');
}
bool hasRequired() {
var last = lastParameter();
return last != null &&
- (last.requiredKeyword != null ||
- last.identifier?.name == 'required');
+ (last.requiredKeyword != null || last.name?.lexeme == 'required');
}
var tokenType = entity.type;
@@ -494,7 +492,7 @@
void visitFunctionDeclaration(FunctionDeclaration node) {
// If the cursor is at the beginning of the declaration, include the
// 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.VOID);
}
@@ -617,7 +615,7 @@
_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
// body keywords. See dartbug.com/41039.
_addClassBodyKeywords();
@@ -645,7 +643,7 @@
void visitMixinDeclaration(MixinDeclaration node) {
final entity = this.entity;
// Don't suggest mixin name
- if (entity == node.name) {
+ if (entity == node.name2) {
return;
}
if (entity == node.rightBracket) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
index 536ba29..b8a7122 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
@@ -90,7 +90,7 @@
if (element.isOperator) {
return;
}
- if (element.enclosingElement2 is! CompilationUnitElement) {
+ if (element.enclosingElement3 is! CompilationUnitElement) {
return;
}
var returnType = element.returnType;
@@ -115,7 +115,7 @@
@override
void visitPropertyAccessorElement(PropertyAccessorElement element) {
if (opType.includeReturnValueSuggestions) {
- var parent = element.enclosingElement2;
+ var parent = element.enclosingElement3;
if (parent is ClassElement || parent is ExtensionElement) {
builder.suggestAccessor(element, inheritanceDistance: 0.0);
} else {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
index 4d000d9..5389353 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
@@ -241,7 +241,7 @@
if (declaredElement != null &&
visibilityTracker._isVisible(declaredElement) &&
opType.includeReturnValueSuggestions &&
- declaration.name != null) {
+ declaration.name2 != null) {
builder.suggestExtension(declaredElement, kind: _defaultKind);
}
}
@@ -259,7 +259,7 @@
.thisOrAncestorOfType<ClassDeclaration>();
var enclosingElement = enclosingClass?.declaredElement;
if (enclosingElement != null) {
- var enclosingElement = field.enclosingElement2;
+ var enclosingElement = field.enclosingElement3;
if (enclosingElement is ClassElement) {
inheritanceDistance = request.featureComputer
.inheritanceDistanceFeature(enclosingElement, enclosingElement);
@@ -316,10 +316,14 @@
}
@override
- void declaredLocalVar(SimpleIdentifier name, TypeAnnotation? type) {
- if (visibilityTracker._isVisible(name.staticElement) &&
+ void declaredLocalVar(
+ Token name,
+ TypeAnnotation? type,
+ LocalVariableElement declaredElement,
+ ) {
+ if (visibilityTracker._isVisible(declaredElement) &&
opType.includeReturnValueSuggestions) {
- builder.suggestLocalVariable(name.staticElement as LocalVariableElement);
+ builder.suggestLocalVariable(declaredElement);
}
}
@@ -334,7 +338,7 @@
var enclosingClass = request.target.containingNode
.thisOrAncestorOfType<ClassDeclaration>();
if (enclosingClass != null) {
- var enclosingElement = element?.enclosingElement2;
+ var enclosingElement = element?.enclosingElement3;
if (enclosingElement is ClassElement) {
inheritanceDistance = request.featureComputer
.inheritanceDistanceFeature(
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
index 6d70d17..ce0c5bf 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.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_plugin/src/utilities/completion/completion_target.dart';
@@ -14,11 +15,12 @@
@override
Future<void> computeSuggestions() async {
- var targetId = _getTargetId(request.target);
- if (targetId == null) {
+ final target = _getTargetId(request.target);
+ if (target == null) {
return;
}
- var classDecl = targetId.thisOrAncestorOfType<ClassOrMixinDeclaration>();
+ var classDecl =
+ target.enclosingNode.thisOrAncestorOfType<ClassOrMixinDeclaration>();
if (classDecl == null) {
return;
}
@@ -41,14 +43,14 @@
// Gracefully degrade if the overridden element has not been resolved.
if (element != null) {
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
/// then return that identifier, otherwise return `null`.
- SimpleIdentifier? _getTargetId(CompletionTarget target) {
+ _Target? _getTargetId(CompletionTarget target) {
var node = target.containingNode;
if (node is ClassOrMixinDeclaration) {
var entity = target.entity;
@@ -64,23 +66,23 @@
return null;
}
- SimpleIdentifier? _getTargetIdFromVarList(VariableDeclarationList fields) {
+ _Target? _getTargetIdFromVarList(VariableDeclarationList fields) {
var variables = fields.variables;
var type = fields.type;
if (variables.length == 1) {
var variable = variables[0];
- var targetId = variable.name;
- if (targetId.name.isEmpty) {
+ var targetId = variable.name2;
+ if (targetId.lexeme.isEmpty) {
// analyzer parser
// Actual: class C { foo^ }
// Parsed: class C { foo^ _s_ }
// where _s_ is a synthetic id inserted by the analyzer parser
- return targetId;
+ return _Target(fields, targetId);
} else if (fields.keyword == null &&
type == null &&
variable.initializer == null) {
// fasta parser does not insert a synthetic identifier
- return targetId;
+ return _Target(fields, targetId);
} else if (fields.keyword == null &&
type is NamedType &&
type.typeArguments == null &&
@@ -93,7 +95,7 @@
// Parses as a variable list where `m` is the type and `String` is a
// variable.
var name = type.name;
- return name is SimpleIdentifier ? name : null;
+ return name is SimpleIdentifier ? _Target(fields, name.token) : null;
}
}
return null;
@@ -113,3 +115,10 @@
return namesToOverride;
}
}
+
+class _Target {
+ final AstNode enclosingNode;
+ final Token id;
+
+ _Target(this.enclosingNode, this.id);
+}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index e35e291..cbdc839 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -18,6 +18,7 @@
import 'package:analysis_server/src/utilities/flutter.dart';
import 'package:analyzer/dart/analysis/features.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/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -222,7 +223,7 @@
var containingMethod = request.target.containingNode
.thisOrAncestorOfType<MethodDeclaration>();
if (containingMethod != null) {
- _cachedContainingMemberName = containingMethod.name.name;
+ _cachedContainingMemberName = containingMethod.name2.lexeme;
}
}
}
@@ -325,7 +326,7 @@
/// referenced using a prefix, then the [prefix] should be provided.
void suggestClass(ClassElement classElement, {String? prefix}) {
var relevance = _computeTopLevelRelevance(classElement,
- elementType: _instantiateClassElement(classElement));
+ elementType: _instantiateInterfaceElement(classElement));
_addBuilder(
_createCompletionSuggestionBuilder(
classElement,
@@ -409,7 +410,7 @@
// If the class name is already in the text, then we don't support
// prepending a prefix.
assert(!hasClassName || prefix == null);
- var enclosingClass = constructor.enclosingElement2;
+ var enclosingClass = constructor.enclosingElement3;
var className = enclosingClass.name;
if (className.isEmpty) {
return;
@@ -431,7 +432,7 @@
return;
}
- var returnType = _instantiateClassElement(enclosingClass);
+ var returnType = _instantiateInterfaceElement(enclosingClass);
var relevance =
_computeTopLevelRelevance(constructor, elementType: returnType);
_addBuilder(
@@ -457,10 +458,10 @@
} else if (element is ExtensionElement) {
suggestExtension(element, kind: kind);
} else if (element is FunctionElement &&
- element.enclosingElement2 is CompilationUnitElement) {
+ element.enclosingElement3 is CompilationUnitElement) {
suggestTopLevelFunction(element, kind: kind);
} else if (element is PropertyAccessorElement &&
- element.enclosingElement2 is CompilationUnitElement) {
+ element.enclosingElement3 is CompilationUnitElement) {
suggestTopLevelPropertyAccessor(element);
} else if (element is TypeAliasElement) {
suggestTypeAlias(element);
@@ -473,7 +474,7 @@
/// referenced using a prefix, then the [prefix] should be provided.
void suggestEnumConstant(FieldElement constant, {String? prefix}) {
var constantName = constant.name;
- var enumElement = constant.enclosingElement2;
+ var enumElement = constant.enclosingElement3;
var enumName = enumElement.name;
var completion = '$enumName.$constantName';
var relevance =
@@ -705,7 +706,7 @@
inheritanceDistance: inheritanceDistance,
);
- var enclosingElement = method.enclosingElement2;
+ var enclosingElement = method.enclosingElement3;
if (method.name == 'setState' &&
enclosingElement is ClassElement &&
flutter.isExactState(enclosingElement)) {
@@ -777,10 +778,10 @@
// Optionally add Flutter child widget details.
// todo (pq): revisit this special casing; likely it can be generalized away
- var element = parameter.enclosingElement2;
+ var element = parameter.enclosingElement3;
// If appendColon is false, default values should never be appended.
if (element is ConstructorElement && appendColon) {
- if (Flutter.instance.isWidget(element.enclosingElement2)) {
+ if (Flutter.instance.isWidget(element.enclosingElement3)) {
// Don't bother with nullability. It won't affect default list values.
var defaultValue =
getDefaultStringParameterValue(parameter, withNullability: false);
@@ -831,12 +832,12 @@
/// Add a suggestion to replace the [targetId] with an override of the given
/// [element]. If [invokeSuper] is `true`, then the override will contain an
/// invocation of an overridden member.
- Future<void> suggestOverride(SimpleIdentifier targetId,
- ExecutableElement element, bool invokeSuper) async {
+ Future<void> suggestOverride(
+ Token targetId, ExecutableElement element, bool invokeSuper) async {
var displayTextBuffer = StringBuffer();
var builder = ChangeBuilder(session: request.analysisSession);
await builder.addDartFileEdit(request.path, (builder) {
- builder.addReplacement(range.node(targetId), (builder) {
+ builder.addReplacement(range.token(targetId), (builder) {
builder.writeOverride(
element,
displayTextBuffer: displayTextBuffer,
@@ -1009,9 +1010,9 @@
void suggestTopLevelPropertyAccessor(PropertyAccessorElement accessor,
{String? prefix}) {
assert(
- accessor.enclosingElement2 is CompilationUnitElement,
+ accessor.enclosingElement3 is CompilationUnitElement,
'Enclosing element of ${accessor.runtimeType} is '
- '${accessor.enclosingElement2.runtimeType}.');
+ '${accessor.enclosingElement3.runtimeType}.');
if (accessor.isSynthetic) {
// Avoid visiting a field twice. All fields induce a getter, but only
// non-final fields induce a setter, so we don't add a suggestion for a
@@ -1061,7 +1062,7 @@
/// referenced using a prefix, then the [prefix] should be provided.
void suggestTopLevelVariable(TopLevelVariableElement variable,
{String? prefix}) {
- assert(variable.enclosingElement2 is CompilationUnitElement);
+ assert(variable.enclosingElement3 is CompilationUnitElement);
var relevance =
_computeTopLevelRelevance(variable, elementType: variable.type);
_addBuilder(
@@ -1294,7 +1295,7 @@
withNullability: _isNonNullableByDefault,
);
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
String? declaringType;
if (enclosingElement is ClassElement) {
@@ -1353,7 +1354,7 @@
/// The enclosing element must be either a class, or extension; otherwise
/// we either fail with assertion, or return `null`.
String? _enclosingClassOrExtensionName(Element element) {
- var enclosing = element.enclosingElement2;
+ var enclosing = element.enclosingElement3;
if (enclosing is ClassElement) {
return enclosing.name;
} else if (enclosing is ExtensionElement) {
@@ -1417,7 +1418,7 @@
}
}
- InterfaceType _instantiateClassElement(ClassElement element) {
+ InterfaceType _instantiateInterfaceElement(InterfaceElement element) {
var typeParameters = element.typeParameters;
var typeArguments = const <DartType>[];
if (typeParameters.isNotEmpty) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
index 1caf787..be909a3 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
@@ -110,7 +110,7 @@
@override
void declaredClass(ClassDeclaration declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
// no type
finished();
}
@@ -118,7 +118,7 @@
@override
void declaredClassTypeAlias(ClassTypeAlias declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
// no type
finished();
}
@@ -126,7 +126,7 @@
@override
void declaredField(FieldDeclaration fieldDecl, VariableDeclaration varDecl) {
- if (varDecl.name.name == targetName) {
+ if (varDecl.name2.lexeme == targetName) {
// Type provided by the element in computeFull above
finished();
}
@@ -134,7 +134,7 @@
@override
void declaredFunction(FunctionDeclaration declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
var returnType = declaration.returnType;
if (returnType != null) {
var type = returnType.type;
@@ -148,7 +148,7 @@
@override
void declaredFunctionTypeAlias(FunctionTypeAlias declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
var returnType = declaration.returnType;
if (returnType != null) {
var type = returnType.type;
@@ -162,7 +162,7 @@
@override
void declaredGenericTypeAlias(GenericTypeAlias declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
var returnType = declaration.functionType?.returnType;
if (returnType != null) {
var type = returnType.type;
@@ -183,17 +183,20 @@
}
@override
- void declaredLocalVar(SimpleIdentifier name, TypeAnnotation? type) {
- if (name.name == targetName) {
- var element = name.staticElement as VariableElement;
- typeFound = element.type;
+ void declaredLocalVar(
+ Token name,
+ TypeAnnotation? type,
+ LocalVariableElement declaredElement,
+ ) {
+ if (name.lexeme == targetName) {
+ typeFound = declaredElement.type;
finished();
}
}
@override
void declaredMethod(MethodDeclaration declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
var returnType = declaration.returnType;
if (returnType != null) {
var type = returnType.type;
@@ -216,7 +219,7 @@
@override
void declaredTopLevelVar(
VariableDeclarationList varList, VariableDeclaration varDecl) {
- if (varDecl.name.name == targetName) {
+ if (varDecl.name2.lexeme == targetName) {
// Type provided by the element in computeFull above.
finished();
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
index 52f3e43..bd09b5e 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
@@ -37,8 +37,12 @@
strName = _getStringName(expression);
}
} else if (node is SimpleFormalParameter) {
- var identifier = _formalParameterTypeIdentifier(node);
- strName = _getStringName(identifier);
+ var identifier = _formalParameterTypeIdentifier2(node);
+ if (identifier != null) {
+ strName = _getStringName(identifier);
+ } else {
+ strName = node.name?.lexeme;
+ }
} else if (node is VariableDeclarationList) {
var identifier = _typeAnnotationIdentifier(node.type);
strName = _getStringName(identifier);
@@ -57,7 +61,7 @@
var varDeclarations = varDeclarationList.variables;
if (varDeclarations.length == 1) {
var declaration = varDeclarations.first;
- strName = _getStringName(declaration.name);
+ strName = declaration.name2.lexeme;
}
}
}
@@ -100,13 +104,12 @@
return id.name;
}
- static Identifier? _formalParameterTypeIdentifier(FormalParameter node) {
+ static Identifier? _formalParameterTypeIdentifier2(FormalParameter node) {
if (node is SimpleFormalParameter) {
var type = node.type;
if (type != null) {
return _typeAnnotationIdentifier(type);
}
- return node.identifier;
}
return null;
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart b/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
index 47a4e0c..a890ab1 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
@@ -238,6 +238,8 @@
final AstNode node;
+ final Token token;
+
CorrectionProducerContext._({
required this.resolvedResult,
required this.workspace,
@@ -245,6 +247,7 @@
this.dartFixContext,
this.diagnostic,
required this.node,
+ required this.token,
this.overrideSet,
this.selectionOffset = -1,
this.selectionLength = 0,
@@ -271,10 +274,13 @@
var node = locator.searchWithin(resolvedResult.unit);
node ??= resolvedResult.unit;
+ final token = _tokenAt(node, selectionOffset) ?? node.beginToken;
+
return CorrectionProducerContext._(
resolvedResult: resolvedResult,
workspace: workspace,
node: node,
+ token: token,
applyingBulkFixes: applyingBulkFixes,
dartFixContext: dartFixContext,
diagnostic: diagnostic,
@@ -283,6 +289,21 @@
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 {
@@ -437,6 +458,8 @@
AnalysisSessionHelper get sessionHelper => _context.sessionHelper;
+ Token get token => _context.token;
+
TypeProvider get typeProvider => _context.typeProvider;
/// Return the type system appropriate to the library in which the correction
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_call_super.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_call_super.dart
index 8b6fb50..df469d0 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_call_super.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_call_super.dart
@@ -48,7 +48,7 @@
var parameters = methodDeclaration.parameters?.parameters;
var argumentList = parameters
?.map((p) {
- var name = p.identifier?.name;
+ var name = p.name?.lexeme;
if (overriddenParameters.contains(name)) {
return p.isNamed ? '$name: $name' : name;
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
index a6e05f3..f33b3e7 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
@@ -116,7 +116,7 @@
final debugFillProperties = classDeclaration.members
.whereType<MethodDeclaration>()
- .where((e) => e.name.name == 'debugFillProperties')
+ .where((e) => e.name2.lexeme == 'debugFillProperties')
.singleOrNull;
if (debugFillProperties == null) {
var location = utils.prepareNewMethodLocation(classDeclaration);
@@ -167,10 +167,10 @@
for (var parameter in parameterList.parameters) {
if (parameter is SimpleFormalParameter) {
final type = parameter.type;
- final identifier = parameter.identifier;
+ final identifier = parameter.name;
if (type is NamedType && identifier != null) {
if (type.name.name == 'DiagnosticPropertiesBuilder') {
- propertiesBuilderName = identifier.name;
+ propertiesBuilderName = identifier.lexeme;
break;
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_enum_constant.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_enum_constant.dart
index f2ed14c..39919e2 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_enum_constant.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_enum_constant.dart
@@ -64,7 +64,7 @@
var length = constructors.length;
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;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_late.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_late.dart
index 48f22d7..53ef91d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_late.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_late.dart
@@ -61,7 +61,7 @@
getter.isSynthetic &&
!getter.variable.isSynthetic &&
getter.variable.setter == null &&
- getter.enclosingElement2 is ClassElement) {
+ getter.enclosingElement3 is ClassElement) {
var declarationResult =
await sessionHelper.getElementDeclaration(getter.variable);
if (declarationResult == null) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart
index a37027c..4475b82 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart
@@ -6,7 +6,7 @@
import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
import 'package:analysis_server/src/services/correction/fix.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/element/type.dart';
import 'package:analyzer/dart/element/type_system.dart';
@@ -33,27 +33,28 @@
@override
Future<void> compute(ChangeBuilder builder) async {
- SyntacticEntity? insertBeforeEntity;
+ Token? insertBeforeEntity;
FunctionBody? body;
if (node is SimpleIdentifier) {
var executable = node.parent;
- if (executable is MethodDeclaration && executable.name == node) {
+ if (executable is MethodDeclaration && executable.name2 == token) {
if (executable.returnType != null) {
return;
}
if (executable.isSetter) {
return;
}
- insertBeforeEntity = executable.propertyKeyword ?? executable.name;
+ insertBeforeEntity = executable.propertyKeyword ?? executable.name2;
body = executable.body;
- } else if (executable is FunctionDeclaration && executable.name == node) {
+ } else if (executable is FunctionDeclaration &&
+ executable.name2 == token) {
if (executable.returnType != null) {
return;
}
if (executable.isSetter) {
return;
}
- insertBeforeEntity = executable.propertyKeyword ?? executable.name;
+ insertBeforeEntity = executable.propertyKeyword ?? executable.name2;
body = executable.functionExpression.body;
} else {
return;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart
index a075f8a..63ff7ce 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart
@@ -120,7 +120,7 @@
return;
}
await _applyChange(builder, declaredIdentifier.keyword,
- declaredIdentifier.identifier.offset, type);
+ declaredIdentifier.name.offset, type);
}
Future<void> _forSimpleFormalParameter(ChangeBuilder builder,
@@ -150,7 +150,7 @@
final variables = declarationList.variables;
final variable = variables[0];
// Ensure that the selection is not after the name of the variable.
- if (selectionOffset > variable.name.end) {
+ if (selectionOffset > variable.name2.end) {
return;
}
// Ensure that there is an initializer to get the type from.
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart b/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
index ff8ea9d..b704649 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
@@ -8,6 +8,8 @@
import 'package:analysis_server/src/services/correction/util.dart';
import 'package:analysis_server/src/services/search/hierarchy.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_plugin/utilities/change_builder/change_builder_core.dart';
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
@@ -82,7 +84,7 @@
return element.parameters.where((superParam) =>
superParam.isNamed &&
!formalParameters
- .any((param) => superParam.name == param.identifier?.name));
+ .any((param) => superParam.name == param.name?.lexeme));
}
Future<void> _proposeAnnotation(ChangeBuilder builder) async {
@@ -130,17 +132,14 @@
}
}
- Future<void> _proposeClassOrMixinMember(
- ChangeBuilder builder,
- SimpleIdentifier node,
- Expression? target,
- _ElementPredicate predicate) async {
+ Future<void> _proposeClassOrMixinMember(ChangeBuilder builder, Token node,
+ Expression? target, _ElementPredicate predicate) async {
var targetIdentifierElement =
target is Identifier ? target.staticElement : null;
- var finder = _ClosestElementFinder(node.name, predicate);
+ var finder = _ClosestElementFinder(node.lexeme, predicate);
// unqualified invocation
if (target == null) {
- var clazz = node.thisOrAncestorOfType<ClassDeclaration>();
+ var clazz = this.node.thisOrAncestorOfType<ClassDeclaration>();
if (clazz != null) {
var classElement = clazz.declaredElement!;
_updateFinderWithClassMembers(finder, classElement);
@@ -177,7 +176,7 @@
var formalParameterList = node.thisOrAncestorOfType<FormalParameterList>();
if (formalParameterList != null) {
for (var parameter in formalParameterList.parameters) {
- var name = parameter.identifier?.name;
+ var name = parameter.name?.lexeme;
if (name != null) {
exclusions.add(name);
}
@@ -185,7 +184,7 @@
}
var type = node.type?.type;
- await _proposeClassOrMixinMember(builder, node.identifier, null,
+ await _proposeClassOrMixinMember(builder, node.name, null,
(Element element) {
return element is FieldElement &&
!exclusions.contains(element.name) &&
@@ -245,7 +244,7 @@
// find getter or setter
var wantGetter = node.inGetterContext();
var wantSetter = node.inSetterContext();
- await _proposeClassOrMixinMember(builder, node, target,
+ await _proposeClassOrMixinMember(builder, node.token, target,
(Element element) {
if (element is PropertyAccessorElement) {
return wantGetter && element.isGetter ||
@@ -263,7 +262,7 @@
final node = this.node;
var parent = node.parent;
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);
}
}
@@ -279,8 +278,7 @@
var formalParameters = constructorDeclaration.parameters.parameters
.whereType<DefaultFormalParameter>();
- var finder =
- _ClosestElementFinder(parent.identifier.name, (Element e) => true);
+ var finder = _ClosestElementFinder(parent.name.lexeme, (Element e) => true);
var superInvocation = constructorDeclaration.initializers.lastOrNull;
@@ -312,11 +310,11 @@
}
Future<void> _suggest(
- ChangeBuilder builder, AstNode node, String? name) async {
+ ChangeBuilder builder, SyntacticEntity node, String? name) async {
if (name != null) {
_proposedName = name;
await builder.addDartFileEdit(file, (builder) {
- builder.addSimpleReplacement(range.node(node), _proposedName);
+ builder.addSimpleReplacement(range.entity(node), _proposedName);
});
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart b/pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart
index 65d4118..c4bb940 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart
@@ -43,7 +43,7 @@
}
final target_final = target;
- var declaringElement = invokedElement.enclosingElement2;
+ var declaringElement = invokedElement.enclosingElement3;
if (declaringElement is ClassElement) {
_className = declaringElement.name;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart
index e774946..fe203e6 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart
@@ -51,12 +51,8 @@
// the class.
return;
}
- var node = this.node;
- if (node is! SimpleIdentifier) {
- return;
- }
var parent = node.parent;
- if (parent is ClassDeclaration && parent.name == node) {
+ if (parent is ClassDeclaration && parent.name2 == token) {
var description = _EnumDescription.fromClass(parent);
if (description != null) {
await builder.addDartFileEdit(file, (builder) {
@@ -80,7 +76,7 @@
var constructorElement = node.constructorName.staticElement;
return constructorElement != null &&
!constructorElement.isFactory &&
- constructorElement.enclosingElement2 == classElement;
+ constructorElement.enclosingElement3 == classElement;
}
}
@@ -309,7 +305,7 @@
return null;
}
var constructor = constructors[0];
- var name = constructor.name?.name;
+ var name = constructor.name2?.lexeme;
if (name != null && name != 'new') {
return null;
}
@@ -571,7 +567,7 @@
initializer.constructorName.staticElement;
if (constructorElement != null &&
!constructorElement.isFactory &&
- constructorElement.enclosingElement2 == classElement) {
+ constructorElement.enclosingElement3 == classElement) {
var fieldValue = fieldElement.computeConstantValue();
if (fieldValue != null) {
if (fieldList.variables.length != 1) {
@@ -634,7 +630,8 @@
static bool _validateMethods(ClassDeclaration classDeclaration) {
for (var member in classDeclaration.members) {
if (member is MethodDeclaration) {
- if (member.name.name == '==' || member.name.name == 'hashCode') {
+ final name = member.name2.lexeme;
+ if (name == '==' || name == 'hashCode') {
return false;
}
}
@@ -700,7 +697,7 @@
this.fieldDeclaration);
/// 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.
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart
index 2ba17f8..37d5c4d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart
@@ -22,7 +22,7 @@
if (classDeclaration == null) {
return;
}
- if (selectionOffset > classDeclaration.name.end ||
+ if (selectionOffset > classDeclaration.name2.end ||
selectionEnd < classDeclaration.classKeyword.offset) {
return;
}
@@ -61,7 +61,7 @@
classDeclaration.abstractKeyword ?? classDeclaration.classKeyword,
classDeclaration.leftBracket), (builder) {
builder.write('mixin ');
- builder.write(classDeclaration.name.name);
+ builder.write(classDeclaration.name2.lexeme);
builder.writeTypeParameters(classElement.typeParameters);
builder.writeTypes(superclassConstraints, prefix: ' on ');
builder.writeTypes(interfaces, prefix: ' implements ');
@@ -97,7 +97,7 @@
void _addElement(Element? element) {
if (element is ExecutableElement) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ClassElement) {
referencedClasses.add(enclosingElement);
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart
index 7ee4818..610e19b 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart
@@ -46,7 +46,7 @@
if (parameter is! NormalFormalParameter) {
return;
}
- var loopVariableName = parameter.identifier?.name;
+ var loopVariableName = parameter.name?.lexeme;
if (loopVariableName == null) {
return;
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart
index 2bafd70..27be65f 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart
@@ -46,7 +46,7 @@
if (element == null) {
return;
}
- var enclosing = element.enclosingElement2;
+ var enclosing = element.enclosingElement3;
if (enclosing is ClassElement) {
if (enclosing.getSetter(element.name) != null) {
return;
@@ -76,7 +76,7 @@
if (returnType != null) {
code += ' ${utils.getNodeText(returnType)}';
}
- code += ' ${utils.getNodeText(getter.name)}';
+ code += ' ${getter.name2.lexeme}';
if (expression is! NullLiteral) {
code += ' = ${utils.getNodeText(expression)}';
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart
index 6677e5f..9fa75fc 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart
@@ -54,7 +54,7 @@
code += '${utils.getNodeText(typeAnnotation)} ';
}
code += 'get';
- code += ' ${utils.getNodeText(field.name)}';
+ code += ' ${field.name2.lexeme}';
code += ' => ${utils.getNodeText(initializer)}';
code += ';';
var replacementRange = range.startEnd(finalKeyword, fieldDeclaration);
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_is_not_empty.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_is_not_empty.dart
index bc4aefd..2a1ab48 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_is_not_empty.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_is_not_empty.dart
@@ -43,7 +43,7 @@
return;
}
// should have "isNotEmpty"
- var propertyTarget = propertyElement.enclosingElement2;
+ var propertyTarget = propertyElement.enclosingElement3;
if (propertyTarget == null ||
getChildren(propertyTarget, 'isNotEmpty').isEmpty) {
return;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart
index 85057d8..bb1adf8 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart
@@ -6,6 +6,7 @@
import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
import 'package:analysis_server/src/services/correction/fix.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/element/element.dart';
import 'package:analyzer_plugin/utilities/assist/assist.dart';
@@ -41,7 +42,7 @@
var element = creation.constructorName.staticElement;
if (element == null ||
element.name != 'fromIterable' ||
- element.enclosingElement2 != typeProvider.mapElement) {
+ element.enclosingElement3 != typeProvider.mapElement) {
return;
}
//
@@ -67,9 +68,9 @@
// necessary.
//
var keyParameter = keyClosure.parameter;
- var keyParameterName = keyClosure.parameterIdentifier.name;
+ var keyParameterName = keyClosure.parameterIdentifier.lexeme;
var valueParameter = valueClosure.parameter;
- var valueParameterName = valueClosure.parameterIdentifier.name;
+ var valueParameterName = valueClosure.parameterIdentifier.lexeme;
var keyExpressionText = utils.getNodeText(keyClosure.body);
var valueExpressionText = utils.getNodeText(valueClosure.body);
@@ -172,7 +173,7 @@
var parameter = parameters[0];
if (parameter is SimpleFormalParameter &&
parameter.isRequiredPositional) {
- var parameterIdentifier = parameter.identifier;
+ var parameterIdentifier = parameter.name;
if (parameterIdentifier != null) {
var body = _extractBody(expression);
if (body != null) {
@@ -190,7 +191,7 @@
class _Closure {
final SimpleFormalParameter parameter;
- final SimpleIdentifier parameterIdentifier;
+ final Token parameterIdentifier;
final Expression body;
_Closure(this.parameter, this.parameterIdentifier, this.body);
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_field_parameter.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_field_parameter.dart
index 2b3e173..3421dbd 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_field_parameter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_field_parameter.dart
@@ -5,6 +5,7 @@
import 'package:analysis_server/src/services/correction/assist.dart';
import 'package:analysis_server/src/services/correction/dart/abstract_producer.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/element/element.dart';
import 'package:analyzer_plugin/utilities/assist/assist.dart';
@@ -24,7 +25,7 @@
}
// analyze parameter
- var parameterName = context.identifier.name;
+ var parameterName = context.identifier.lexeme;
var parameterElement = context.parameter.declaredElement!;
var initializers = context.constructor.initializers;
@@ -88,7 +89,7 @@
static _Context? _findParameter(AstNode node) {
var parent = node.parent;
if (parent is SimpleFormalParameter) {
- var identifier = parent.identifier;
+ var identifier = parent.name;
if (identifier == null) return null;
var formalParameterList = parent.parent;
@@ -111,8 +112,8 @@
if (parent.expression == node) {
for (var formalParameter in constructor.parameters.parameters) {
if (formalParameter is SimpleFormalParameter) {
- var identifier = formalParameter.identifier;
- if (identifier != null && identifier.name == node.name) {
+ var identifier = formalParameter.name;
+ if (identifier != null && identifier.lexeme == node.name) {
return _Context(
parameter: formalParameter,
identifier: identifier,
@@ -130,7 +131,7 @@
class _Context {
final SimpleFormalParameter parameter;
- final SimpleIdentifier identifier;
+ final Token identifier;
final ConstructorDeclaration constructor;
_Context({
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_generic_function_syntax.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_generic_function_syntax.dart
index 1cc03ee..4727e20 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_generic_function_syntax.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_generic_function_syntax.dart
@@ -76,7 +76,7 @@
}
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);
String replacement;
if (returnType == null) {
@@ -102,8 +102,8 @@
var returnTypeNode = node.returnType;
var returnType =
returnTypeNode != null ? '${utils.getNodeText(returnTypeNode)} ' : '';
- var functionName = utils.getRangeText(range.startEnd(
- node.identifier, node.typeParameters ?? node.identifier));
+ var functionName = utils.getRangeText(
+ range.startEnd(node.name, node.typeParameters ?? node.name));
var parameters = utils.getNodeText(node.parameters);
var question = node.question != null ? '?' : '';
var replacement =
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart
index 17327b7..f95535b 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart
@@ -39,7 +39,7 @@
if (parameter == null) {
return;
}
- var identifier = parameter.identifier;
+ var identifier = parameter.name;
if (identifier == null) {
return;
}
@@ -51,7 +51,7 @@
builder.addSimpleInsertion(identifier.offset, 'this.');
} else {
builder.addSimpleReplacement(
- range.node(parameter), 'this.${identifier.name}');
+ range.node(parameter), 'this.${identifier.lexeme}');
}
var statements = block.statements;
@@ -68,7 +68,7 @@
if (parameter == null) {
return;
}
- var identifier = parameter.identifier;
+ var identifier = parameter.name;
if (identifier == null) {
return;
}
@@ -85,7 +85,7 @@
builder.addSimpleInsertion(identifier.offset, 'this.');
} else {
builder.addSimpleReplacement(
- range.node(parameter), 'this.${identifier.name}');
+ range.node(parameter), 'this.${identifier.lexeme}');
}
var initializers = constructor.initializers;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart
index 03a314a..d75f4ee 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart
@@ -241,7 +241,7 @@
}
var parameterNode = parameter.parameter;
- var identifier = parameterNode.identifier;
+ var identifier = parameterNode.name;
if (identifier == null) {
// This condition should never occur, but the test is here to promote the
// type.
@@ -272,7 +272,7 @@
var superDefault = superParameter.computeConstantValue();
var thisDefault = thisParameter.computeConstantValue();
if (superDefault != null && superDefault == thisDefault) {
- return range.endEnd(parameter.identifier!, defaultValue);
+ return range.endEnd(parameter.name!, defaultValue);
}
}
}
@@ -410,14 +410,13 @@
var typeAnnotation = parameter.type;
if (typeAnnotation != null) {
return _TypeData(
- primaryRange:
- range.startStart(typeAnnotation, parameter.identifier!));
+ primaryRange: range.startStart(typeAnnotation, parameter.name!));
}
} else if (parameter is FunctionTypedFormalParameter) {
var returnType = parameter.returnType;
return _TypeData(
primaryRange: returnType != null
- ? range.startStart(returnType, parameter.identifier)
+ ? range.startStart(returnType, parameter.name)
: null,
parameterRange: range.node(parameter.parameters));
}
@@ -452,7 +451,7 @@
final _TypeData? typeToDelete;
/// The name.
- final Identifier name;
+ final Token name;
/// Whether to add a default initializer with `null` value or not.
final bool nullInitializer;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
index 3062776..b6b921c 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
@@ -6,6 +6,7 @@
import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analysis_server/src/services/correction/util.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/type.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
@@ -36,22 +37,23 @@
if (node is SimpleIdentifier) {
var parent = node.parent;
if (parent is ConstructorName) {
- await _proposeFromConstructorName(builder, node, parent);
+ await _proposeFromConstructorName(builder, node.token, parent);
return;
}
}
var parent = node.thisOrAncestorOfType<EnumConstantDeclaration>();
if (parent != null) {
- await _proposeFromEnumConstantDeclaration(builder, parent.name, parent);
+ await _proposeFromEnumConstantDeclaration(
+ builder, parent.name2, parent);
}
}
}
- Future<void> _proposeFromConstructorName(ChangeBuilder builder,
- SimpleIdentifier name, ConstructorName constructorName) async {
+ Future<void> _proposeFromConstructorName(ChangeBuilder builder, Token name,
+ ConstructorName constructorName) async {
InstanceCreationExpression? instanceCreation;
_constructorName = constructorName.toSource();
- if (constructorName.name == name) {
+ if (constructorName.name?.token == name) {
var grandParent = constructorName.parent;
// Type.name
if (grandParent is InstanceCreationExpression) {
@@ -101,8 +103,8 @@
constructorName: name, argumentList: instanceCreation.argumentList);
}
- Future<void> _proposeFromEnumConstantDeclaration(ChangeBuilder builder,
- SimpleIdentifier name, EnumConstantDeclaration parent) async {
+ Future<void> _proposeFromEnumConstantDeclaration(
+ ChangeBuilder builder, Token name, EnumConstantDeclaration parent) async {
var grandParent = parent.parent;
if (grandParent is! EnumDeclaration) {
return;
@@ -137,7 +139,7 @@
var arguments = parent.arguments;
_constructorName =
- '${targetNode.name}${arguments?.constructorSelector ?? ''}';
+ '${targetNode.name2.lexeme}${arguments?.constructorSelector ?? ''}';
await _write(
builder,
@@ -145,7 +147,7 @@
targetElement,
targetLocation,
isConst: true,
- constructorName: arguments?.constructorSelector?.name,
+ constructorName: arguments?.constructorSelector?.name.token,
argumentList: arguments?.argumentList,
);
}
@@ -163,7 +165,7 @@
}
// prepare target ClassDeclaration
- var targetElement = constructorElement.enclosingElement2;
+ var targetElement = constructorElement.enclosingElement3;
var targetResult = await sessionHelper.getElementDeclaration(targetElement);
if (targetResult == null) {
return;
@@ -199,10 +201,10 @@
Future<void> _write(
ChangeBuilder builder,
- SimpleIdentifier name,
+ Token name,
ClassElement targetElement,
InsertionLocation targetLocation, {
- SimpleIdentifier? constructorName,
+ Token? constructorName,
bool isConst = false,
ArgumentList? argumentList,
}) async {
@@ -213,12 +215,12 @@
builder.writeConstructorDeclaration(targetElement.name,
isConst: isConst,
argumentList: argumentList,
- constructorName: constructorName,
+ constructorName: constructorName?.lexeme,
constructorNameGroupName: 'NAME');
builder.write(targetLocation.suffix);
});
if (targetFile == file) {
- builder.addLinkedPosition(range.node(name), 'NAME');
+ builder.addLinkedPosition(range.token(name), 'NAME');
}
});
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart
index 98d9df5..e750314 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart
@@ -28,7 +28,7 @@
return;
}
- var className = classDeclaration.name.name;
+ var className = classDeclaration.name2.lexeme;
var superType = classDeclaration.declaredElement?.supertype;
if (superType == null) {
return;
@@ -70,7 +70,7 @@
for (var variableList in variableLists) {
fieldNames.addAll(variableList.variables
.where((v) => v.initializer == null)
- .map((v) => v.name.name));
+ .map((v) => v.name2.lexeme));
}
await builder.addDartFileEdit(file, (builder) {
@@ -143,7 +143,7 @@
for (var variableList in variableLists) {
var fieldNames = variableList.variables
.where((v) => v.initializer == null)
- .map((v) => v.name.name);
+ .map((v) => v.name2.lexeme);
for (var fieldName in fieldNames) {
if (fieldName == 'child' || fieldName == 'children') {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_field.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_field.dart
index 7d54c79..4da661d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_field.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_field.dart
@@ -37,8 +37,7 @@
return;
}
- var nameNode = parameter.identifier;
- _fieldName = nameNode.name;
+ _fieldName = parameter.name.lexeme;
var targetLocation = utils.prepareNewFieldLocation(targetClassNode);
if (targetLocation == null) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
index a77eb43..80d31df 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
@@ -68,7 +68,7 @@
final classElement = classDecl.declaredElement!;
var missingEquals = memberDecl is FieldDeclaration ||
- (memberDecl as MethodDeclaration).name.name == 'hashCode';
+ (memberDecl as MethodDeclaration).name2.lexeme == 'hashCode';
ExecutableElement? element;
if (missingEquals) {
_memberName = '==';
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart b/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
index 9c8ca83..0512f36 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
@@ -34,7 +34,7 @@
importedUris.add(uri.relativeUri);
}
}
- var matchers = ElementMatcher.matchersForNode(node);
+ var matchers = ElementMatcher.matchersForNode(node, token);
if (matchers.isEmpty) {
// The node doesn't represent any element that can be transformed.
return;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart b/pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart
index b9c9d5c..2c74063 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart
@@ -40,15 +40,15 @@
return;
}
var field = fields.first;
- var nameNode = field.name;
+ var nameToken = field.name2;
var fieldElement = field.declaredElement as FieldElement;
// should have a public name
- var name = nameNode.name;
+ var name = nameToken.lexeme;
if (Identifier.isPrivateName(name)) {
return;
}
// should be on the name
- if (nameNode != node) {
+ if (nameToken != token) {
return;
}
@@ -60,17 +60,17 @@
await builder.addDartFileEdit(file, (builder) {
// rename field
- builder.addSimpleReplacement(range.node(nameNode), '_$name');
+ builder.addSimpleReplacement(range.token(nameToken), '_$name');
// update references in constructors
for (var member in classDeclaration.members) {
if (member is ConstructorDeclaration) {
for (var parameter in member.parameters.parameters) {
- var identifier = parameter.identifier;
+ var identifier = parameter.name;
var parameterElement = parameter.declaredElement;
if (identifier != null &&
parameterElement is FieldFormalParameterElement &&
parameterElement.field == fieldElement) {
- builder.addSimpleReplacement(range.node(identifier), '_$name');
+ builder.addSimpleReplacement(range.token(identifier), '_$name');
}
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/extend_class_for_mixin.dart b/pkg/analysis_server/lib/src/services/correction/dart/extend_class_for_mixin.dart
index ee1735a..74eaf76 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/extend_class_for_mixin.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/extend_class_for_mixin.dart
@@ -34,7 +34,7 @@
_typeName = message.substring(startIndex, endIndex);
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(
- declaration.typeParameters?.end ?? declaration.name.end,
+ declaration.typeParameters?.end ?? declaration.name2.end,
' extends $_typeName');
});
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart
index 15517dc..bfca7e7 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart
@@ -146,7 +146,7 @@
builder.writeln(' @override');
builder.write(' ');
builder.writeReference(stateClass);
- builder.write('<${widgetClass.name}$typeParams>');
+ builder.write('<${widgetClass.name2.lexeme}$typeParams>');
builder.writeln(' createState() => $stateName$typeParams();');
if (hasEmptyLineAfterCreateState) {
builder.writeln();
@@ -205,7 +205,7 @@
builder.writeReference(stateClass);
// Write just param names (and not bounds, metadata and docs).
- builder.write('<${widgetClass.name}');
+ builder.write('<${widgetClass.name2.lexeme}');
if (typeParameters != null) {
builder.write('<');
var first = true;
@@ -214,7 +214,7 @@
builder.write(', ');
first = false;
}
- builder.write(param.name.name);
+ builder.write(param.name2.lexeme);
}
builder.write('>');
}
@@ -247,7 +247,7 @@
MethodDeclaration? _findBuildMethod(ClassDeclaration widgetClass) {
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;
if (parameters != null && parameters.parameters.length == 1) {
return member;
@@ -309,7 +309,7 @@
}
var element = node.staticElement;
if (element is ExecutableElement &&
- element.enclosingElement2 == widgetClassElement &&
+ element.enclosingElement3 == widgetClassElement &&
!elementsToMove.contains(element)) {
var offset = node.offset - linesRange.offset;
var qualifier =
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart
index dcbc524..0280d715 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart
@@ -48,7 +48,7 @@
var stateClassElement = stateClass?.declaredElement;
if (stateClass == null ||
stateClassElement == null ||
- !Identifier.isPrivateName(stateClass.name.name) ||
+ !Identifier.isPrivateName(stateClass.name2.lexeme) ||
!_isSameTypeParameters(widgetClass, stateClass)) {
return;
}
@@ -170,7 +170,7 @@
MethodDeclaration? _findCreateStateMethod(ClassDeclaration widgetClass) {
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;
if (parameters?.parameters.isEmpty ?? false) {
return member;
@@ -214,7 +214,7 @@
outer:
for (var stateParam in stateParams) {
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) {
continue outer;
}
@@ -242,7 +242,7 @@
}
if (expression is MethodInvocation &&
expression.target is SuperExpression &&
- methodDeclaration!.name.name == expression.methodName.name) {
+ methodDeclaration!.name2.lexeme == expression.methodName.name) {
return true;
}
}
@@ -315,7 +315,7 @@
}
var element = node.staticElement;
if (element is ExecutableElement &&
- element.enclosingElement2 == widgetClassElement &&
+ element.enclosingElement3 == widgetClassElement &&
!elementsToMove.contains(element)) {
var parent = node.parent;
if (parent is PrefixedIdentifier) {
@@ -358,7 +358,7 @@
void visitMethodInvocation(MethodInvocation node) {
var methodElement = node.methodName.staticElement?.declaration;
if (methodElement is ClassMemberElement) {
- var classElement = methodElement.enclosingElement2;
+ var classElement = methodElement.enclosingElement3;
if (classElement is ClassElement &&
Flutter.instance.isExactState(classElement) &&
!FlutterConvertToStatelessWidget._isDefaultOverride(
@@ -388,7 +388,7 @@
var classDeclaration =
methodDeclaration?.thisOrAncestorOfType<ClassDeclaration>();
- if (methodDeclaration?.name.name != 'createState' ||
+ if (methodDeclaration?.name2.lexeme != 'createState' ||
classDeclaration?.declaredElement != widgetClassElement) {
used = true;
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/inline_typedef.dart b/pkg/analysis_server/lib/src/services/correction/dart/inline_typedef.dart
index 2c5328d..3cd39a5 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/inline_typedef.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/inline_typedef.dart
@@ -44,7 +44,7 @@
List<FormalParameter> parameters;
if (parent is FunctionTypeAlias) {
returnType = parent.returnType;
- _name = parent.name.name;
+ _name = parent.name2.lexeme;
typeParameters = parent.typeParameters;
parameters = parent.parameters.parameters;
} else if (parent is GenericTypeAlias) {
@@ -56,7 +56,7 @@
return;
}
returnType = functionType.returnType;
- _name = parent.name.name;
+ _name = parent.name2.lexeme;
typeParameters = functionType.typeParameters;
parameters = functionType.parameters.parameters;
} else {
@@ -128,10 +128,10 @@
builder.write(utils.getNodeText(typeAnnotation));
}
if (parameter.isNamed) {
- var identifier = parameter.identifier;
+ var identifier = parameter.name;
if (identifier != null) {
builder.write(' ');
- builder.write(identifier.name);
+ builder.write(identifier.lexeme);
}
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/join_variable_declaration.dart b/pkg/analysis_server/lib/src/services/correction/dart/join_variable_declaration.dart
index 54a8773..f85fb95 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/join_variable_declaration.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/join_variable_declaration.dart
@@ -148,7 +148,7 @@
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement(
- range.endStart(declaredVariable.name, assignment.operator),
+ range.endStart(declaredVariable.name2, assignment.operator),
' ',
);
});
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/make_class_abstract.dart b/pkg/analysis_server/lib/src/services/correction/dart/make_class_abstract.dart
index d667d2f..826fb84 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/make_class_abstract.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/make_class_abstract.dart
@@ -23,7 +23,7 @@
if (enclosingClass == null) {
return;
}
- _className = enclosingClass.name.name;
+ _className = enclosingClass.name2.lexeme;
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(
enclosingClass.classKeyword.offset, 'abstract ');
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/make_field_not_final.dart b/pkg/analysis_server/lib/src/services/correction/dart/make_field_not_final.dart
index 71b2377..3a9a404 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/make_field_not_final.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/make_field_not_final.dart
@@ -45,7 +45,7 @@
}
// It must be a field declaration.
- if (getter.enclosingElement2 is! ClassElement) {
+ if (getter.enclosingElement3 is! ClassElement) {
return;
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/make_field_public.dart b/pkg/analysis_server/lib/src/services/correction/dart/make_field_public.dart
index f492510..c11ace4 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/make_field_public.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/make_field_public.dart
@@ -28,7 +28,9 @@
var getterName = node.name;
_fieldName = '_$getterName';
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;
if (container is ClassOrMixinDeclaration) {
var members = container.members;
@@ -36,12 +38,12 @@
VariableDeclaration? field;
for (var member in members) {
if (member is MethodDeclaration &&
- member.name.name == getterName &&
+ member.name2.lexeme == getterName &&
member.isSetter) {
setter = member;
} else if (member is FieldDeclaration) {
for (var variable in member.fields.variables) {
- if (variable.name.name == _fieldName) {
+ if (variable.name2.lexeme == _fieldName) {
field = variable;
}
}
@@ -51,7 +53,7 @@
return;
}
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, setter!);
});
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/make_final.dart b/pkg/analysis_server/lib/src/services/correction/dart/make_final.dart
index d95deb7..c3dbb10 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/make_final.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/make_final.dart
@@ -62,7 +62,7 @@
builder.addSimpleInsertion(type.offset, 'final ');
return;
}
- final identifier = simpleNode.identifier;
+ final identifier = simpleNode.name;
if (identifier != null) {
builder.addSimpleInsertion(identifier.offset, 'final ');
} else {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/make_variable_nullable.dart b/pkg/analysis_server/lib/src/services/correction/dart/make_variable_nullable.dart
index e624cab..6c2b0d2 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/make_variable_nullable.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/make_variable_nullable.dart
@@ -118,7 +118,7 @@
if (parameter.question != null) {
return;
}
- _variableName = parameter.identifier.name;
+ _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) {
// Add '?' after `)`.
builder.addSimpleInsertion(parameter.endToken.end, '?');
@@ -128,7 +128,7 @@
if (type == null || !_typeCanBeMadeNullable(type)) {
return;
}
- _variableName = parameter.identifier.name;
+ _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(type.end, '?');
});
@@ -141,7 +141,7 @@
if (parameter.question != null) {
return;
}
- _variableName = parameter.identifier.name;
+ _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) {
// Add '?' after `)`.
builder.addSimpleInsertion(parameter.endToken.end, '?');
@@ -155,12 +155,12 @@
return;
}
- var identifier = parameter.identifier;
+ var identifier = parameter.name;
if (identifier == null) {
return;
}
- _variableName = identifier.name;
+ _variableName = identifier.lexeme;
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(type.end, '?');
});
@@ -174,7 +174,7 @@
if (parameter.question != null) {
return;
}
- _variableName = parameter.identifier.name;
+ _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) {
// Add '?' after `)`.
builder.addSimpleInsertion(parameter.endToken.end, '?');
@@ -184,7 +184,7 @@
if (type == null || !_typeCanBeMadeNullable(type)) {
return;
}
- _variableName = parameter.identifier.name;
+ _variableName = parameter.name.lexeme;
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleInsertion(type.end, '?');
});
@@ -226,7 +226,7 @@
Future<void> _updateVariableType(ChangeBuilder builder,
VariableDeclarationList declarationList, DartType newType) async {
var variable = declarationList.variables[0];
- _variableName = variable.name.name;
+ _variableName = variable.name2.lexeme;
await builder.addDartFileEdit(file, (builder) {
var keyword = declarationList.keyword;
if (keyword != null && keyword.type == Keyword.VAR) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/qualify_reference.dart b/pkg/analysis_server/lib/src/services/correction/dart/qualify_reference.dart
index 8b178ef..21b7a43 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/qualify_reference.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/qualify_reference.dart
@@ -40,7 +40,7 @@
return;
}
- var enclosingElement = memberElement.enclosingElement2;
+ var enclosingElement = memberElement.enclosingElement3;
if (enclosingElement == null ||
enclosingElement.library != libraryElement) {
// TODO(brianwilkerson) Support qualifying references to members defined
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_initializer.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_initializer.dart
index 0a44117..d203609 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_initializer.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_initializer.dart
@@ -38,7 +38,7 @@
var parameter = node.thisOrAncestorOfType<DefaultFormalParameter>();
if (parameter != null) {
// Handle formal parameters with default values.
- var identifier = parameter.identifier;
+ var identifier = parameter.name;
var defaultValue = parameter.defaultValue;
if (identifier != null && defaultValue != null) {
await builder.addDartFileEdit(file, (builder) {
@@ -54,7 +54,7 @@
if (variable != null && initializer != null) {
await builder.addDartFileEdit(file, (builder) {
builder.addDeletion(
- range.endEnd(variable.name, initializer),
+ range.endEnd(variable.name2, initializer),
);
});
} else {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_parameters_in_getter_declaration.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_parameters_in_getter_declaration.dart
index 69409b5..a239ba6 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_parameters_in_getter_declaration.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_parameters_in_getter_declaration.dart
@@ -20,7 +20,7 @@
final node = this.node;
if (node is MethodDeclaration) {
// Support for the analyzer error.
- var name = node.name;
+ var name = node.name2;
var body = node.body;
await builder.addDartFileEdit(file, (builder) {
builder.addSimpleReplacement(range.endStart(name, body), ' ');
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart
index 853558be..fb8a5fa 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart
@@ -55,12 +55,12 @@
}
// ignore if an incomplete variable declaration
if (declarationList.variables.length == 1 &&
- declarationList.variables[0].name.isSynthetic) {
+ declarationList.variables[0].name2.isSynthetic) {
return;
}
// must be not after the name of the variable
var firstVariable = declarationList.variables[0];
- if (selectionOffset > firstVariable.name.end) {
+ if (selectionOffset > firstVariable.name2.end) {
return;
}
@@ -127,7 +127,7 @@
return;
}
var keyword = declaration.keyword;
- var variableName = declaration.identifier;
+ var variableName = declaration.name;
await builder.addDartFileEdit(file, (builder) {
var typeRange = range.startStart(typeNode, variableName);
if (keyword != null && keyword.lexeme != 'var') {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart
index 3bec4f2..9a5aa0e 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart
@@ -27,7 +27,7 @@
@override
Future<void> compute(ChangeBuilder builder) async {
final declaration = node.parent;
- if (!(declaration is VariableDeclaration && declaration.name == node)) {
+ if (!(declaration is VariableDeclaration && declaration.name2 == token)) {
return;
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/rename_method_parameter.dart b/pkg/analysis_server/lib/src/services/correction/dart/rename_method_parameter.dart
index 8a84fe8..7ba42b8 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/rename_method_parameter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/rename_method_parameter.dart
@@ -25,7 +25,7 @@
Future<void> compute(ChangeBuilder builder) async {
final parameter = node.parent;
if (parameter is! FormalParameter) return;
- var paramIdentifier = parameter.identifier;
+ var paramIdentifier = parameter.name;
if (paramIdentifier == null) return;
var method = parameter.thisOrAncestorOfType<MethodDeclaration>();
@@ -38,12 +38,12 @@
if (classElement is! ClassElement) return;
var parentMethod = classElement.lookUpInheritedMethod(
- method.name.name, classElement.library);
+ method.name2.lexeme, classElement.library);
if (parentMethod == null) return;
var parameters = methodParameters.parameters;
var parentParameters = parentMethod.parameters;
- var oldName = paramIdentifier.name;
+ var oldName = paramIdentifier.lexeme;
var i = parameters.indexOf(parameter);
if (0 <= i && i < parentParameters.length) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/replace_conditional_with_if_else.dart b/pkg/analysis_server/lib/src/services/correction/dart/replace_conditional_with_if_else.dart
index c752866..fdc7163 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/replace_conditional_with_if_else.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/replace_conditional_with_if_else.dart
@@ -114,17 +114,17 @@
builder.writeType(type);
});
} else {
- builder.addInsertion(variable.name.offset, (builder) {
+ builder.addInsertion(variable.name2.offset, (builder) {
builder.writeType(type);
builder.write(' ');
});
}
}
- builder.addDeletion(range.endEnd(variable.name, conditional));
+ builder.addDeletion(range.endEnd(variable.name2, conditional));
var conditionSrc = utils.getNodeText(conditional.condition);
var thenSrc = utils.getNodeText(conditional.thenExpression);
var elseSrc = utils.getNodeText(conditional.elseExpression);
- var name = variable.name.name;
+ var name = variable.name2.lexeme;
var src = eol;
src += '${prefix}if ($conditionSrc) {$eol';
src += '$prefix$indent$name = $thenSrc;$eol';
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/replace_with_identifier.dart b/pkg/analysis_server/lib/src/services/correction/dart/replace_with_identifier.dart
index 461563b..1485806 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/replace_with_identifier.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/replace_with_identifier.dart
@@ -28,8 +28,8 @@
node.thisOrAncestorOfType<FunctionTypedFormalParameter>();
if (functionTyped != null) {
await builder.addDartFileEdit(file, (builder) {
- builder.addSimpleReplacement(range.node(functionTyped),
- utils.getNodeText(functionTyped.identifier));
+ builder.addSimpleReplacement(
+ range.node(functionTyped), functionTyped.name.lexeme);
});
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/replace_with_var.dart b/pkg/analysis_server/lib/src/services/correction/dart/replace_with_var.dart
index 3c5a55b..abb1a10 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/replace_with_var.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/replace_with_var.dart
@@ -110,7 +110,7 @@
}
await builder.addDartFileEdit(file, (builder) {
if (parent.isConst || parent.isFinal) {
- builder.addDeletion(range.startStart(type, parent.identifier));
+ builder.addDeletion(range.startStart(type, parent.name));
} else {
builder.addSimpleReplacement(range.node(type), 'var');
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart b/pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart
index f18ab8c..5ed846e 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart
@@ -28,7 +28,7 @@
return;
}
- if (!accessor.isGetter || accessor.enclosingElement2 is! ClassElement) {
+ if (!accessor.isGetter || accessor.enclosingElement3 is! ClassElement) {
// TODO(brianwilkerson) Should we also require that the getter be synthetic?
return;
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/sort_unnamed_constructor_first.dart b/pkg/analysis_server/lib/src/services/correction/dart/sort_unnamed_constructor_first.dart
index 46b54ee..a55adde 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/sort_unnamed_constructor_first.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/sort_unnamed_constructor_first.dart
@@ -32,11 +32,11 @@
.firstWhereOrNull((child) => child is ConstructorDeclaration)
as ConstructorDeclaration?;
if (firstConstructor == null ||
- firstConstructor.name == null ||
- firstConstructor.name?.name == 'new') return;
+ firstConstructor.name2 == null ||
+ firstConstructor.name2?.lexeme == 'new') return;
final unnamedConstructor = clazz.childEntities.firstWhereOrNull(
- (child) => child is ConstructorDeclaration && child.name == null)
+ (child) => child is ConstructorDeclaration && child.name2 == null)
as ConstructorDeclaration?;
if (unnamedConstructor == null) return;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart b/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart
index 98ddb5b..0eff5c6 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart
@@ -41,7 +41,7 @@
// The caret must be between the type and the variable name.
var variable = variables[0];
- if (!range.startEnd(statement, variable.name).contains(selectionOffset)) {
+ if (!range.startEnd(statement, variable.name2).contains(selectionOffset)) {
return;
}
@@ -64,8 +64,8 @@
}
var indent = utils.getNodePrefix(statement);
- var name = variable.name.name;
- builder.addSimpleInsertion(variable.name.end, ';$eol$indent$name');
+ var name = variable.name2.lexeme;
+ builder.addSimpleInsertion(variable.name2.end, ';$eol$indent$name');
});
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart
index 1180800..135155a 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart
@@ -87,7 +87,7 @@
if (_isInvalidIndex(typeParameters?.typeParameters)) {
return null;
}
- return _TypeParameterData(typeParameters, parent.name.end);
+ return _TypeParameterData(typeParameters, parent.name2.end);
} else if (node is TypeArgumentList && parent is ExtensionOverride) {
// wrong_number_of_type_arguments_extension
if (!argumentValue.validate(context)) {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
index b606c9f..f430cad 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
@@ -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_kind.dart';
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart'
show ClassElement, ExtensionElement, PrefixElement;
import 'package:analyzer/dart/element/type.dart';
@@ -97,7 +98,7 @@
/// 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
/// 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) {
return const <ElementMatcher>[];
}
@@ -106,7 +107,7 @@
return const <ElementMatcher>[];
}
var builder = _MatcherBuilder(importedUris);
- builder.buildMatchersForNode(node);
+ builder.buildMatchersForNode(node, nameToken);
return builder.matchers.toList();
}
@@ -143,7 +144,7 @@
_MatcherBuilder(this.importedUris);
- void buildMatchersForNode(AstNode? node) {
+ void buildMatchersForNode(AstNode? node, Token? nameToken) {
if (node is ArgumentList) {
_buildFromArgumentList(node);
} else if (node is BinaryExpression) {
@@ -159,8 +160,8 @@
_buildFromNamedType(node);
} else if (node is PrefixedIdentifier) {
_buildFromPrefixedIdentifier(node);
- } else if (node is SimpleIdentifier) {
- _buildFromSimpleIdentifier(node);
+ } else if (node is SimpleIdentifier && nameToken != null) {
+ _buildFromSimpleIdentifier(node, nameToken);
} else if (node is TypeArgumentList) {
_buildFromTypeArgumentList(node);
}
@@ -201,7 +202,7 @@
);
}
} else if (parent is SuperConstructorInvocation) {
- var superclassName = parent.staticElement?.enclosingElement2.name;
+ var superclassName = parent.staticElement?.enclosingElement3.name;
if (superclassName != null) {
_addMatcher(
components: [parent.constructorName?.name ?? '', superclassName],
@@ -257,7 +258,7 @@
/// Build a matcher for the method being declared.
void _buildFromMethodDeclaration(MethodDeclaration node) {
_addMatcher(
- components: [node.name.name],
+ components: [node.name2.lexeme],
kinds: [ElementKind.methodKind],
);
}
@@ -447,7 +448,7 @@
}
/// 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
// get a more exact matcher.
var parent = node.parent;
@@ -458,7 +459,7 @@
_buildFromArgumentList(parent.parent!.parent as ArgumentList);
} else if (parent is NamedType) {
_buildFromNamedType(parent);
- } else if (parent is MethodDeclaration && node == parent.name) {
+ } else if (parent is MethodDeclaration && nameToken == parent.name2) {
_buildFromMethodDeclaration(parent);
} else if (parent is MethodInvocation &&
node == parent.methodName &&
@@ -502,7 +503,7 @@
}
}
if (element != null) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ClassElement) {
return [identifier.name, enclosingElement.name];
} else if (enclosingElement is ExtensionElement) {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename_parameter.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename_parameter.dart
index 2493049..568dd96 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename_parameter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename_parameter.dart
@@ -38,9 +38,9 @@
if (overriddenParameter == null) {
// If the overridden parameter has already been removed, then just
// rename the old parameter to have the new name.
- var identifier = parameter.identifier;
+ var identifier = parameter.name;
if (identifier != null) {
- builder.addSimpleReplacement(range.node(identifier), newName);
+ builder.addSimpleReplacement(range.token(identifier), newName);
}
} else {
// If the overridden parameter still exists, then mark it as
@@ -122,7 +122,7 @@
ExecutableElement? overriddenElement() {
var element = declaredElement;
if (element != null) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ClassElement) {
var name = Name(enclosingElement.library.source.uri, element.name);
return InheritanceManager3().getInherited2(enclosingElement, name);
diff --git a/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart b/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
index 93de681..63b84f6 100644
--- a/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
+++ b/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
@@ -34,7 +34,7 @@
// If we're in a build() method, use 'build' as the name prefix.
var method = assignedExpression?.thisOrAncestorOfType<MethodDeclaration>();
if (method != null) {
- var enclosingName = method.name.name;
+ var enclosingName = method.name2.lexeme;
if (enclosingName.startsWith('build')) {
prefix = 'build';
}
diff --git a/pkg/analysis_server/lib/src/services/correction/namespace.dart b/pkg/analysis_server/lib/src/services/correction/namespace.dart
index 5f85fc8..a2abded 100644
--- a/pkg/analysis_server/lib/src/services/correction/namespace.dart
+++ b/pkg/analysis_server/lib/src/services/correction/namespace.dart
@@ -42,7 +42,7 @@
String prefix,
Element element,
Map<LibraryImportElement, Set<Element>> importElementsMap) {
- if (element.enclosingElement2 is! CompilationUnitElement) {
+ if (element.enclosingElement3 is! CompilationUnitElement) {
return null;
}
var usedLibrary = element.library;
diff --git a/pkg/analysis_server/lib/src/services/correction/sort_members.dart b/pkg/analysis_server/lib/src/services/correction/sort_members.dart
index 4c8bed4..e871b08 100644
--- a/pkg/analysis_server/lib/src/services/correction/sort_members.dart
+++ b/pkg/analysis_server/lib/src/services/correction/sort_members.dart
@@ -112,19 +112,14 @@
String name;
if (member is ConstructorDeclaration) {
kind = _MemberKind.CLASS_CONSTRUCTOR;
- var nameNode = member.name;
- if (nameNode == null) {
- name = '';
- } else {
- name = nameNode.name;
- }
+ name = member.name2?.lexeme ?? '';
} else if (member is FieldDeclaration) {
var fieldDeclaration = member;
List<VariableDeclaration> fields = fieldDeclaration.fields.variables;
if (fields.isNotEmpty) {
kind = _MemberKind.CLASS_FIELD;
isStatic = fieldDeclaration.isStatic;
- name = fields[0].name.name;
+ name = fields[0].name2.lexeme;
} else {
// Don't sort members if there are errors in the code.
return;
@@ -132,7 +127,7 @@
} else if (member is MethodDeclaration) {
var method = member;
isStatic = method.isStatic;
- name = method.name.name;
+ name = method.name2.lexeme;
if (method.isGetter) {
kind = _MemberKind.CLASS_ACCESSOR;
name += ' getter';
@@ -172,23 +167,22 @@
String name;
if (member is ClassOrMixinDeclaration) {
kind = _MemberKind.UNIT_CLASS;
- name = member.name.name;
+ name = member.name2.lexeme;
} else if (member is ClassTypeAlias) {
kind = _MemberKind.UNIT_CLASS;
- name = member.name.name;
+ name = member.name2.lexeme;
} else if (member is EnumDeclaration) {
kind = _MemberKind.UNIT_CLASS;
- name = member.name.name;
+ name = member.name2.lexeme;
} else if (member is ExtensionDeclaration) {
kind = _MemberKind.UNIT_EXTENSION;
- name = member.name?.name ?? '';
+ name = member.name2?.lexeme ?? '';
} else if (member is FunctionDeclaration) {
- var function = member;
- name = function.name.name;
- if (function.isGetter) {
+ name = member.name2.lexeme;
+ if (member.isGetter) {
kind = _MemberKind.UNIT_ACCESSOR;
name += ' getter';
- } else if (function.isSetter) {
+ } else if (member.isSetter) {
kind = _MemberKind.UNIT_ACCESSOR;
name += ' setter';
} else {
@@ -200,10 +194,10 @@
}
} else if (member is FunctionTypeAlias) {
kind = _MemberKind.UNIT_FUNCTION_TYPE;
- name = member.name.name;
+ name = member.name2.lexeme;
} else if (member is GenericTypeAlias) {
kind = _MemberKind.UNIT_GENERIC_TYPE_ALIAS;
- name = member.name.name;
+ name = member.name2.lexeme;
} else if (member is TopLevelVariableDeclaration) {
var variableDeclaration = member;
List<VariableDeclaration> variables =
@@ -214,7 +208,7 @@
} else {
kind = _MemberKind.UNIT_VARIABLE;
}
- name = variables[0].name.name;
+ name = variables[0].name2.lexeme;
} else {
// Don't sort members if there are errors in the code.
return;
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart
index 8fc4dc7..05db61d 100644
--- a/pkg/analysis_server/lib/src/services/correction/util.dart
+++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -219,7 +219,7 @@
String getElementQualifiedName(Element element) {
var kind = element.kind;
if (kind == ElementKind.FIELD || kind == ElementKind.METHOD) {
- return '${element.enclosingElement2!.displayName}.${element.displayName}';
+ return '${element.enclosingElement3!.displayName}.${element.displayName}';
} else if (kind == ElementKind.LIBRARY) {
// Libraries may not have names, so use a path relative to the context root.
final session = element.session!;
@@ -476,7 +476,7 @@
return true;
}
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].
@@ -1379,7 +1379,7 @@
/// Checks if [element] is visible in [targetExecutableElement] or
/// [targetClassElement].
bool _isTypeParameterVisible(TypeParameterElement element) {
- var enclosing = element.enclosingElement2;
+ var enclosing = element.enclosingElement3;
return identical(enclosing, targetExecutableElement) ||
identical(enclosing, targetClassElement);
}
diff --git a/pkg/analysis_server/lib/src/services/flutter/property.dart b/pkg/analysis_server/lib/src/services/flutter/property.dart
index 4f3d763..31bda1e 100644
--- a/pkg/analysis_server/lib/src/services/flutter/property.dart
+++ b/pkg/analysis_server/lib/src/services/flutter/property.dart
@@ -463,7 +463,7 @@
var constructor = propertyExpression.constructorName.staticElement;
if (flutter != null &&
constructor != null &&
- constructor.enclosingElement2 == classEdgeInsets) {
+ constructor.enclosingElement3 == classEdgeInsets) {
var arguments = propertyExpression.argumentList.arguments;
var constructorName = constructor.name;
if (constructorName == 'all') {
diff --git a/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart b/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart
index 0a1c223..7e79982 100644
--- a/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart
+++ b/pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart
@@ -122,7 +122,7 @@
/// The set of classes for which we are currently adding properties,
/// used to prevent infinite recursion.
- final Set<ClassElement> classesBeingProcessed = <ClassElement>{};
+ final Set<InterfaceElement> elementsBeingProcessed = {};
/// The resolved unit with the widget [InstanceCreationExpression].
final ResolvedUnitResult resolvedUnit;
@@ -278,8 +278,8 @@
constructorElement ??= classDescription?.constructor;
if (constructorElement == null) return;
- var classElement = constructorElement.enclosingElement2;
- if (!classesBeingProcessed.add(classElement)) return;
+ var classElement = constructorElement.enclosingElement3;
+ if (!elementsBeingProcessed.add(classElement)) return;
var existingNamed = <String>{};
if (instanceCreation != null) {
@@ -320,7 +320,7 @@
);
}
- classesBeingProcessed.remove(classElement);
+ elementsBeingProcessed.remove(classElement);
}
void _addProperty({
@@ -520,7 +520,7 @@
}
protocol.FlutterWidgetPropertyValueEnumItem _toEnumItem(FieldElement field) {
- var classElement = field.enclosingElement2 as ClassElement;
+ var classElement = field.enclosingElement3 as ClassElement;
var libraryUriStr = '${classElement.library.source.uri}';
var documentation = getFieldDocumentation(field);
@@ -546,7 +546,7 @@
if (element is PropertyAccessorElement && element.isGetter) {
var field = element.variable;
if (field is FieldElement && field.isStatic) {
- var enclosingClass = field.enclosingElement2 as ClassElement;
+ var enclosingClass = field.enclosingElement3 as ClassElement;
if (field.isEnumConstant ||
_flutter.isExactAlignment(enclosingClass) ||
_flutter.isExactAlignmentDirectional(enclosingClass)) {
diff --git a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
index 6d6ec55..e411d2d 100644
--- a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
+++ b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
@@ -28,7 +28,7 @@
/// name of the constructor, unless the constructor is a named constructor in
/// which '<class-name>.<constructor-name>' is returned.
String _computeConstructorElementName(ConstructorElement element) {
- var name = element.enclosingElement2.name;
+ var name = element.enclosingElement3.name;
var constructorName = element.name;
if (constructorName.isNotEmpty) {
name = '$name.$constructorName';
@@ -288,7 +288,7 @@
// anchor- defines/binding
addAnchorEdgesContainingEdge(
- syntacticEntity: node.name,
+ syntacticEntity: node.name2,
edges: [
schema.DEFINES_BINDING_EDGE,
],
@@ -355,7 +355,7 @@
// anchor
addAnchorEdgesContainingEdge(
- syntacticEntity: node.name,
+ syntacticEntity: node.name2,
edges: [
schema.DEFINES_BINDING_EDGE,
],
@@ -471,9 +471,9 @@
// anchor
var start = node.returnType.offset;
var end = node.returnType.end;
- var nameNode = node.name;
- if (nameNode != null) {
- end = nameNode.end;
+ var nameToken = node.name2;
+ if (nameToken != null) {
+ end = nameToken.end;
}
addAnchorEdgesContainingEdge(
start: start,
@@ -503,7 +503,7 @@
@override
void visitDeclaredIdentifier(DeclaredIdentifier node) {
var declaredElement = node.declaredElement!;
- _handleVariableDeclaration(declaredElement, node.identifier,
+ _handleVariableDeclaration(declaredElement, node.name,
subKind: schema.LOCAL_SUBKIND, type: declaredElement.type);
// no children
@@ -517,7 +517,7 @@
// anchor- defines/binding, defines
addAnchorEdgesContainingEdge(
- syntacticEntity: node.name,
+ syntacticEntity: node.name2,
edges: [
schema.DEFINES_BINDING_EDGE,
schema.DEFINES_EDGE,
@@ -539,7 +539,7 @@
// anchor- defines/binding
addAnchorEdgesContainingEdge(
- syntacticEntity: node.name,
+ syntacticEntity: node.name2,
edges: [
schema.DEFINES_BINDING_EDGE,
],
@@ -578,7 +578,7 @@
_handleRefEdge(
element,
const <String>[schema.REF_EDGE],
- syntacticEntity: node.identifier,
+ syntacticEntity: node.name,
);
// visit children
@@ -599,7 +599,7 @@
// anchor- defines/binding
addAnchorEdgesContainingEdge(
- syntacticEntity: node.name,
+ syntacticEntity: node.name2,
edges: [
schema.DEFINES_BINDING_EDGE,
],
@@ -665,7 +665,6 @@
// visit children
_safelyVisit(node.documentationComment);
_safelyVisitList(node.metadata);
- _safelyVisit(node.identifier);
_safelyVisit(node.typeParameters);
_safelyVisit(node.parameters);
}
@@ -729,13 +728,13 @@
// We can't call _handleRefEdge as the anchor node has already been
// written out.
var enclosingEltVName = _vNameFromElement(
- constructorElement.enclosingElement2, schema.RECORD_KIND);
+ constructorElement.enclosingElement3, schema.RECORD_KIND);
var anchorVName =
_vNameAnchor(constructorName.offset, constructorName.end);
addEdge(anchorVName, schema.REF_EDGE, enclosingEltVName);
// TODO(jwren): investigate
- // assert (element.enclosingElement2 != null);
+ // assert (element.enclosingElement3 != null);
}
// visit children
_safelyVisitList(constructorName.type.typeArguments?.arguments);
@@ -752,7 +751,7 @@
// anchor- defines/binding
addAnchorEdgesContainingEdge(
- syntacticEntity: node.name,
+ syntacticEntity: node.name2,
edges: [
schema.DEFINES_BINDING_EDGE,
],
@@ -824,7 +823,7 @@
// node.identifier can be null in cases with the new generic function type
// syntax
// TODO(jwren) add test cases for this situation
- var identifier = node.identifier;
+ var identifier = node.name;
if (identifier != null) {
// The anchor and anchor edges generation are broken into two cases, the
// first case is "method(parameter_name) ...", where the parameter
@@ -920,7 +919,7 @@
// variable
var declaredElement = node.declaredElement!;
- _handleVariableDeclaration(declaredElement, node.name,
+ _handleVariableDeclaration(declaredElement, node.name2,
subKind: isLocal ? schema.LOCAL_SUBKIND : schema.FIELD_SUBKIND,
type: declaredElement.type);
@@ -1420,7 +1419,7 @@
@override
StringBuffer visitElement(Element element) {
assert(element is! MultiplyInheritedExecutableElement);
- var enclosingElt = element.enclosingElement2!;
+ var enclosingElt = element.enclosingElement3!;
var buffer = enclosingElt.accept(this)!;
if (buffer.isNotEmpty) {
buffer.write('#');
@@ -1452,7 +1451,7 @@
// It is legal to have a named constructor with the same name as a type
// parameter. So we distinguish them by using '.' between the class (or
// typedef) name and the type parameter name.
- return element.enclosingElement2!.accept(this)!
+ return element.enclosingElement3!.accept(this)!
..write('.')
..write(element.name);
}
diff --git a/pkg/analysis_server/lib/src/services/refactoring/convert_getter_to_method.dart b/pkg/analysis_server/lib/src/services/refactoring/convert_getter_to_method.dart
index dcbe33c8..e0f9237 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/convert_getter_to_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/convert_getter_to_method.dart
@@ -46,15 +46,15 @@
Future<SourceChange> createChange() async {
change = SourceChange(refactoringName);
// function
- if (element.enclosingElement2 is CompilationUnitElement) {
+ if (element.enclosingElement3 is CompilationUnitElement) {
await _updateElementDeclaration(element);
await _updateElementReferences(element);
}
// method
var field = element.variable;
if (field is FieldElement &&
- (field.enclosingElement2 is ClassElement ||
- field.enclosingElement2 is ExtensionElement)) {
+ (field.enclosingElement3 is ClassElement ||
+ field.enclosingElement3 is ExtensionElement)) {
var elements = await getHierarchyMembers(searchEngine, field);
await Future.forEach(elements, (ClassMemberElement member) async {
if (member is FieldElement) {
diff --git a/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart b/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
index 4a1812c..427b1a1 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
@@ -72,7 +72,7 @@
RefactoringStatus _checkElement() {
// check Element type
if (element is FunctionElement) {
- if (element.enclosingElement2 is! CompilationUnitElement) {
+ if (element.enclosingElement3 is! CompilationUnitElement) {
return RefactoringStatus.fatal(
'Only top-level functions can be converted to getters.');
}
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
index 5f2bacf..607535c 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
@@ -523,6 +523,7 @@
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
var parent = node.parent;
+ // ignore: deprecated_member_use
if (parent is VariableDeclaration && parent.name == node ||
parent is AssignmentExpression && parent.leftHandSide == node) {
return;
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
index 6a74379..80d5192 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
@@ -38,7 +38,7 @@
if (element is LocalVariableElement ||
element is ParameterElement ||
element is FunctionElement &&
- element.enclosingElement2 is! CompilationUnitElement) {
+ element.enclosingElement3 is! CompilationUnitElement) {
return element;
}
return null;
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart
index b8b519c..b476d7c 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart
@@ -310,8 +310,8 @@
parameter = parameter.parameter;
}
if (parameter is NormalFormalParameter) {
- _parameters.add(_Parameter(
- parameter.identifier!.name, parameter.declaredElement!.type,
+ final element = parameter.declaredElement!;
+ _parameters.add(_Parameter(element.name, element.type,
isMethodParameter: true));
}
}
@@ -669,7 +669,7 @@
enclosingClass,
...enclosingClass.allSupertypes.map((t) => t.element)
];
- return enclosingClasses.contains(element.enclosingElement2);
+ return enclosingClasses.contains(element.enclosingElement3);
}
return false;
}
diff --git a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
index 235172d..fec885d 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
@@ -212,7 +212,7 @@
@override
String? get className {
- var classElement = _methodElement?.enclosingElement2;
+ var classElement = _methodElement?.enclosingElement3;
if (classElement is ClassElement) {
return classElement.displayName;
}
@@ -805,13 +805,13 @@
} else {
return;
}
- if (element.enclosingElement2 is! ClassElement) {
+ if (element.enclosingElement3 is! ClassElement) {
return;
}
// record the implicit static or instance reference
var offset = node.offset;
if (element.isStatic) {
- var className = element.enclosingElement2.displayName;
+ var className = element.enclosingElement3.displayName;
result.addImplicitClassNameOffset(className, offset);
} else {
result.addImplicitThisOffset(offset);
diff --git a/pkg/analysis_server/lib/src/services/refactoring/refactoring.dart b/pkg/analysis_server/lib/src/services/refactoring/refactoring.dart
index b85a9ff..88c21de 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/refactoring.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/refactoring.dart
@@ -406,7 +406,7 @@
if (element is PropertyAccessorElement) {
element = element.variable;
}
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is CompilationUnitElement) {
return RenameUnitMemberRefactoringImpl(workspace, resolvedUnit, element);
}
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
index d7bd902..7661de2 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
@@ -168,7 +168,7 @@
var declarations = await searchEngine.searchMemberDeclarations(name);
for (var declaration in declarations) {
var nameElement = getSyntheticAccessorVariable(declaration.element);
- var nameClass = nameElement.enclosingElement2;
+ var nameClass = nameElement.enclosingElement3;
// the renamed Element shadows a member of a superclass
if (superClasses.contains(nameClass)) {
result.addError(
@@ -276,7 +276,7 @@
var subClasses = await searchEngine.searchAllSubtypes(elementClass);
// check shadowing of class names
for (var element in elements) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ClassElement && enclosingElement.name == name) {
result.addError(
'Renamed ${elementKind.displayName} has the same name as the '
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_constructor.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_constructor.dart
index 01ce273..134d6e4 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_constructor.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_constructor.dart
@@ -82,7 +82,7 @@
}
void _analyzePossibleConflicts(RefactoringStatus result) {
- var parentClass = element.enclosingElement2;
+ var parentClass = element.enclosingElement3;
// Check if the "newName" is the name of the enclosing class.
if (parentClass.name == newName) {
result.addError('The constructor should not have the same name '
@@ -107,7 +107,7 @@
}
Future<void> _replaceSynthetic() async {
- var classElement = element.enclosingElement2;
+ var classElement = element.enclosingElement3;
var result = await AnalysisSessionHelper(session)
.getElementDeclaration(classElement);
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart
index eb53d12..caa5679 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart
@@ -214,7 +214,7 @@
var declarations = await searchEngine.searchMemberDeclarations(name);
for (var declaration in declarations) {
var member = declaration.element;
- var declaringClass = member.enclosingElement2 as ClassElement;
+ var declaringClass = member.enclosingElement3 as ClassElement;
var memberReferences = await searchEngine.searchReferences(member);
for (var memberReference in memberReferences) {
var refElement = memberReference.element;
diff --git a/pkg/analysis_server/lib/src/services/search/hierarchy.dart b/pkg/analysis_server/lib/src/services/search/hierarchy.dart
index 0776411..e54709d 100644
--- a/pkg/analysis_server/lib/src/services/search/hierarchy.dart
+++ b/pkg/analysis_server/lib/src/services/search/hierarchy.dart
@@ -82,7 +82,7 @@
SearchEngine searchEngine, ClassMemberElement member) async {
Set<ClassMemberElement> result = HashSet<ClassMemberElement>();
// extension member
- var enclosingElement = member.enclosingElement2;
+ var enclosingElement = member.enclosingElement3;
if (enclosingElement is ExtensionElement) {
result.add(member);
return Future.value(result);
@@ -126,7 +126,7 @@
Future<List<ParameterElement>> getHierarchyNamedParameters(
SearchEngine searchEngine, ParameterElement element) async {
if (element.isNamed) {
- var method = element.enclosingElement2;
+ var method = element.enclosingElement3;
if (method is MethodElement) {
var hierarchyParameters = <ParameterElement>[];
var hierarchyMembers = await getHierarchyMembers(searchEngine, method);
diff --git a/pkg/analysis_server/lib/src/status/ast_writer.dart b/pkg/analysis_server/lib/src/status/ast_writer.dart
index af7730c..e9173b7 100644
--- a/pkg/analysis_server/lib/src/status/ast_writer.dart
+++ b/pkg/analysis_server/lib/src/status/ast_writer.dart
@@ -144,36 +144,36 @@
/// declaration.
String? _getName(AstNode node) {
if (node is ClassTypeAlias) {
- return node.name.name;
+ return node.name2.lexeme;
} else if (node is ClassDeclaration) {
- return node.name.name;
+ return node.name2.lexeme;
} else if (node is ConstructorDeclaration) {
- var name = node.name;
+ var name = node.name2;
if (name == null) {
return node.returnType.name;
} else {
- return '${node.returnType.name}.${name.name}';
+ return '${node.returnType.name}.${name.lexeme}';
}
} else if (node is ConstructorName) {
return node.toSource();
} else if (node is FieldDeclaration) {
return _getNames(node.fields);
} else if (node is FunctionDeclaration) {
- return node.name.name;
+ return node.name2.lexeme;
} else if (node is FunctionTypeAlias) {
- return node.name.name;
+ return node.name2.lexeme;
} else if (node is Identifier) {
return node.name;
} else if (node is MethodDeclaration) {
- return node.name.name;
+ return node.name2.lexeme;
} else if (node is TopLevelVariableDeclaration) {
return _getNames(node.variables);
} else if (node is TypeAnnotation) {
return node.toSource();
} else if (node is TypeParameter) {
- return node.name.name;
+ return node.name2.lexeme;
} else if (node is VariableDeclaration) {
- return node.name.name;
+ return node.name2.lexeme;
}
return null;
}
@@ -189,7 +189,7 @@
} else {
buffer.write(', ');
}
- buffer.write(variable.name.name);
+ buffer.write(variable.name2.lexeme);
}
return buffer.toString();
}
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/element.dart b/pkg/analysis_server/lib/src/utilities/extensions/element.dart
index 28512dd..cc38a89 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/element.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/element.dart
@@ -30,15 +30,15 @@
if (hasDeprecated) {
return true;
}
- var ancestor = enclosingElement2;
+ var ancestor = enclosingElement3;
if (ancestor is ClassElement) {
if (ancestor.hasDeprecated) {
return true;
}
- ancestor = ancestor.enclosingElement2;
+ ancestor = ancestor.enclosingElement3;
}
return ancestor is CompilationUnitElement &&
- ancestor.enclosingElement2.hasDeprecated;
+ ancestor.enclosingElement3.hasDeprecated;
}
/// Return this element and all its enclosing elements.
@@ -46,7 +46,7 @@
var current = this;
while (true) {
yield current;
- var enclosing = current.enclosingElement2;
+ var enclosing = current.enclosingElement3;
if (enclosing == null) {
break;
}
@@ -69,7 +69,7 @@
if (name != 'cast') {
return false;
}
- var definingClass = enclosingElement2;
+ var definingClass = enclosingElement3;
if (definingClass is! ClassElement) {
return false;
}
@@ -85,7 +85,7 @@
if (name != 'toList') {
return false;
}
- var definingClass = enclosingElement2;
+ var definingClass = enclosingElement3;
if (definingClass is! ClassElement) {
return false;
}
diff --git a/pkg/analysis_server/lib/src/utilities/flutter.dart b/pkg/analysis_server/lib/src/utilities/flutter.dart
index c425391..04f94a6 100644
--- a/pkg/analysis_server/lib/src/utilities/flutter.dart
+++ b/pkg/analysis_server/lib/src/utilities/flutter.dart
@@ -192,7 +192,7 @@
/// Return the presentation for the given Flutter `Widget` creation [node].
String? getWidgetPresentationText(InstanceCreationExpression node) {
- var element = node.constructorName.staticElement?.enclosingElement2;
+ var element = node.constructorName.staticElement?.enclosingElement3;
if (!isWidget(element)) {
return null;
}
@@ -486,8 +486,8 @@
/// Return `true` if the given [element] is the Flutter class `Widget`, or its
/// subtype.
- bool isWidget(ClassElement? element) {
- if (element == null) {
+ bool isWidget(InterfaceElement? element) {
+ if (element is! ClassElement) {
return false;
}
if (_isExactWidget(element, _nameWidget, _uriFramework)) {
@@ -504,7 +504,7 @@
/// Return `true` if the given [expr] is a constructor invocation for a
/// class that has the Flutter class `Widget` as a superclass.
bool isWidgetCreation(InstanceCreationExpression? expr) {
- var element = expr?.constructorName.staticElement?.enclosingElement2;
+ var element = expr?.constructorName.staticElement?.enclosingElement3;
return isWidget(element);
}
@@ -555,7 +555,9 @@
/// Return `true` if the given [element] is the exact [type] defined in the
/// file with the given [uri].
- bool _isExactWidget(ClassElement? element, String type, Uri uri) {
- return element != null && element.name == type && element.source.uri == uri;
+ bool _isExactWidget(InterfaceElement? element, String type, Uri uri) {
+ return element is ClassElement &&
+ element.name == type &&
+ element.source.uri == uri;
}
}
diff --git a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
index a1aa517..8887975 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
@@ -503,7 +503,6 @@
assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'AAA<int>.name(');
assertHasRegion(HighlightRegionType.CLASS, 'int>(');
assertHasRegion(HighlightRegionType.CLASS, 'int>.name(');
- assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'name(p)');
assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'name(42)');
}
diff --git a/pkg/analysis_server/test/integration/linter/lint_names_test.dart b/pkg/analysis_server/test/integration/linter/lint_names_test.dart
index 1b8e5d0..2372824 100644
--- a/pkg/analysis_server/test/integration/linter/lint_names_test.dart
+++ b/pkg/analysis_server/test/integration/linter/lint_names_test.dart
@@ -32,8 +32,8 @@
throw Exception(parseResult.errors);
}
- var lintNamesClass = parseResult.unit.declarations
- .firstWhere((m) => m is ClassDeclaration && m.name.name == 'LintNames');
+ var lintNamesClass = parseResult.unit.declarations.firstWhere(
+ (m) => m is ClassDeclaration && m.name2.lexeme == 'LintNames');
var collector = _FixCollector();
lintNamesClass.accept(collector);
@@ -65,7 +65,7 @@
@override
void visitFieldDeclaration(FieldDeclaration node) {
for (var v in node.fields.variables) {
- lintNames.add(v.name.name);
+ lintNames.add(v.name2.lexeme);
}
}
}
diff --git a/pkg/analysis_server/test/plugin/protocol_dart_test.dart b/pkg/analysis_server/test/plugin/protocol_dart_test.dart
index a0e22e1..57097ed 100644
--- a/pkg/analysis_server/test/plugin/protocol_dart_test.dart
+++ b/pkg/analysis_server/test/plugin/protocol_dart_test.dart
@@ -255,7 +255,7 @@
expect(element.parameters, isNull);
expect(element.returnType, '_E1');
// TODO(danrubel) determine why enum constant is not marked as deprecated
- //engine.ClassElement classElement = engineElement.enclosingElement2;
+ //engine.ClassElement classElement = engineElement.enclosingElement3;
//expect(classElement.isDeprecated, isTrue);
expect(
element.flags,
diff --git a/pkg/analysis_server/test/services/refactoring/abstract_rename.dart b/pkg/analysis_server/test/services/refactoring/abstract_rename.dart
index 26676b3..dab7e2c 100644
--- a/pkg/analysis_server/test/services/refactoring/abstract_rename.dart
+++ b/pkg/analysis_server/test/services/refactoring/abstract_rename.dart
@@ -6,7 +6,7 @@
import 'package:analysis_server/src/services/refactoring/refactoring.dart';
import 'package:analyzer/dart/ast/ast.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:test/test.dart';
@@ -41,7 +41,7 @@
/// the [SimpleIdentifier] at the given [search] pattern.
void createRenameRefactoringAtString(String search) {
var identifier = findNode.simple(search);
- var element = identifier.writeOrReadElement;
+ var element = ElementLocator.locate(identifier);
if (element is PrefixElement) {
element = getImportElement(identifier);
}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/element_matcher_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/element_matcher_test.dart
index c39c4b6..f050c77 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/element_matcher_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/element_matcher_test.dart
@@ -23,7 +23,7 @@
List<ElementKind>? expectedKinds,
List<String>? expectedUris}) {
var node = findNode.any(search);
- var matchers = ElementMatcher.matchersForNode(node);
+ var matchers = ElementMatcher.matchersForNode(node, node.beginToken);
expect(matchers, hasLength(1));
var matcher = matchers[0];
if (expectedUris != null) {
diff --git a/pkg/analysis_server/test/src/utilities/flutter_test.dart b/pkg/analysis_server/test/src/utilities/flutter_test.dart
index d616586..67cc038 100644
--- a/pkg/analysis_server/test/src/utilities/flutter_test.dart
+++ b/pkg/analysis_server/test/src/utilities/flutter_test.dart
@@ -544,7 +544,7 @@
for (var topDeclaration in unit.declarations) {
if (topDeclaration is TopLevelVariableDeclaration) {
for (var variable in topDeclaration.variables.variables) {
- if (variable.name.name == name) {
+ if (variable.name2.lexeme == name) {
return variable;
}
}
diff --git a/pkg/analysis_server/tool/bulk_fix/parse_utils.dart b/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
index 84cf49b..033dc78 100644
--- a/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
+++ b/pkg/analysis_server/tool/bulk_fix/parse_utils.dart
@@ -33,10 +33,10 @@
if (classElement != null &&
classElement.allSupertypes.any(
(element) => element.element.name == 'CorrectionProducer')) {
- var correctionName = classDecl.name.name;
+ var correctionName = classDecl.name2.lexeme;
for (var method in classDecl.members.whereType<MethodDeclaration>()) {
- if (method.name.name == 'canBeAppliedInBulk') {
+ if (method.name2.lexeme == 'canBeAppliedInBulk') {
var hasComment =
method.returnType?.beginToken.precedingComments != null;
diff --git a/pkg/analysis_server/tool/code_completion/code_metrics.dart b/pkg/analysis_server/tool/code_completion/code_metrics.dart
index 051f919..c30111a 100644
--- a/pkg/analysis_server/tool/code_completion/code_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/code_metrics.dart
@@ -307,7 +307,7 @@
'documentationComment': node.documentationComment,
'metadata': node.metadata,
'abstractKeyword': node.abstractKeyword,
- 'name': node.name,
+ 'name': node.name2,
'typeParameters': node.typeParameters,
'extendsClause': node.extendsClause,
'withClause': node.withClause,
@@ -324,7 +324,7 @@
'documentationComment': node.documentationComment,
'metadata': node.metadata,
'abstractKeyword': node.abstractKeyword,
- 'name': node.name,
+ 'name': node.name2,
'typeParameters': node.typeParameters,
'superclass': node.superclass,
'withClause': node.withClause,
@@ -387,7 +387,7 @@
'constKeyword': node.constKeyword,
'factoryKeyword': node.factoryKeyword,
'returnType': node.returnType,
- 'name': node.name,
+ 'name': node.name2,
'parameters': node.parameters,
'initializers': node.initializers,
'redirectedConstructor': node.redirectedConstructor,
@@ -428,7 +428,7 @@
_visitChildren(node, {
'keyword': node.keyword,
'type': node.type,
- 'identifier': node.identifier,
+ 'name': node.name,
});
super.visitDeclaredIdentifier(node);
}
@@ -482,7 +482,7 @@
_visitChildren(node, {
'documentationComment': node.documentationComment,
'metadata': node.metadata,
- 'name': node.name,
+ 'name': node.name2,
});
super.visitEnumConstantDeclaration(node);
}
@@ -492,7 +492,7 @@
_visitChildren(node, {
'documentationComment': node.documentationComment,
'metadata': node.metadata,
- 'name': node.name,
+ 'name': node.name2,
'constants': node.constants,
});
super.visitEnumDeclaration(node);
@@ -539,7 +539,7 @@
@override
void visitExtensionDeclaration(ExtensionDeclaration node) {
_visitChildren(node, {
- 'name': node.name,
+ 'name': node.name2,
'typeParameters': node.typeParameters,
'extendedType': node.extendedType,
'member': node.members,
@@ -579,7 +579,7 @@
'keyword': node.keyword,
'type': node.type,
'thisKeyword': node.thisKeyword,
- 'identifier': node.identifier,
+ 'name': node.name,
'typeParameters': node.typeParameters,
'parameters': node.parameters,
'question': node.question,
@@ -660,7 +660,7 @@
'metadata': node.metadata,
'externalKeyword': node.externalKeyword,
'propertyKeyword': node.propertyKeyword,
- 'name': node.name,
+ 'name': node.name2,
'functionExpression': node.functionExpression,
'returnType': node.returnType,
});
@@ -701,7 +701,7 @@
'documentationComment': node.documentationComment,
'metadata': node.metadata,
'returnType': node.returnType,
- 'name': node.name,
+ 'name': node.name2,
'typeParameters': node.typeParameters,
'parameters': node.parameters,
});
@@ -713,7 +713,7 @@
_visitChildren(node, {
'covariantKeyword': node.covariantKeyword,
'returnType': node.returnType,
- 'identifier': node.identifier,
+ 'name': node.name,
'typeParameters': node.typeParameters,
'parameters': node.parameters,
'question': node.question,
@@ -737,7 +737,7 @@
_visitChildren(node, {
'documentationComment': node.documentationComment,
'metadata': node.metadata,
- 'name': node.name,
+ 'name': node.name2,
'typeParameters': node.typeParameters,
'functionType': node.functionType,
});
@@ -910,7 +910,7 @@
'externalKeyword': node.externalKeyword,
'modifierKeyword': node.modifierKeyword,
'returnType': node.returnType,
- 'name': node.name,
+ 'name': node.name2,
'operatorKeyword': node.operatorKeyword,
'typeParameters': node.typeParameters,
'parameters': node.parameters,
@@ -935,7 +935,7 @@
_visitChildren(node, {
'documentationComment': node.documentationComment,
'metadata': node.metadata,
- 'name': node.name,
+ 'name': node.name2,
'typeParameters': node.typeParameters,
'onClause': node.onClause,
'implementsClause': node.implementsClause,
@@ -1111,7 +1111,7 @@
'covariantKeyword': node.covariantKeyword,
'keyword': node.keyword,
'type': node.type,
- 'identifier': node.identifier,
+ 'name': node.name,
});
super.visitSimpleFormalParameter(node);
}
@@ -1232,7 +1232,7 @@
@override
void visitTypeParameter(TypeParameter node) {
_visitChildren(node, {
- 'name': node.name,
+ 'name': node.name2,
'bound': node.bound,
});
super.visitTypeParameter(node);
@@ -1249,7 +1249,7 @@
_visitChildren(node, {
'documentationComment': node.documentationComment,
'metadata': node.metadata,
- 'name': node.name,
+ 'name': node.name2,
'initializer': node.initializer,
});
super.visitVariableDeclaration(node);
diff --git a/pkg/analysis_server/tool/code_completion/completion_metrics.dart b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
index 2bc9c51..cf0c112 100644
--- a/pkg/analysis_server/tool/code_completion/completion_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
@@ -1699,7 +1699,7 @@
var entity = expectedCompletion.syntacticEntity;
var element = _getElement(entity);
if (element != null) {
- var parent = element.enclosingElement2;
+ var parent = element.enclosingElement3;
if (parent is ClassElement || parent is ExtensionElement) {
if (_isStatic(element)) {
return CompletionGroup.staticMember;
diff --git a/pkg/analysis_server/tool/code_completion/flutter_metrics.dart b/pkg/analysis_server/tool/code_completion/flutter_metrics.dart
index 6bba840..fdd758e 100644
--- a/pkg/analysis_server/tool/code_completion/flutter_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/flutter_metrics.dart
@@ -144,7 +144,7 @@
throw StateError(
'Unresolved constructor name: ${node.constructorName}');
}
- var childWidget = element.enclosingElement2.name;
+ var childWidget = element.enclosingElement3.name;
if (!element.librarySource.uri
.toString()
.startsWith('package:flutter/')) {
diff --git a/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart b/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart
index 647850c..256995e 100644
--- a/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart
+++ b/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart
@@ -110,7 +110,7 @@
if (rhsType != null && !rhsType.isDynamic) {
// Record the name with the type.
data.recordImpliedType(
- node.name.name,
+ node.name2.lexeme,
rhsType.getDisplayString(withNullability: false),
);
}
diff --git a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
index 8683e81..34fb4a9 100644
--- a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
@@ -968,9 +968,9 @@
data.recordPercentage(
'Methods with type parameters', node.typeParameters != null);
var element = node.declaredElement!;
- if (!element.isStatic && element.enclosingElement2 is ClassElement) {
+ if (!element.isStatic && element.enclosingElement3 is ClassElement) {
var overriddenMembers = inheritanceManager.getOverridden2(
- element.enclosingElement2 as ClassElement,
+ element.enclosingElement3 as ClassElement,
Name(element.librarySource.uri, element.name));
if (overriddenMembers != null) {
// Consider limiting this to the most immediate override. If the
@@ -993,7 +993,7 @@
if (node.target is SuperExpression) {
var enclosingMethod = node.thisOrAncestorOfType<MethodDeclaration>();
if (enclosingMethod != null) {
- if (enclosingMethod.name.name == node.methodName.name) {
+ if (enclosingMethod.name2.lexeme == node.methodName.name) {
data.recordTypeMatch('super invocation member', 'same');
} else {
data.recordTypeMatch('super invocation member', 'different');
@@ -1120,7 +1120,7 @@
if (node.target is SuperExpression) {
var enclosingMethod = node.thisOrAncestorOfType<MethodDeclaration>();
if (enclosingMethod != null) {
- if (enclosingMethod.name.name == node.propertyName.name) {
+ if (enclosingMethod.name2.lexeme == node.propertyName.name) {
data.recordTypeMatch('super property access member', 'same');
} else {
data.recordTypeMatch('super property access member', 'different');
@@ -1406,7 +1406,7 @@
Element? currentElement = element;
while (currentElement != enclosingLibrary) {
depth++;
- currentElement = currentElement?.enclosingElement2;
+ currentElement = currentElement?.enclosingElement3;
}
return depth;
}
@@ -1688,7 +1688,7 @@
var reference = _leftMostIdentifier(node);
var element = reference?.staticElement;
if (element is ParameterElement) {
- var definingElement = element.enclosingElement2!;
+ var definingElement = element.enclosingElement3!;
var depth = _parameterReferenceDepth(node, definingElement);
_recordDistance('function depth of referenced parameter', depth);
} else if (element is LocalVariableElement) {
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 3a74a43..f602efc8 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -14,6 +14,9 @@
* Deprecated `CatchClause.exceptionParameter` and `CatchClause.stackTraceParameter`.
Use `exceptionParameter2` and `stackTraceParameter2` instead.
* Added `FileResult.isAugmentation` and `isLibrary` to complement `isPart`.
+* Deprecated 'XyzDeclaration.name' in AST, use `name2` and `declaredElement` instead.
+* Deprecated `Element.enclosingElement2`, use `enclosingElement3` instead. The meaningful change is that
+ `ConstructorElement.enclosingElement3` returns now `IntefaceElement`, not `ClassElement`.
## 4.3.1
* Fix `identifier` for `LibraryExportElement` and `LibraryImportElement`.
diff --git a/pkg/analyzer/doc/tutorial/ast.md b/pkg/analyzer/doc/tutorial/ast.md
index 5206b39..145e975 100644
--- a/pkg/analyzer/doc/tutorial/ast.md
+++ b/pkg/analyzer/doc/tutorial/ast.md
@@ -90,19 +90,19 @@
void printMembers(CompilationUnit unit) {
for (CompilationUnitMember unitMember in unit.declarations) {
if (unitMember is ClassDeclaration) {
- print(unitMember.name.name);
+ print(unitMember.name2.lexeme);
for (ClassMember classMember in unitMember.members) {
if (classMember is MethodDeclaration) {
- print(' ${classMember.name}');
+ print(' ${classMember.name2.lexeme}');
} else if (classMember is FieldDeclaration) {
for (VariableDeclaration field in classMember.fields.variables) {
- print(' ${field.name.name}');
+ print(' ${field.name2.lexeme}');
}
} else if (classMember is ConstructorDeclaration) {
- if (classMember.name == null) {
- print(' ${unitMember.name.name}');
+ if (classMember.name2 == null) {
+ print(' ${unitMember.name2.lexeme}');
} else {
- print(' ${unitMember.name.name}.${classMember.name.name}');
+ print(' ${unitMember.name2.lexeme}.${classMember.name2.lexeme}');
}
}
}
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index f1e1596..3bfb26c 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -789,7 +789,7 @@
/// | 'on' type catchPart? [Block]
///
/// catchPart ::=
-/// 'catch' '(' [SimpleIdentifier] (',' [SimpleIdentifier])? ')'
+/// 'catch' '(' [CatchClauseParameter] (',' [CatchClauseParameter])? ')'
///
/// Clients may not extend, implement or mix-in this class.
abstract class CatchClause implements AstNode {
@@ -851,7 +851,7 @@
/// The declaration of a class augmentation.
///
/// classAugmentationDeclaration ::=
-/// 'augment' 'class' [SimpleIdentifier] [TypeParameterList]?
+/// 'augment' 'class' name [TypeParameterList]?
/// [ExtendsClause]? [WithClause]? [ImplementsClause]?
/// '{' [ClassMember]* '}'
///
@@ -869,7 +869,7 @@
/// The declaration of a class.
///
/// classDeclaration ::=
-/// 'abstract'? 'class' [SimpleIdentifier] [TypeParameterList]?
+/// 'abstract'? 'class' name [TypeParameterList]?
/// [ExtendsClause]? [WithClause]? [ImplementsClause]?
/// '{' [ClassMember]* '}'
///
@@ -986,7 +986,7 @@
/// A class type alias.
///
/// classTypeAlias ::=
-/// [SimpleIdentifier] [TypeParameterList]? '=' 'abstract'? mixinApplication
+/// name [TypeParameterList]? '=' 'abstract'? mixinApplication
///
/// mixinApplication ::=
/// [TypeName] [WithClause] [ImplementsClause]? ';'
@@ -1011,9 +1011,6 @@
@Deprecated('Use abstractKeyword instead')
bool get isAbstract;
- @override
- SimpleIdentifier get name;
-
/// Return the name of the superclass of the class being declared.
NamedType get superclass;
@@ -1339,7 +1336,7 @@
/// | 'external'? 'const' constructorName formalParameterList initializerList?
///
/// constructorName ::=
-/// [SimpleIdentifier] ('.' [SimpleIdentifier])?
+/// [SimpleIdentifier] ('.' name)?
///
/// factoryName ::=
/// [Identifier] ('.' [SimpleIdentifier])?
@@ -1371,8 +1368,13 @@
/// Return the name of the constructor, or `null` if the constructor being
/// declared is unnamed.
+ @Deprecated('Use name2 instead')
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.
FormalParameterList get parameters;
@@ -1545,6 +1547,7 @@
LocalVariableElement? get declaredElement;
/// Return the name of the variable being declared.
+ @Deprecated('Use identifier2 instead')
SimpleIdentifier get identifier;
/// Return `true` if this variable was declared with the 'const' modifier.
@@ -1559,6 +1562,9 @@
/// keyword, or `null` if no keyword was used.
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
/// parameter does not have a declared type.
TypeAnnotation? get type;
@@ -1734,13 +1740,17 @@
ConstructorElement? get constructorElement;
/// Return the name of the constant.
+ @Deprecated('Use name2 instead')
SimpleIdentifier get name;
+
+ /// Return the name of the constant.
+ Token get name2;
}
/// The declaration of an enumeration.
///
/// enumType ::=
-/// metadata 'enum' [SimpleIdentifier] [TypeParameterList]?
+/// metadata 'enum' name [TypeParameterList]?
/// [WithClause]? [ImplementsClause]? '{' [SimpleIdentifier]
/// (',' [SimpleIdentifier])* (';' [ClassMember]+)? '}'
///
@@ -1765,9 +1775,6 @@
/// Return the members declared by the enumeration.
NodeList<ClassMember> get members;
- @override
- SimpleIdentifier get name;
-
/// Return the right curly bracket.
Token get rightBracket;
@@ -1946,8 +1953,13 @@
/// Return the name of the extension, or `null` if the extension does not have
/// a name.
+ @Deprecated('Use name2 instead')
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.
Token get onKeyword;
@@ -2061,10 +2073,11 @@
///
/// fieldFormalParameter ::=
/// ('final' [TypeAnnotation] | 'const' [TypeAnnotation] | 'var' | [TypeAnnotation])?
-/// 'this' '.' [SimpleIdentifier] ([TypeParameterList]? [FormalParameterList])?
+/// 'this' '.' name ([TypeParameterList]? [FormalParameterList])?
///
/// Clients may not extend, implement or mix-in this class.
abstract class FieldFormalParameter implements NormalFormalParameter {
+ @Deprecated('Use identifier2 instead')
@override
SimpleIdentifier get identifier;
@@ -2072,6 +2085,9 @@
/// keyword, or `null` if no keyword was used.
Token? get keyword;
+ @override
+ Token get name;
+
/// Return the parameters of the function-typed parameter, or `null` if this
/// is not a function-typed field formal parameter.
FormalParameterList? get parameters;
@@ -2190,6 +2206,7 @@
/// 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.
+ @Deprecated('Use identifier2 instead')
SimpleIdentifier? get identifier;
/// Return `true` if this parameter was declared with the 'const' modifier.
@@ -2247,6 +2264,11 @@
/// Return the annotations associated with this parameter.
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.
Token? get requiredKeyword;
}
@@ -2448,7 +2470,7 @@
/// | functionSignature [FunctionBody]
///
/// functionSignature ::=
-/// [Type]? ('get' | 'set')? [SimpleIdentifier] [FormalParameterList]
+/// [Type]? ('get' | 'set')? name [FormalParameterList]
///
/// Clients may not extend, implement or mix-in this class.
abstract class FunctionDeclaration implements NamedCompilationUnitMember {
@@ -2468,9 +2490,6 @@
/// Return `true` if this function declares a setter.
bool get isSetter;
- @override
- SimpleIdentifier get name;
-
/// Return the token representing the 'get' or 'set' keyword, or `null` if
/// this is a function declaration rather than a property declaration.
Token? get propertyKeyword;
@@ -2592,14 +2611,18 @@
/// A function-typed formal parameter.
///
/// functionSignature ::=
-/// [TypeAnnotation]? [SimpleIdentifier] [TypeParameterList]?
+/// [TypeAnnotation]? name [TypeParameterList]?
/// [FormalParameterList] '?'?
///
/// Clients may not extend, implement or mix-in this class.
abstract class FunctionTypedFormalParameter implements NormalFormalParameter {
+ @Deprecated('Use identifier2 instead')
@override
SimpleIdentifier get identifier;
+ @override
+ Token get name;
+
/// Return the parameters of the function-typed parameter.
FormalParameterList get parameters;
@@ -2666,7 +2689,7 @@
/// A generic type alias.
///
/// functionTypeAlias ::=
-/// metadata 'typedef' [SimpleIdentifier] [TypeParameterList]? = [FunctionType] ';'
+/// metadata 'typedef' name [TypeParameterList]? = [FunctionType] ';'
///
/// Clients may not extend, implement or mix-in this class.
abstract class GenericTypeAlias implements TypeAlias {
@@ -3394,8 +3417,12 @@
Token? get modifierKeyword;
/// Return the name of the method.
+ @Deprecated('Use name2 instead')
SimpleIdentifier get name;
+ /// Return the name of the method.
+ Token get name2;
+
/// Return the token representing the 'operator' keyword, or `null` if this
/// method does not declare an operator.
Token? get operatorKeyword;
@@ -3480,7 +3507,7 @@
/// The declaration of a mixin.
///
/// mixinDeclaration ::=
-/// metadata? 'mixin' [SimpleIdentifier] [TypeParameterList]?
+/// metadata? 'mixin' name [TypeParameterList]?
/// [OnClause]? [ImplementsClause]? '{' [ClassMember]* '}'
///
/// Clients may not extend, implement or mix-in this class.
@@ -3498,7 +3525,11 @@
/// Clients may not extend, implement or mix-in this class.
abstract class NamedCompilationUnitMember implements CompilationUnitMember {
/// Return the name of the member being declared.
+ @Deprecated('Use name2 instead')
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
@@ -4295,10 +4326,11 @@
///
/// superFormalParameter ::=
/// ('final' [TypeAnnotation] | 'const' [TypeAnnotation] | 'var' | [TypeAnnotation])?
-/// 'super' '.' [SimpleIdentifier] ([TypeParameterList]? [FormalParameterList])?
+/// 'super' '.' name ([TypeParameterList]? [FormalParameterList])?
///
/// Clients may not extend, implement or mix-in this class.
abstract class SuperFormalParameter implements NormalFormalParameter {
+ @Deprecated('Use identifier2 instead')
@override
SimpleIdentifier get identifier;
@@ -4306,6 +4338,9 @@
/// keyword, or `null` if no keyword was used.
Token? get keyword;
+ @override
+ Token get name;
+
/// Return the parameters of the function-typed parameter, or `null` if this
/// is not a function-typed field formal parameter.
FormalParameterList? get parameters;
@@ -4508,9 +4543,6 @@
///
/// Clients may not extend, implement or mix-in this class.
abstract class TypeAlias implements NamedCompilationUnitMember {
- @override
- SimpleIdentifier get name;
-
/// Return the semicolon terminating the declaration.
Token get semicolon;
@@ -4594,7 +4626,7 @@
/// A type parameter.
///
/// typeParameter ::=
-/// [SimpleIdentifier] ('extends' [TypeAnnotation])?
+/// name ('extends' [TypeAnnotation])?
///
/// Clients may not extend, implement or mix-in this class.
abstract class TypeParameter implements Declaration {
@@ -4610,7 +4642,11 @@
Token? get extendsKeyword;
/// Return the name of the type parameter.
+ @Deprecated('Use name2 instead')
SimpleIdentifier get name;
+
+ /// Return the name of the type parameter.
+ Token get name2;
}
/// Type parameters within a declaration.
@@ -4669,7 +4705,7 @@
/// [VariableDeclarationList].
///
/// variableDeclaration ::=
-/// [SimpleIdentifier] ('=' [Expression])?
+/// name ('=' [Expression])?
///
/// Clients may not extend, implement or mix-in this class.
// TODO(paulberry): the grammar does not allow metadata to be associated with a
@@ -4701,7 +4737,11 @@
bool get isLate;
/// Return the name of the variable being declared.
+ @Deprecated('Use name2 instead')
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.
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index a6b2d79..8305498 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -57,13 +57,17 @@
/// Clients may not extend, implement or mix-in this class.
@experimental
abstract class AugmentationImportElement implements _ExistingElement {
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElement get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElement get enclosingElement2;
+ @override
+ LibraryOrAugmentationElement get enclosingElement3;
+
/// Returns the [LibraryAugmentationElement], if [uri] is a
/// [DirectiveUriWithAugmentation].
LibraryAugmentationElement? get importedAugmentation;
@@ -214,13 +218,17 @@
// TODO(brianwilkerson) Either remove this class or rename it to something
// more correct.
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement2;
+ @override
+ Element get enclosingElement3;
+
/// Return `true` if this element is a static element. A static element is an
/// element that is not associated with a particular instance, but rather with
/// an entire library or class.
@@ -251,14 +259,18 @@
/// unit.
List<ClassElement> get classes;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryElement get enclosingElement;
- /// Return the library, or library augmentation that encloses this unit.
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElement get enclosingElement2;
+ /// Return the library, or library augmentation that encloses this unit.
+ @override
+ LibraryOrAugmentationElement get enclosingElement3;
+
/// Return a list containing all of the enums contained in this compilation
/// unit.
List<ClassElement> get enums;
@@ -330,13 +342,17 @@
@override
String get displayName;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
ClassElement get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
ClassElement get enclosingElement2;
+ @override
+ InterfaceElement get enclosingElement3;
+
/// Return `true` if this constructor is a const constructor.
bool get isConst;
@@ -480,14 +496,20 @@
/// Return the element that either physically or logically encloses this
/// element. This will be `null` if this element is a library because
/// libraries are the top-level elements in the model.
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
Element? get enclosingElement;
/// Return the element that either physically or logically encloses this
/// element. This will be `null` if this element is a library because
/// libraries are the top-level elements in the model.
+ @Deprecated('Use enclosingElement3 instead')
Element? get enclosingElement2;
+ /// Return the element that either physically or logically encloses this
+ /// element. This will be `null` if this element is a library because
+ /// libraries are the top-level elements in the model.
+ Element? get enclosingElement3;
+
/// Return `true` if this element has an annotation of the form
/// `@alwaysThrows`.
bool get hasAlwaysThrows;
@@ -1090,13 +1112,17 @@
@override
String get displayName;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement2;
+ @override
+ Element get enclosingElement3;
+
/// Return `true` if this executable element did not have an explicit return
/// type specified for it in the original source.
bool get hasImplicitReturnType;
@@ -1158,13 +1184,17 @@
/// declared in this extension.
List<PropertyAccessorElement> get accessors;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElement get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElement get enclosingElement2;
+ @override
+ CompilationUnitElement get enclosingElement3;
+
/// Return the type that is extended by this extension.
DartType get extendedType;
@@ -1389,13 +1419,17 @@
/// class, as is the case when this element represents an enum or a mixin.
List<ConstructorElement> get constructors;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElement get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElement get enclosingElement2;
+ @override
+ CompilationUnitElement get enclosingElement3;
+
/// Return a list containing all of the fields declared in this class.
List<FieldElement> get fields;
@@ -1430,14 +1464,18 @@
///
/// Clients may not extend, implement or mix-in this class.
abstract class LabelElement implements Element {
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
ExecutableElement get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
ExecutableElement get enclosingElement2;
@override
+ ExecutableElement get enclosingElement3;
+
+ @override
String get name;
}
@@ -1906,14 +1944,18 @@
///
/// Clients may not extend, implement or mix-in this class.
abstract class PrefixElement implements _ExistingElement {
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryElement get enclosingElement;
- /// Return the library, or library augmentation that encloses this element.
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElement get enclosingElement2;
+ /// Return the library, or library augmentation that encloses this element.
+ @override
+ LibraryOrAugmentationElement get enclosingElement3;
+
/// Return the imports that share this prefix.
@Deprecated('Use imports2 instead')
List<ImportElement> get imports;
@@ -1987,13 +2029,17 @@
@override
PropertyAccessorElement get declaration;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement2;
+ @override
+ Element get enclosingElement3;
+
/// Return `true` if this accessor represents a getter.
bool get isGetter;
@@ -2110,14 +2156,18 @@
/// a [FunctionType].
DartType get aliasedType;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElement get enclosingElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElement get enclosingElement2;
@override
+ CompilationUnitElement get enclosingElement3;
+
+ @override
String get name;
/// Produces the type resulting from instantiating this typedef with the given
diff --git a/pkg/analyzer/lib/error/listener.dart b/pkg/analyzer/lib/error/listener.dart
index acc1838..5cb89c2 100644
--- a/pkg/analyzer/lib/error/listener.dart
+++ b/pkg/analyzer/lib/error/listener.dart
@@ -86,10 +86,10 @@
// TODO(brianwilkerson) Consider extending this method to take any
// declaration and compute the correct range for the name of that
// declaration. This might make it easier to be consistent.
- if (constructor.name != null) {
+ if (constructor.name2 != null) {
var offset = constructor.returnType.offset;
reportErrorForOffset(
- code, offset, constructor.name!.end - offset, arguments);
+ code, offset, constructor.name2!.end - offset, arguments);
} else {
reportErrorForNode(code, constructor.returnType, arguments);
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/defined_names.dart b/pkg/analyzer/lib/src/dart/analysis/defined_names.dart
index d4d2ed2..a9295f5 100644
--- a/pkg/analyzer/lib/src/dart/analysis/defined_names.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/defined_names.dart
@@ -3,37 +3,38 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
/// Compute the [DefinedNames] for the given [unit].
DefinedNames computeDefinedNames(CompilationUnit unit) {
DefinedNames names = DefinedNames();
- void appendName(Set<String> names, SimpleIdentifier? node) {
- var name = node?.name;
- if (name != null && name.isNotEmpty) {
- names.add(name);
+ void appendName(Set<String> names, Token? token) {
+ var lexeme = token?.lexeme;
+ if (lexeme != null && lexeme.isNotEmpty) {
+ names.add(lexeme);
}
}
void appendClassMemberName(ClassMember member) {
if (member is MethodDeclaration) {
- appendName(names.classMemberNames, member.name);
+ appendName(names.classMemberNames, member.name2);
} else if (member is FieldDeclaration) {
for (VariableDeclaration field in member.fields.variables) {
- appendName(names.classMemberNames, field.name);
+ appendName(names.classMemberNames, field.name2);
}
}
}
void appendTopLevelName(CompilationUnitMember member) {
if (member is NamedCompilationUnitMember) {
- appendName(names.topLevelNames, member.name);
+ appendName(names.topLevelNames, member.name2);
if (member is ClassDeclaration) {
member.members.forEach(appendClassMemberName);
}
if (member is EnumDeclaration) {
for (var constant in member.constants) {
- appendName(names.classMemberNames, constant.name);
+ appendName(names.classMemberNames, constant.name2);
}
member.members.forEach(appendClassMemberName);
}
@@ -42,7 +43,7 @@
}
} else if (member is TopLevelVariableDeclaration) {
for (VariableDeclaration variable in member.variables.variables) {
- appendName(names.topLevelNames, variable.name);
+ appendName(names.topLevelNames, variable.name2);
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index 08bc00e..9d94dc4 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -910,13 +910,13 @@
if (declaration.macroKeyword != null) {
var constructors = declaration.members
.whereType<ConstructorDeclaration>()
- .map((e) => e.name?.name ?? '')
+ .map((e) => e.name2?.lexeme ?? '')
.where((e) => !e.startsWith('_'))
.toList();
if (constructors.isNotEmpty) {
macroClasses.add(
MacroClass(
- name: declaration.name.name,
+ name: declaration.name2.lexeme,
constructors: constructors,
),
);
@@ -940,21 +940,21 @@
final topLevelDeclarations = <String>{};
for (final declaration in unit.declarations) {
if (declaration is ClassDeclaration) {
- topLevelDeclarations.add(declaration.name.name);
+ topLevelDeclarations.add(declaration.name2.lexeme);
} else if (declaration is EnumDeclaration) {
- topLevelDeclarations.add(declaration.name.name);
+ topLevelDeclarations.add(declaration.name2.lexeme);
} else if (declaration is ExtensionDeclaration) {
- var name = declaration.name;
+ var name = declaration.name2;
if (name != null) {
- topLevelDeclarations.add(name.name);
+ topLevelDeclarations.add(name.lexeme);
}
} else if (declaration is FunctionDeclaration) {
- topLevelDeclarations.add(declaration.name.name);
+ topLevelDeclarations.add(declaration.name2.lexeme);
} else if (declaration is MixinDeclaration) {
- topLevelDeclarations.add(declaration.name.name);
+ topLevelDeclarations.add(declaration.name2.lexeme);
} else if (declaration is TopLevelVariableDeclaration) {
for (var variable in declaration.variables.variables) {
- topLevelDeclarations.add(variable.name.name);
+ topLevelDeclarations.add(variable.name2.lexeme);
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/index.dart b/pkg/analyzer/lib/src/dart/analysis/index.dart
index 265798f..e0ab233 100644
--- a/pkg/analyzer/lib/src/dart/analysis/index.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/index.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
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/element/element.dart';
@@ -18,7 +19,7 @@
SimpleIdentifier node,
Element? element,
) {
- if (element == null || element.enclosingElement2 != null) {
+ if (element == null || element.enclosingElement3 != null) {
return element;
}
@@ -63,7 +64,7 @@
/// Return the [CompilationUnitElement] that should be used for [element].
/// Throw [StateError] if the [element] is not linked into a unit.
CompilationUnitElement getUnitElement(Element element) {
- for (Element? e = element; e != null; e = e.enclosingElement2) {
+ for (Element? e = element; e != null; e = e.enclosingElement3) {
if (e is CompilationUnitElement) {
return e;
}
@@ -88,21 +89,21 @@
String? parameterName;
if (element is ParameterElement) {
parameterName = element.name;
- element = element.enclosingElement2!;
+ element = element.enclosingElement3!;
}
String? classMemberName;
- if (element.enclosingElement2 is ClassElement ||
- element.enclosingElement2 is ExtensionElement) {
+ if (element.enclosingElement3 is ClassElement ||
+ element.enclosingElement3 is ExtensionElement) {
classMemberName = element.name;
- element = element.enclosingElement2!;
+ element = element.enclosingElement3!;
}
String? unitMemberName;
- if (element.enclosingElement2 is CompilationUnitElement) {
+ if (element.enclosingElement3 is CompilationUnitElement) {
unitMemberName = element.name;
if (element is ExtensionElement && unitMemberName == null) {
- var enclosingUnit = element.enclosingElement2;
+ var enclosingUnit = element.enclosingElement3;
var indexOf = enclosingUnit.extensions.indexOf(element);
unitMemberName = 'extension-$indexOf';
}
@@ -139,7 +140,7 @@
} else if (element.isSynthetic) {
if (elementKind == ElementKind.CONSTRUCTOR) {
kind = IndexSyntheticElementKind.constructor;
- element = element.enclosingElement2!;
+ element = element.enclosingElement3!;
} else if (element is FunctionElement &&
element.name == FunctionElement.LOAD_LIBRARY_NAME) {
kind = IndexSyntheticElementKind.loadLibrary;
@@ -151,7 +152,7 @@
} else if (elementKind == ElementKind.GETTER ||
elementKind == ElementKind.SETTER) {
var accessor = element as PropertyAccessorElement;
- Element enclosing = element.enclosingElement2;
+ Element enclosing = element.enclosingElement3;
bool isEnumGetter = enclosing is ClassElement && enclosing.isEnum;
if (isEnumGetter && accessor.name == 'index') {
kind = IndexSyntheticElementKind.enumIndex;
@@ -166,7 +167,7 @@
element = accessor.variable;
}
} else if (element is MethodElement) {
- Element enclosing = element.enclosingElement2;
+ Element enclosing = element.enclosingElement3;
bool isEnumMethod = enclosing is ClassElement && enclosing.isEnum;
if (isEnumMethod && element.name == 'toString') {
kind = IndexSyntheticElementKind.enumToString;
@@ -464,8 +465,8 @@
/// of the given [node]. The flag [isQualified] is `true` if [node] has an
/// explicit or implicit qualifier, so cannot be shadowed by a local
/// declaration.
- void recordRelation(Element? element, IndexRelationKind kind, AstNode node,
- bool isQualified) {
+ void recordRelation(Element? element, IndexRelationKind kind,
+ SyntacticEntity node, bool isQualified) {
if (element != null) {
recordRelationOffset(
element, kind, node.offset, node.length, isQualified);
@@ -491,14 +492,14 @@
elementKind == ElementKind.TYPE_PARAMETER ||
elementKind == ElementKind.FUNCTION &&
element is FunctionElement &&
- element.enclosingElement2 is ExecutableElement ||
+ element.enclosingElement3 is ExecutableElement ||
false) {
return;
}
// Ignore named parameters of synthetic functions, e.g. created for LUB.
// These functions are not bound to a source, we cannot index them.
if (elementKind == ElementKind.PARAMETER && element is ParameterElement) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement == null || enclosingElement.isSynthetic) {
return;
}
@@ -508,7 +509,7 @@
// named parameters. Ignore them.
if (elementKind == ElementKind.PARAMETER &&
element is ParameterElement &&
- element.enclosingElement2 is GenericFunctionTypeElement) {
+ element.enclosingElement3 is GenericFunctionTypeElement) {
return;
}
// Add the relation.
@@ -564,7 +565,7 @@
if (node.extendsClause == null) {
ClassElement? objectElement = declaredElement.supertype?.element;
recordRelationOffset(objectElement, IndexRelationKind.IS_EXTENDED_BY,
- node.name.offset, 0, true);
+ node.name2.offset, 0, true);
}
recordIsAncestorOf(declaredElement);
super.visitClassDeclaration(node);
@@ -654,7 +655,7 @@
offset = constructorSelector.period.offset;
length = constructorSelector.name.end - offset;
} else {
- offset = node.name.end;
+ offset = node.name2.end;
length = 0;
}
recordRelationOffset(
@@ -674,7 +675,7 @@
@override
void visitEnumDeclaration(EnumDeclaration node) {
_addSubtype(
- node.name.name,
+ node.name2.lexeme,
withClause: node.withClause,
implementsClause: node.implementsClause,
memberNodes: node.members,
@@ -713,8 +714,7 @@
if (element is FieldFormalParameterElement) {
var field = element.field;
if (field != null) {
- recordRelation(
- field, IndexRelationKind.IS_WRITTEN_BY, node.identifier, true);
+ recordRelation(field, IndexRelationKind.IS_WRITTEN_BY, node.name, true);
}
}
@@ -861,11 +861,7 @@
}
// this.field parameter
if (element is FieldFormalParameterElement) {
- AstNode parent = node.parent!;
- IndexRelationKind kind =
- parent is FieldFormalParameter && parent.identifier == node
- ? IndexRelationKind.IS_WRITTEN_BY
- : IndexRelationKind.IS_REFERENCED_BY;
+ IndexRelationKind kind = IndexRelationKind.IS_REFERENCED_BY;
recordRelation(element.field, kind, node, true);
return;
}
@@ -901,7 +897,7 @@
var superParameter = element.superConstructorParameter;
if (superParameter != null) {
recordRelation(superParameter, IndexRelationKind.IS_REFERENCED_BY,
- node.identifier, true);
+ node.name, true);
}
}
@@ -943,8 +939,8 @@
onClause?.superclassConstraints.forEach(addSupertype);
implementsClause?.interfaces.forEach(addSupertype);
- void addMemberName(SimpleIdentifier identifier) {
- String name = identifier.name;
+ void addMemberName(Token identifier) {
+ String name = identifier.lexeme;
if (name.isNotEmpty) {
members.add(name);
}
@@ -952,10 +948,10 @@
for (ClassMember member in memberNodes) {
if (member is MethodDeclaration && !member.isStatic) {
- addMemberName(member.name);
+ addMemberName(member.name2);
} else if (member is FieldDeclaration && !member.isStatic) {
for (var field in member.fields.variables) {
- addMemberName(field.name);
+ addMemberName(field.name2);
}
}
}
@@ -968,7 +964,7 @@
/// Record the given class as a subclass of its direct superclasses.
void _addSubtypeForClassDeclaration(ClassDeclaration node) {
- _addSubtype(node.name.name,
+ _addSubtype(node.name2.lexeme,
superclass: node.extendsClause?.superclass,
withClause: node.withClause,
implementsClause: node.implementsClause,
@@ -977,7 +973,7 @@
/// Record the given class as a subclass of its direct superclasses.
void _addSubtypeForClassTypeAlis(ClassTypeAlias node) {
- _addSubtype(node.name.name,
+ _addSubtype(node.name2.lexeme,
superclass: node.superclass,
withClause: node.withClause,
implementsClause: node.implementsClause,
@@ -986,7 +982,7 @@
/// Record the given mixin as a subclass of its direct superclasses.
void _addSubtypeForMixinDeclaration(MixinDeclaration node) {
- _addSubtype(node.name.name,
+ _addSubtype(node.name2.lexeme,
onClause: node.onClause,
implementsClause: node.implementsClause,
memberNodes: node.members);
@@ -999,8 +995,8 @@
ConstructorElement? constructor) {
var seenConstructors = <ConstructorElement?>{};
while (constructor is ConstructorElementImpl && constructor.isSynthetic) {
- var enclosing = constructor.enclosingElement2;
- if (enclosing.isMixinApplication) {
+ var enclosing = constructor.enclosingElement3;
+ if (enclosing is ClassElement && enclosing.isMixinApplication) {
var superInvocation = constructor.constantInitializers
.whereType<SuperConstructorInvocation>()
.singleOrNull;
diff --git a/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart b/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart
index 945a0c8..5f37b84 100644
--- a/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
/// Compute the set of external names referenced in the [unit].
@@ -64,7 +65,7 @@
_LocalNameScope scope = _LocalNameScope(enclosing);
for (Statement statement in node.statements) {
if (statement is FunctionDeclarationStatement) {
- scope.add(statement.functionDeclaration.name);
+ scope.add(statement.functionDeclaration.name2);
} else if (statement is VariableDeclarationStatement) {
scope.addVariableNames(statement.variables);
}
@@ -80,7 +81,7 @@
if (member is FieldDeclaration) {
scope.addVariableNames(member.fields);
} else if (member is MethodDeclaration) {
- scope.add(member.name);
+ scope.add(member.name2);
}
}
return scope;
@@ -127,7 +128,7 @@
_LocalNameScope scope = _LocalNameScope(null);
for (CompilationUnitMember declaration in node.declarations) {
if (declaration is NamedCompilationUnitMember) {
- scope.add(declaration.name);
+ scope.add(declaration.name2);
} else if (declaration is TopLevelVariableDeclaration) {
scope.addVariableNames(declaration.variables);
}
@@ -135,29 +136,29 @@
return scope;
}
- void add(SimpleIdentifier? identifier) {
- if (identifier != null) {
- (names ??= <String>{}).add(identifier.name);
+ void add(Token? token) {
+ if (token != null) {
+ (names ??= <String>{}).add(token.lexeme);
}
}
void addFormalParameters(FormalParameterList? parameterList) {
if (parameterList != null) {
parameterList.parameters
- .map((p) => p is NormalFormalParameter ? p.identifier : null)
+ .map((p) => p is NormalFormalParameter ? p.name : null)
.forEach(add);
}
}
void addTypeParameters(TypeParameterList? typeParameterList) {
if (typeParameterList != null) {
- typeParameterList.typeParameters.map((p) => p.name).forEach(add);
+ typeParameterList.typeParameters.map((p) => p.name2).forEach(add);
}
}
void addVariableNames(VariableDeclarationList variableList) {
for (VariableDeclaration variable in variableList.variables) {
- add(variable.name);
+ add(variable.name2);
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/results.dart b/pkg/analyzer/lib/src/dart/analysis/results.dart
index a3d06bb..8ce9d3d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/results.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/results.dart
@@ -5,6 +5,7 @@
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.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/element/element.dart';
import 'package:analyzer/dart/element/type_provider.dart';
@@ -343,22 +344,22 @@
if (element is ClassElement) {
if (node is ClassOrMixinDeclaration) {
- if (_hasOffset(node.name)) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
} else if (node is ClassTypeAlias) {
- if (_hasOffset(node.name)) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
} else if (node is EnumDeclaration) {
- if (_hasOffset(node.name)) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
}
} else if (element is ConstructorElement) {
if (node is ConstructorDeclaration) {
- if (node.name != null) {
- if (_hasOffset(node.name)) {
+ if (node.name2 != null) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
} else {
@@ -369,48 +370,48 @@
}
} else if (element is ExtensionElement) {
if (node is ExtensionDeclaration) {
- if (_hasOffset(node.name)) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
}
} else if (element is FieldElement) {
if (node is EnumConstantDeclaration) {
- if (_hasOffset(node.name)) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
} else if (node is VariableDeclaration) {
- if (_hasOffset(node.name)) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
}
} else if (element is FunctionElement) {
- if (node is FunctionDeclaration && _hasOffset(node.name)) {
+ if (node is FunctionDeclaration && _hasOffset2(node.name2)) {
result = node;
}
} else if (element is LocalVariableElement) {
- if (node is VariableDeclaration && _hasOffset(node.name)) {
+ if (node is VariableDeclaration && _hasOffset2(node.name2)) {
result = node;
}
} else if (element is MethodElement) {
- if (node is MethodDeclaration && _hasOffset(node.name)) {
+ if (node is MethodDeclaration && _hasOffset2(node.name2)) {
result = node;
}
} else if (element is ParameterElement) {
- if (node is FormalParameter && _hasOffset(node.identifier)) {
+ if (node is FormalParameter && _hasOffset2(node.name)) {
result = node;
}
} else if (element is PropertyAccessorElement) {
if (node is FunctionDeclaration) {
- if (_hasOffset(node.name)) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
} else if (node is MethodDeclaration) {
- if (_hasOffset(node.name)) {
+ if (_hasOffset2(node.name2)) {
result = node;
}
}
} else if (element is TopLevelVariableElement) {
- if (node is VariableDeclaration && _hasOffset(node.name)) {
+ if (node is VariableDeclaration && _hasOffset2(node.name2)) {
result = node;
}
}
@@ -423,4 +424,8 @@
bool _hasOffset(AstNode? node) {
return node?.offset == _nameOffset;
}
+
+ bool _hasOffset2(Token? token) {
+ return token?.offset == _nameOffset;
+ }
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/search.dart b/pkg/analyzer/lib/src/dart/analysis/search.dart
index b0ad4c6..749d2b6 100644
--- a/pkg/analyzer/lib/src/dart/analysis/search.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/search.dart
@@ -257,7 +257,7 @@
} else if (element is PropertyInducingElement) {
return _searchReferences_Field(element, searchedFiles);
} else if (kind == ElementKind.FUNCTION || kind == ElementKind.METHOD) {
- if (element.enclosingElement2 is ExecutableElement) {
+ if (element.enclosingElement3 is ExecutableElement) {
return _searchReferences_Local(
element, (n) => n is Block, searchedFiles);
}
@@ -405,7 +405,7 @@
// Prepare the element name.
String name = element.displayName;
if (element is ConstructorElement) {
- name = element.enclosingElement2.displayName;
+ name = element.enclosingElement3.displayName;
}
// Prepare the list of files that reference the element name.
@@ -654,7 +654,7 @@
));
if (parameter.isNamed ||
parameter.isOptionalPositional ||
- parameter.enclosingElement2 is ConstructorElement) {
+ parameter.enclosingElement3 is ConstructorElement) {
results.addAll(await _searchReferences(parameter, searchedFiles));
}
return results;
@@ -914,7 +914,7 @@
return;
}
- var enclosing = element.enclosingElement2;
+ var enclosing = element.enclosingElement3;
String? className;
String? mixinName;
diff --git a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
index 20b101b..a7c7a0f 100644
--- a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
@@ -49,7 +49,7 @@
var functionExpression = declaration.functionExpression;
_addTokens(
declaration.beginToken,
- (functionExpression.parameters ?? declaration.name).endToken,
+ functionExpression.parameters?.endToken ?? declaration.name2,
);
_addFunctionBodyModifiers(functionExpression.body);
} else if (declaration is TopLevelVariableDeclaration) {
@@ -138,7 +138,7 @@
signature.addInt(_kindMethodDeclaration);
_addTokens(
node.beginToken,
- (node.parameters ?? node.name).endToken,
+ node.parameters?.endToken ?? node.name2,
);
signature.addBool(node.body is EmptyFunctionBody);
_addFunctionBodyModifiers(node.body);
@@ -212,7 +212,7 @@
signature.addInt(variables.length);
for (var variable in variables) {
- _addNode(variable.name);
+ _addToken(variable.name2);
signature.addBool(variable.initializer != null);
if (includeInitializers) {
_addNode(variable.initializer);
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 4e04433..35324b3 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -95,7 +95,10 @@
/// Initialize a newly created annotated node. Either or both of the [comment]
/// and [metadata] can be `null` if the node does not have the corresponding
/// attribute.
- AnnotatedNodeImpl(this._comment, List<Annotation>? metadata) {
+ AnnotatedNodeImpl({
+ required CommentImpl? comment,
+ required List<Annotation>? metadata,
+ }) : _comment = comment {
_becomeParentOf(_comment);
_metadata._initialize(this, metadata);
}
@@ -893,13 +896,13 @@
Token semicolon;
AugmentationImportDirectiveImpl({
- required CommentImpl? comment,
- required List<Annotation>? metadata,
+ required super.comment,
+ required super.metadata,
required this.importKeyword,
required this.augmentKeyword,
required this.semicolon,
- required StringLiteralImpl uri,
- }) : super(comment, metadata, uri) {
+ required super.uri,
+ }) {
_becomeParentOf(_uri);
}
@@ -1678,6 +1681,9 @@
/// native clause.
NativeClauseImpl? _nativeClause;
+ @override
+ ClassElement? declaredElement;
+
/// Initialize a newly created class declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the class does not have the
/// corresponding attribute. The [abstractKeyword] can be `null` if the class
@@ -1686,31 +1692,28 @@
/// and [implementsClause] can be `null` if the class does not have the
/// corresponding clause. The list of [members] can be `null` if the class
/// does not have any members.
- ClassDeclarationImpl(
- CommentImpl? comment,
- List<Annotation>? metadata,
- this.abstractKeyword,
- this.macroKeyword,
- this.augmentKeyword,
- this.classKeyword,
- SimpleIdentifierImpl name,
- TypeParameterListImpl? typeParameters,
- this._extendsClause,
- this._withClause,
- ImplementsClauseImpl? implementsClause,
- Token leftBracket,
- List<ClassMember> members,
- Token rightBracket)
- : super(comment, metadata, name, typeParameters, implementsClause,
- leftBracket, members, rightBracket) {
+ ClassDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.abstractKeyword,
+ required this.macroKeyword,
+ required this.augmentKeyword,
+ required this.classKeyword,
+ required super.name,
+ required super.typeParameters,
+ required ExtendsClauseImpl? extendsClause,
+ required WithClauseImpl? withClause,
+ required super.implementsClause,
+ required super.leftBracket,
+ required super.members,
+ required super.rightBracket,
+ }) : _extendsClause = extendsClause,
+ _withClause = withClause {
_becomeParentOf(_extendsClause);
_becomeParentOf(_withClause);
}
@override
- ClassElement? get declaredElement => _name.staticElement as ClassElement?;
-
- @override
ExtendsClauseImpl? get extendsClause => _extendsClause;
set extendsClause(ExtendsClause? extendsClause) {
@@ -1746,7 +1749,7 @@
..addToken('macroKeyword', macroKeyword)
..addToken('augmentKeyword', augmentKeyword)
..addToken('classKeyword', classKeyword)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('typeParameters', typeParameters)
..addNode('extendsClause', extendsClause)
..addNode('withClause', withClause)
@@ -1782,7 +1785,8 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_typeParameters?.accept(visitor);
_extendsClause?.accept(visitor);
_withClause?.accept(visitor);
@@ -1797,7 +1801,10 @@
/// Initialize a newly created member of a class. Either or both of the
/// [comment] and [metadata] can be `null` if the member does not have the
/// corresponding attribute.
- ClassMemberImpl(super.comment, super.metadata);
+ ClassMemberImpl({
+ required super.comment,
+ required super.metadata,
+ });
}
abstract class ClassOrMixinDeclarationImpl
@@ -1821,15 +1828,17 @@
@override
Token rightBracket;
- ClassOrMixinDeclarationImpl(
- super.comment,
- super.metadata,
- super.name,
- this._typeParameters,
- this._implementsClause,
- this.leftBracket,
- List<ClassMember> members,
- this.rightBracket) {
+ ClassOrMixinDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required super.name,
+ required TypeParameterListImpl? typeParameters,
+ required ImplementsClauseImpl? implementsClause,
+ required this.leftBracket,
+ required List<ClassMember> members,
+ required this.rightBracket,
+ }) : _typeParameters = typeParameters,
+ _implementsClause = implementsClause {
_becomeParentOf(_typeParameters);
_becomeParentOf(_implementsClause);
_members._initialize(this, members);
@@ -1886,7 +1895,7 @@
ClassMember classMember = _members[i];
if (classMember is MethodDeclaration) {
MethodDeclaration method = classMember;
- if (name == method.name.name) {
+ if (name == method.name2.lexeme) {
return method;
}
}
@@ -1935,27 +1944,33 @@
/// clause.
ImplementsClauseImpl? _implementsClause;
+ @override
+ ClassElement? declaredElement;
+
/// 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
/// have the corresponding attribute. The [typeParameters] can be `null` if
/// the class does not have any type parameters. The [abstractKeyword] can be
/// `null` if the class is not abstract. The [implementsClause] can be `null`
/// if the class does not implement any interfaces.
- ClassTypeAliasImpl(
- CommentImpl? comment,
- List<Annotation>? metadata,
- Token keyword,
- SimpleIdentifierImpl name,
- this._typeParameters,
- this.equals,
- this.abstractKeyword,
- this.macroKeyword,
- this.augmentKeyword,
- this._superclass,
- this._withClause,
- this._implementsClause,
- Token semicolon)
- : super(comment, metadata, keyword, name, semicolon) {
+ ClassTypeAliasImpl({
+ required super.comment,
+ required super.metadata,
+ required super.typedefKeyword,
+ required super.name,
+ required TypeParameterListImpl? typeParameters,
+ required this.equals,
+ required this.abstractKeyword,
+ required this.macroKeyword,
+ required this.augmentKeyword,
+ required NamedTypeImpl superclass,
+ required WithClauseImpl withClause,
+ required ImplementsClauseImpl? implementsClause,
+ required super.semicolon,
+ }) : _typeParameters = typeParameters,
+ _superclass = superclass,
+ _withClause = withClause,
+ _implementsClause = implementsClause {
_becomeParentOf(_typeParameters);
_becomeParentOf(_superclass);
_becomeParentOf(_withClause);
@@ -1963,9 +1978,6 @@
}
@override
- ClassElement? get declaredElement => _name.staticElement as ClassElement?;
-
- @override
Token get firstTokenAfterCommentAndMetadata {
return abstractKeyword ?? macroKeyword ?? augmentKeyword ?? typedefKeyword;
}
@@ -2010,7 +2022,7 @@
@override
ChildEntities get _childEntities => super._childEntities
..addToken('typedefKeyword', typedefKeyword)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('typeParameters', typeParameters)
..addToken('equals', equals)
..addToken('abstractKeyword', abstractKeyword)
@@ -2027,7 +2039,8 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_typeParameters?.accept(visitor);
_superclass.accept(visitor);
_withClause.accept(visitor);
@@ -2409,7 +2422,10 @@
/// Initialize a newly created generic compilation unit member. Either or both
/// of the [comment] and [metadata] can be `null` if the member does not have
/// the corresponding attribute.
- CompilationUnitMemberImpl(super.comment, super.metadata);
+ CompilationUnitMemberImpl({
+ required super.comment,
+ required super.metadata,
+ });
}
mixin CompoundAssignmentExpressionImpl implements CompoundAssignmentExpression {
@@ -2700,7 +2716,7 @@
/// [comment] and [metadata] can be `null` if the constructor does not have
/// the corresponding attribute. The [constKeyword] can be `null` if the
/// 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
/// [separator] can be `null` if the constructor does not have any
/// initializers and does not redirect to a different constructor. The list of
@@ -2708,20 +2724,25 @@
/// initializers. The [redirectedConstructor] can be `null` if the constructor
/// does not redirect to a different constructor. The [body] can be `null` if
/// the constructor does not have a body.
- ConstructorDeclarationImpl(
- super.comment,
- super.metadata,
- this.externalKeyword,
- this.constKeyword,
- this.factoryKeyword,
- this._returnType,
- this.period,
- this._name,
- this._parameters,
- this.separator,
- List<ConstructorInitializer>? initializers,
- this._redirectedConstructor,
- this._body) {
+ ConstructorDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.externalKeyword,
+ required this.constKeyword,
+ required this.factoryKeyword,
+ required IdentifierImpl returnType,
+ required this.period,
+ required SimpleIdentifierImpl? name,
+ required FormalParameterListImpl parameters,
+ required this.separator,
+ required List<ConstructorInitializer>? initializers,
+ required ConstructorNameImpl? redirectedConstructor,
+ required FunctionBodyImpl body,
+ }) : _returnType = returnType,
+ _name = name,
+ _parameters = parameters,
+ _redirectedConstructor = redirectedConstructor,
+ _body = body {
_becomeParentOf(_returnType);
_becomeParentOf(_name);
_becomeParentOf(_parameters);
@@ -2752,13 +2773,20 @@
@override
NodeListImpl<ConstructorInitializer> get initializers => _initializers;
+ @Deprecated('Use name2 instead')
@override
- SimpleIdentifierImpl? get name => _name;
-
- set name(SimpleIdentifier? identifier) {
- _name = _becomeParentOf(identifier as SimpleIdentifierImpl?);
+ SimpleIdentifierImpl? get name {
+ _name?.staticElement = declaredElement;
+ return _name;
}
+ set name(SimpleIdentifier? name) {
+ _name = _becomeParentOf(name as SimpleIdentifierImpl);
+ }
+
+ @override
+ Token? get name2 => _name?.token;
+
@override
FormalParameterListImpl get parameters => _parameters;
@@ -2788,7 +2816,7 @@
..addToken('factoryKeyword', factoryKeyword)
..addNode('returnType', returnType)
..addToken('period', period)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('parameters', parameters)
..addToken('separator', separator)
..addNodeList('initializers', initializers)
@@ -3123,7 +3151,10 @@
/// Initialize a newly created declaration. Either or both of the [comment]
/// and [metadata] can be `null` if the declaration does not have the
/// corresponding attribute.
- DeclarationImpl(super.comment, super.metadata);
+ DeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ });
}
/// The declaration of a single identifier.
@@ -3144,22 +3175,26 @@
/// The name of the variable being declared.
SimpleIdentifierImpl _identifier;
+ @override
+ LocalVariableElement? declaredElement;
+
/// Initialize a newly created formal parameter. Either or both of the
/// [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
/// given. The [type] must be `null` if the keyword is 'var'.
- DeclaredIdentifierImpl(super.comment, super.metadata, this.keyword,
- this._type, this._identifier) {
+ DeclaredIdentifierImpl({
+ required super.comment,
+ required super.metadata,
+ required this.keyword,
+ required TypeAnnotationImpl? type,
+ required SimpleIdentifierImpl identifier,
+ }) : _type = type,
+ _identifier = identifier {
_becomeParentOf(_type);
_becomeParentOf(_identifier);
}
@override
- LocalVariableElement? get declaredElement {
- return _identifier.staticElement as LocalVariableElement;
- }
-
- @override
Token get endToken => _identifier.endToken;
@override
@@ -3167,8 +3202,12 @@
return keyword ?? _type?.beginToken ?? _identifier.beginToken;
}
+ @Deprecated('Use name2 instead')
@override
- SimpleIdentifierImpl get identifier => _identifier;
+ SimpleIdentifierImpl get identifier {
+ _identifier.staticElement = declaredElement;
+ return _identifier;
+ }
set identifier(SimpleIdentifier identifier) {
_identifier = _becomeParentOf(identifier as SimpleIdentifierImpl);
@@ -3181,6 +3220,9 @@
bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
+ Token get name => _identifier.token;
+
+ @override
TypeAnnotationImpl? get type => _type;
set type(TypeAnnotation? type) {
@@ -3191,7 +3233,7 @@
ChildEntities get _childEntities => super._childEntities
..addToken('keyword', keyword)
..addNode('type', type)
- ..addNode('identifier', identifier);
+ ..addToken('name', name);
@override
E? accept<E>(AstVisitor<E> visitor) => visitor.visitDeclaredIdentifier(this);
@@ -3200,7 +3242,8 @@
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_type?.accept(visitor);
- _identifier.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ identifier.accept(visitor);
}
}
@@ -3279,6 +3322,7 @@
return _parameter.endToken;
}
+ @Deprecated('Use identifier2 instead')
@override
SimpleIdentifierImpl? get identifier => _parameter.identifier;
@@ -3295,6 +3339,9 @@
NodeListImpl<Annotation> get metadata => _parameter.metadata;
@override
+ Token? get name => _parameter.name;
+
+ @override
NormalFormalParameterImpl get parameter => _parameter;
set parameter(NormalFormalParameter formalParameter) {
@@ -3338,7 +3385,10 @@
/// Initialize a newly create directive. Either or both of the [comment] and
/// [metadata] can be `null` if the directive does not have the corresponding
/// attribute.
- DirectiveImpl(super.comment, super.metadata);
+ DirectiveImpl({
+ required super.comment,
+ required super.metadata,
+ });
@Deprecated('Use element2 instead')
@override
@@ -3643,6 +3693,9 @@
SimpleIdentifierImpl _name;
@override
+ FieldElement? declaredElement;
+
+ @override
final EnumConstantArgumentsImpl? arguments;
@override
@@ -3652,35 +3705,38 @@
/// the [documentationComment] and [metadata] can be `null` if the constant
/// does not have the corresponding attribute.
EnumConstantDeclarationImpl({
- required CommentImpl? documentationComment,
- required List<Annotation>? metadata,
+ required super.comment,
+ required super.metadata,
required SimpleIdentifierImpl name,
required this.arguments,
- }) : _name = name,
- super(documentationComment, metadata) {
+ }) : _name = name {
_becomeParentOf(_name);
_becomeParentOf(arguments);
}
@override
- FieldElement get declaredElement => _name.staticElement as FieldElement;
-
- @override
Token get endToken => (arguments ?? _name).endToken;
@override
Token get firstTokenAfterCommentAndMetadata => _name.beginToken;
+ @Deprecated('Use name2 instead')
@override
- SimpleIdentifierImpl get name => _name;
+ SimpleIdentifierImpl get name {
+ _name.staticElement = declaredElement;
+ return _name;
+ }
set name(SimpleIdentifier name) {
_name = _becomeParentOf(name as SimpleIdentifierImpl);
}
@override
+ Token get name2 => _name.token;
+
+ @override
ChildEntities get _childEntities => super._childEntities
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('arguments', arguments);
@override
@@ -3690,7 +3746,8 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
arguments?.accept(visitor);
}
}
@@ -3736,24 +3793,29 @@
@override
Token rightBracket;
+ @override
+ ClassElement? declaredElement;
+
/// Initialize a newly created enumeration declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The list of [constants] must contain at least
/// one value.
- EnumDeclarationImpl(
- CommentImpl? comment,
- List<Annotation>? metadata,
- this.enumKeyword,
- SimpleIdentifierImpl name,
- this._typeParameters,
- this._withClause,
- this._implementsClause,
- this.leftBracket,
- List<EnumConstantDeclaration> constants,
- this.semicolon,
- List<ClassMember> members,
- this.rightBracket)
- : super(comment, metadata, name) {
+ EnumDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.enumKeyword,
+ required super.name,
+ required TypeParameterListImpl? typeParameters,
+ required WithClauseImpl? withClause,
+ required ImplementsClauseImpl? implementsClause,
+ required this.leftBracket,
+ required List<EnumConstantDeclaration> constants,
+ required this.semicolon,
+ required List<ClassMember> members,
+ required this.rightBracket,
+ }) : _typeParameters = typeParameters,
+ _withClause = withClause,
+ _implementsClause = implementsClause {
_becomeParentOf(_typeParameters);
_becomeParentOf(_withClause);
_becomeParentOf(_implementsClause);
@@ -3765,9 +3827,6 @@
NodeListImpl<EnumConstantDeclaration> get constants => _constants;
@override
- ClassElement? get declaredElement => _name.staticElement as ClassElement?;
-
- @override
Token get endToken => rightBracket;
@override
@@ -3802,7 +3861,7 @@
// TODO(brianwilkerson) Add commas?
ChildEntities get _childEntities => super._childEntities
..addToken('enumKeyword', enumKeyword)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('typeParameters', typeParameters)
..addNode('withClause', withClause)
..addNode('implementsClause', implementsClause)
@@ -3818,7 +3877,8 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_typeParameters?.accept(visitor);
_withClause?.accept(visitor);
_implementsClause?.accept(visitor);
@@ -3849,14 +3909,15 @@
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute. The list of [combinators] can be `null` if there
/// are no combinators.
- ExportDirectiveImpl(
- super.comment,
- super.metadata,
- this.exportKeyword,
- super.libraryUri,
- super.configurations,
- super.combinators,
- super.semicolon);
+ ExportDirectiveImpl({
+ required super.comment,
+ required super.metadata,
+ required this.exportKeyword,
+ required super.uri,
+ required super.configurations,
+ required super.combinators,
+ required super.semicolon,
+ });
@Deprecated('Use element2 instead')
@override
@@ -4255,20 +4316,25 @@
ExtensionElement? _declaredElement;
- ExtensionDeclarationImpl(
- super.comment,
- super.metadata,
- this.extensionKeyword,
- this.typeKeyword,
- this._name,
- this._typeParameters,
- this.onKeyword,
- this._extendedType,
- this._showClause,
- this._hideClause,
- this.leftBracket,
- List<ClassMember> members,
- this.rightBracket) {
+ ExtensionDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.extensionKeyword,
+ required this.typeKeyword,
+ required SimpleIdentifierImpl? name,
+ required TypeParameterListImpl? typeParameters,
+ required this.onKeyword,
+ required TypeAnnotationImpl extendedType,
+ required ShowClauseImpl? showClause,
+ required HideClauseImpl? hideClause,
+ required this.leftBracket,
+ required List<ClassMember> members,
+ required this.rightBracket,
+ }) : _name = name,
+ _typeParameters = typeParameters,
+ _extendedType = extendedType,
+ _showClause = showClause,
+ _hideClause = hideClause {
_becomeParentOf(_name);
_becomeParentOf(_typeParameters);
_becomeParentOf(_extendedType);
@@ -4306,14 +4372,21 @@
@override
NodeListImpl<ClassMember> get members => _members;
+ @Deprecated('Use name2 instead')
@override
- SimpleIdentifierImpl? get name => _name;
+ SimpleIdentifierImpl? get name {
+ _name?.staticElement = declaredElement;
+ return _name;
+ }
set name(SimpleIdentifier? identifier) {
_name = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
+ Token? get name2 => _name?.token;
+
+ @override
ShowClauseImpl? get showClause => _showClause;
set showClause(ShowClause? showClause) {
@@ -4330,7 +4403,7 @@
@override
ChildEntities get _childEntities => ChildEntities()
..addToken('extensionKeyword', extensionKeyword)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('typeParameters', typeParameters)
..addToken('onKeyword', onKeyword)
..addNode('extendedType', extendedType)
@@ -4345,6 +4418,7 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
+ // ignore: deprecated_member_use_from_same_package
name?.accept(visitor);
_typeParameters?.accept(visitor);
_extendedType.accept(visitor);
@@ -4483,16 +4557,17 @@
/// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The [staticKeyword] can be `null` if the
/// field is not a static field.
- FieldDeclarationImpl(
- super.comment,
- super.metadata,
- this.abstractKeyword,
- this.augmentKeyword,
- this.covariantKeyword,
- this.externalKeyword,
- this.staticKeyword,
- this._fieldList,
- this.semicolon) {
+ FieldDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.abstractKeyword,
+ required this.augmentKeyword,
+ required this.covariantKeyword,
+ required this.externalKeyword,
+ required this.staticKeyword,
+ required VariableDeclarationListImpl fieldList,
+ required this.semicolon,
+ }) : _fieldList = fieldList {
_becomeParentOf(_fieldList);
}
@@ -4617,9 +4692,10 @@
@override
Token get endToken {
- return question ?? _parameters?.endToken ?? identifier.endToken;
+ return question ?? _parameters?.endToken ?? name;
}
+ @Deprecated('Use identifier2 instead')
@override
SimpleIdentifierImpl get identifier => super.identifier!;
@@ -4633,6 +4709,9 @@
bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
+ Token get name => super.name!;
+
+ @override
FormalParameterListImpl? get parameters => _parameters;
set parameters(FormalParameterList? parameters) {
@@ -4659,7 +4738,7 @@
..addNode('type', type)
..addToken('thisKeyword', thisKeyword)
..addToken('period', period)
- ..addNode('identifier', identifier)
+ ..addToken('name', name)
..addNode('parameters', parameters);
@override
@@ -4670,6 +4749,7 @@
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_type?.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
identifier.accept(visitor);
_typeParameters?.accept(visitor);
_parameters?.accept(visitor);
@@ -4873,17 +4953,24 @@
abstract class FormalParameterImpl extends AstNodeImpl
implements FormalParameter {
@override
- ParameterElement? get declaredElement {
- final identifier = this.identifier;
- if (identifier == null) {
- return null;
- }
- return identifier.staticElement as ParameterElement?;
- }
+ ParameterElement? declaredElement;
+ @Deprecated('Use identifier2 instead')
@override
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
bool get isNamed => kind.isNamed;
@@ -4910,19 +4997,6 @@
/// Return the kind of this parameter.
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
@@ -5331,31 +5405,31 @@
/// The function expression being wrapped.
FunctionExpressionImpl _functionExpression;
+ @override
+ ExecutableElement? declaredElement;
+
/// Initialize a newly created function declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the function does not have the
/// corresponding attribute. The [externalKeyword] can be `null` if the
/// function is not an external function. The [returnType] can be `null` if no
/// return type was specified. The [propertyKeyword] can be `null` if the
/// function is neither a getter or a setter.
- FunctionDeclarationImpl(
- CommentImpl? comment,
- List<Annotation>? metadata,
- this.augmentKeyword,
- this.externalKeyword,
- this._returnType,
- this.propertyKeyword,
- SimpleIdentifierImpl name,
- this._functionExpression)
- : super(comment, metadata, name) {
+ FunctionDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.augmentKeyword,
+ required this.externalKeyword,
+ required TypeAnnotationImpl? returnType,
+ required this.propertyKeyword,
+ required super.name,
+ required FunctionExpressionImpl functionExpression,
+ }) : _returnType = returnType,
+ _functionExpression = functionExpression {
_becomeParentOf(_returnType);
_becomeParentOf(_functionExpression);
}
@override
- ExecutableElement? get declaredElement =>
- _name.staticElement as ExecutableElement?;
-
- @override
Token get endToken => _functionExpression.endToken;
@override
@@ -5394,7 +5468,7 @@
..addToken('externalKeyword', externalKeyword)
..addNode('returnType', returnType)
..addToken('propertyKeyword', propertyKeyword)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('functionExpression', functionExpression);
@override
@@ -5404,7 +5478,8 @@
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_returnType?.accept(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_functionExpression.accept(visitor);
}
}
@@ -5692,31 +5767,32 @@
/// The parameters associated with the function type.
FormalParameterListImpl _parameters;
+ @override
+ TypeAliasElement? declaredElement;
+
/// 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
/// corresponding attribute. The [returnType] can be `null` if no return type
/// was specified. The [typeParameters] can be `null` if the function has no
/// type parameters.
- FunctionTypeAliasImpl(
- CommentImpl? comment,
- List<Annotation>? metadata,
- Token keyword,
- this._returnType,
- SimpleIdentifierImpl name,
- this._typeParameters,
- this._parameters,
- Token semicolon)
- : super(comment, metadata, keyword, name, semicolon) {
+ FunctionTypeAliasImpl({
+ required super.comment,
+ required super.metadata,
+ required super.typedefKeyword,
+ required TypeAnnotationImpl? returnType,
+ required super.name,
+ required TypeParameterListImpl? typeParameters,
+ required FormalParameterListImpl parameters,
+ required super.semicolon,
+ }) : _returnType = returnType,
+ _typeParameters = typeParameters,
+ _parameters = parameters {
_becomeParentOf(_returnType);
_becomeParentOf(_typeParameters);
_becomeParentOf(_parameters);
}
@override
- TypeAliasElement? get declaredElement =>
- _name.staticElement as TypeAliasElement?;
-
- @override
FormalParameterListImpl get parameters => _parameters;
set parameters(FormalParameterList parameters) {
@@ -5741,7 +5817,7 @@
ChildEntities get _childEntities => super._childEntities
..addToken('typedefKeyword', typedefKeyword)
..addNode('returnType', returnType)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('typeParameters', typeParameters)
..addNode('parameters', parameters)
..addToken('semicolon', semicolon);
@@ -5753,7 +5829,8 @@
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_returnType?.accept(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_typeParameters?.accept(visitor);
_parameters.accept(visitor);
}
@@ -5813,12 +5890,13 @@
} else if (_returnType != null) {
return _returnType!.beginToken;
}
- return identifier.beginToken;
+ return name;
}
@override
Token get endToken => question ?? _parameters.endToken;
+ @Deprecated('Use identifier2 instead')
@override
SimpleIdentifierImpl get identifier => super.identifier!;
@@ -5832,6 +5910,9 @@
bool get isFinal => false;
@override
+ Token get name => super.name!;
+
+ @override
FormalParameterListImpl get parameters => _parameters;
set parameters(FormalParameterList parameters) {
@@ -5855,7 +5936,7 @@
@override
ChildEntities get _childEntities => super._childEntities
..addNode('returnType', returnType)
- ..addNode('identifier', identifier)
+ ..addToken('name', name)
..addNode('parameters', parameters);
@override
@@ -5866,6 +5947,7 @@
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_returnType?.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
identifier.accept(visitor);
_typeParameters?.accept(visitor);
_parameters.accept(visitor);
@@ -6003,27 +6085,28 @@
@override
Token equals;
+ @override
+ Element? declaredElement;
+
/// 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
/// the corresponding attribute. The [typeParameters] can be `null` if there
/// are no type parameters.
- GenericTypeAliasImpl(
- CommentImpl? comment,
- List<Annotation>? metadata,
- Token typedefToken,
- SimpleIdentifierImpl name,
- this._typeParameters,
- this.equals,
- this._type,
- Token semicolon)
- : super(comment, metadata, typedefToken, name, semicolon) {
+ GenericTypeAliasImpl({
+ required super.comment,
+ required super.metadata,
+ required super.typedefKeyword,
+ required super.name,
+ required TypeParameterListImpl? typeParameters,
+ required this.equals,
+ required TypeAnnotationImpl type,
+ required super.semicolon,
+ }) : _typeParameters = typeParameters,
+ _type = type {
_becomeParentOf(_typeParameters);
_becomeParentOf(_type);
}
- @override
- Element? get declaredElement => name.staticElement;
-
/// The type of function being defined by the alias.
///
/// If the non-function type aliases feature is enabled, a type alias may have
@@ -6058,7 +6141,7 @@
ChildEntities get _childEntities => ChildEntities()
..addNodeList('metadata', metadata)
..addToken('typedefKeyword', typedefKeyword)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('typeParameters', typeParameters)
..addToken('equals', equals)
..addNode('type', type);
@@ -6071,6 +6154,7 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
+ // ignore: deprecated_member_use_from_same_package
name.accept(visitor);
_typeParameters?.accept(visitor);
_type.accept(visitor);
@@ -6493,19 +6577,18 @@
/// is not deferred. The [asKeyword] and [prefix] can be `null` if the import
/// does not specify a prefix. The list of [combinators] can be `null` if
/// there are no combinators.
- ImportDirectiveImpl(
- CommentImpl? comment,
- List<Annotation>? metadata,
- this.importKeyword,
- StringLiteralImpl libraryUri,
- List<Configuration>? configurations,
- this.deferredKeyword,
- this.asKeyword,
- this._prefix,
- List<Combinator>? combinators,
- Token semicolon)
- : super(comment, metadata, libraryUri, configurations, combinators,
- semicolon) {
+ ImportDirectiveImpl({
+ required super.comment,
+ required super.metadata,
+ required this.importKeyword,
+ required super.uri,
+ required super.configurations,
+ required this.deferredKeyword,
+ required this.asKeyword,
+ required SimpleIdentifierImpl? prefix,
+ required super.combinators,
+ required super.semicolon,
+ }) : _prefix = prefix {
_becomeParentOf(_prefix);
}
@@ -7374,13 +7457,13 @@
Token semicolon;
LibraryAugmentationDirectiveImpl({
- required CommentImpl? comment,
- required List<Annotation>? metadata,
+ required super.comment,
+ required super.metadata,
required this.libraryKeyword,
required this.augmentKeyword,
- required StringLiteralImpl uri,
+ required super.uri,
required this.semicolon,
- }) : super(comment, metadata, uri);
+ });
@override
Token get endToken => semicolon;
@@ -7432,8 +7515,13 @@
/// Initialize a newly created library directive. Either or both of the
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
- LibraryDirectiveImpl(super.comment, super.metadata, this.libraryKeyword,
- this._name, this.semicolon) {
+ LibraryDirectiveImpl({
+ required super.comment,
+ required super.metadata,
+ required this.libraryKeyword,
+ required LibraryIdentifierImpl name,
+ required this.semicolon,
+ }) : _name = name {
_becomeParentOf(_name);
}
@@ -7749,6 +7837,14 @@
/// The body of the method.
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
/// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The [externalKeyword] can be `null` if the
@@ -7758,18 +7854,23 @@
/// method is neither a getter or a setter. The [operatorKeyword] can be
/// `null` if the method does not implement an operator. The [parameters] must
/// be `null` if this method declares a getter.
- MethodDeclarationImpl(
- super.comment,
- super.metadata,
- this.externalKeyword,
- this.modifierKeyword,
- this._returnType,
- this.propertyKeyword,
- this.operatorKeyword,
- this._name,
- this._typeParameters,
- this._parameters,
- this._body) {
+ MethodDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.externalKeyword,
+ required this.modifierKeyword,
+ required TypeAnnotationImpl? returnType,
+ required this.propertyKeyword,
+ required this.operatorKeyword,
+ required SimpleIdentifierImpl name,
+ required TypeParameterListImpl? typeParameters,
+ required FormalParameterListImpl? parameters,
+ required FunctionBodyImpl body,
+ }) : _returnType = returnType,
+ _name = name,
+ _typeParameters = typeParameters,
+ _parameters = parameters,
+ _body = body {
_becomeParentOf(_returnType);
_becomeParentOf(_name);
_becomeParentOf(_typeParameters);
@@ -7784,15 +7885,6 @@
_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
Token get endToken => _body.endToken;
@@ -7823,14 +7915,21 @@
@override
bool get isStatic => modifierKeyword?.keyword == Keyword.STATIC;
+ @Deprecated('Use name2 instead')
@override
- SimpleIdentifierImpl get name => _name;
+ SimpleIdentifierImpl get name {
+ _name.staticElement = declaredElement;
+ return _name;
+ }
set name(SimpleIdentifier identifier) {
_name = _becomeParentOf(identifier as SimpleIdentifierImpl);
}
@override
+ Token get name2 => _name.token;
+
+ @override
FormalParameterListImpl? get parameters => _parameters;
set parameters(FormalParameterList? parameters) {
@@ -7858,7 +7957,7 @@
..addNode('returnType', returnType)
..addToken('propertyKeyword', propertyKeyword)
..addToken('operatorKeyword', operatorKeyword)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('parameters', parameters)
..addNode('body', body);
@@ -7869,7 +7968,8 @@
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_returnType?.accept(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_typeParameters?.accept(visitor);
_parameters?.accept(visitor);
_body.accept(visitor);
@@ -8048,6 +8148,9 @@
/// super-class constraints.
OnClauseImpl? _onClause;
+ @override
+ ClassElement? declaredElement;
+
/// Initialize a newly created mixin declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the mixin does not have the
/// corresponding attribute. The [typeParameters] can be `null` if the mixin
@@ -8055,27 +8158,23 @@
/// and [implementsClause] can be `null` if the mixin does not have the
/// corresponding clause. The list of [members] can be `null` if the mixin
/// does not have any members.
- MixinDeclarationImpl(
- CommentImpl? comment,
- List<Annotation>? metadata,
- this.augmentKeyword,
- this.mixinKeyword,
- SimpleIdentifierImpl name,
- TypeParameterListImpl? typeParameters,
- this._onClause,
- ImplementsClauseImpl? implementsClause,
- Token leftBracket,
- List<ClassMember> members,
- Token rightBracket)
- : super(comment, metadata, name, typeParameters, implementsClause,
- leftBracket, members, rightBracket) {
+ MixinDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.augmentKeyword,
+ required this.mixinKeyword,
+ required super.name,
+ required super.typeParameters,
+ required OnClauseImpl? onClause,
+ required super.implementsClause,
+ required super.leftBracket,
+ required super.members,
+ required super.rightBracket,
+ }) : _onClause = onClause {
_becomeParentOf(_onClause);
}
@override
- ClassElement? get declaredElement => _name.staticElement as ClassElement?;
-
- @override
Token get firstTokenAfterCommentAndMetadata {
return mixinKeyword;
}
@@ -8099,7 +8198,7 @@
@override
ChildEntities get _childEntities => super._childEntities
..addToken('mixinKeyword', mixinKeyword)
- ..addNode('name', name)
+ ..addToken('name', name2)
..addNode('typeParameters', typeParameters)
..addNode('onClause', onClause)
..addNode('implementsClause', implementsClause)
@@ -8113,7 +8212,8 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_typeParameters?.accept(visitor);
_onClause?.accept(visitor);
_implementsClause?.accept(visitor);
@@ -8127,19 +8227,30 @@
/// The name of the member being declared.
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
/// does not have the corresponding attribute.
- NamedCompilationUnitMemberImpl(super.comment, super.metadata, this._name) {
+ NamedCompilationUnitMemberImpl({
+ required super.comment,
+ required super.metadata,
+ required SimpleIdentifierImpl name,
+ }) : _name = name {
_becomeParentOf(_name);
}
+ @Deprecated('Use name2 instead')
@override
- SimpleIdentifierImpl get name => _name;
+ SimpleIdentifierImpl get name {
+ _name.staticElement = declaredElement;
+ return _name;
+ }
set name(SimpleIdentifier identifier) {
_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
@@ -8317,13 +8428,14 @@
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute. The list of [combinators] can be `null` if there
/// are no combinators.
- NamespaceDirectiveImpl(
- super.comment,
- super.metadata,
- super.libraryUri,
- List<Configuration>? configurations,
- List<Combinator>? combinators,
- this.semicolon) {
+ NamespaceDirectiveImpl({
+ required super.comment,
+ required super.metadata,
+ required super.uri,
+ required List<Configuration>? configurations,
+ required List<Combinator>? combinators,
+ required this.semicolon,
+ }) {
_configurations._initialize(this, configurations);
_combinators._initialize(this, combinators);
}
@@ -8603,8 +8715,12 @@
_comment = _becomeParentOf(comment as CommentImpl?);
}
+ @Deprecated('Use name2 instead')
@override
- SimpleIdentifierImpl? get identifier => _identifier;
+ SimpleIdentifierImpl? get identifier {
+ _identifier?.staticElement = declaredElement;
+ return _identifier;
+ }
set identifier(SimpleIdentifier? identifier) {
_identifier = _becomeParentOf(identifier as SimpleIdentifierImpl?);
@@ -8628,6 +8744,9 @@
}
@override
+ Token? get name => _identifier?.token;
+
+ @override
List<AstNode> get sortedCommentAndAnnotations {
var comment = _comment;
return <AstNode>[
@@ -8867,9 +8986,13 @@
/// Initialize a newly created part directive. Either or both of the [comment]
/// and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
- PartDirectiveImpl(CommentImpl? comment, List<Annotation>? metadata,
- this.partKeyword, StringLiteralImpl partUri, this.semicolon)
- : super(comment, metadata, partUri);
+ PartDirectiveImpl({
+ required super.comment,
+ required super.metadata,
+ required this.partKeyword,
+ required super.uri,
+ required this.semicolon,
+ });
@override
PartElement? get element2 {
@@ -8934,8 +9057,16 @@
/// Initialize a newly created part-of directive. Either or both of the
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
- PartOfDirectiveImpl(super.comment, super.metadata, this.partKeyword,
- this.ofKeyword, this._uri, this._libraryName, this.semicolon) {
+ PartOfDirectiveImpl({
+ required super.comment,
+ required super.metadata,
+ required this.partKeyword,
+ required this.ofKeyword,
+ required StringLiteralImpl? uri,
+ required LibraryIdentifierImpl? libraryName,
+ required this.semicolon,
+ }) : _uri = uri,
+ _libraryName = libraryName {
_becomeParentOf(_uri);
_becomeParentOf(_libraryName);
}
@@ -9821,11 +9952,11 @@
} else if (_type != null) {
return _type!.beginToken;
}
- return identifier!.beginToken;
+ return name!;
}
@override
- Token get endToken => identifier?.endToken ?? type!.endToken;
+ Token get endToken => name ?? type!.endToken;
@override
bool get isConst => keyword?.keyword == Keyword.CONST;
@@ -9847,7 +9978,7 @@
ChildEntities get _childEntities => super._childEntities
..addToken('keyword', keyword)
..addNode('type', type)
- ..addNode('identifier', identifier);
+ ..addToken('name', name);
@override
E? accept<E>(AstVisitor<E> visitor) =>
@@ -9857,6 +9988,7 @@
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_type?.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
identifier?.accept(visitor);
}
}
@@ -10023,11 +10155,13 @@
}
}
if (parent is FieldFormalParameter) {
+ // ignore: deprecated_member_use_from_same_package
if (identical(parent.identifier, target)) {
return false;
}
}
if (parent is VariableDeclaration) {
+ // ignore: deprecated_member_use_from_same_package
if (identical(parent.name, target)) {
return false;
}
@@ -10652,9 +10786,10 @@
@override
Token get endToken {
- return question ?? _parameters?.endToken ?? identifier.endToken;
+ return question ?? _parameters?.endToken ?? name;
}
+ @Deprecated('Use identifier2 instead')
@override
SimpleIdentifierImpl get identifier => super.identifier!;
@@ -10668,6 +10803,9 @@
bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
+ Token get name => super.name!;
+
+ @override
FormalParameterListImpl? get parameters => _parameters;
set parameters(FormalParameterList? parameters) {
@@ -10694,7 +10832,7 @@
..addNode('type', type)
..addToken('superKeyword', superKeyword)
..addToken('period', period)
- ..addNode('identifier', identifier)
+ ..addToken('name', name)
..addNode('typeParameters', typeParameters)
..addNode('parameters', parameters);
@@ -10706,6 +10844,7 @@
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_type?.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
identifier.accept(visitor);
_typeParameters?.accept(visitor);
_parameters?.accept(visitor);
@@ -11068,8 +11207,13 @@
/// Initialize a newly created top-level variable declaration. Either or both
/// of the [comment] and [metadata] can be `null` if the variable does not
/// have the corresponding attribute.
- TopLevelVariableDeclarationImpl(super.comment, super.metadata,
- this.externalKeyword, this._variableList, this.semicolon) {
+ TopLevelVariableDeclarationImpl({
+ required super.comment,
+ required super.metadata,
+ required this.externalKeyword,
+ required VariableDeclarationListImpl variableList,
+ required this.semicolon,
+ }) : _variableList = variableList {
_becomeParentOf(_variableList);
}
@@ -11215,9 +11359,13 @@
/// Initialize a newly created type alias. Either or both of the [comment] and
/// [metadata] can be `null` if the declaration does not have the
/// corresponding attribute.
- TypeAliasImpl(CommentImpl? comment, List<Annotation>? metadata,
- this.typedefKeyword, SimpleIdentifierImpl name, this.semicolon)
- : super(comment, metadata, name);
+ TypeAliasImpl({
+ required super.comment,
+ required super.metadata,
+ required this.typedefKeyword,
+ required super.name,
+ required this.semicolon,
+ });
@override
Token get endToken => semicolon;
@@ -11402,12 +11550,22 @@
/// explicit upper bound.
TypeAnnotationImpl? _bound;
+ @override
+ TypeParameterElement? declaredElement;
+
/// Initialize a newly created type parameter. Either or both of the [comment]
/// and [metadata] can be `null` if the parameter does not have the
/// corresponding attribute. The [extendsKeyword] and [bound] can be `null` if
/// the parameter does not have an upper bound.
- TypeParameterImpl(super.comment, super.metadata, this._name,
- this.extendsKeyword, this._bound) {
+ TypeParameterImpl({
+ required super.comment,
+ required super.metadata,
+ required SimpleIdentifierImpl name,
+ required this.extendsKeyword,
+ required TypeAnnotationImpl? bound,
+ this.varianceKeyword,
+ }) : _name = name,
+ _bound = bound {
_becomeParentOf(_name);
_becomeParentOf(_bound);
}
@@ -11420,10 +11578,6 @@
}
@override
- TypeParameterElement? get declaredElement =>
- _name.staticElement as TypeParameterElement?;
-
- @override
Token get endToken {
if (_bound == null) {
return _name.endToken;
@@ -11434,6 +11588,7 @@
@override
Token get firstTokenAfterCommentAndMetadata => _name.beginToken;
+ @Deprecated('Use name2 instead')
@override
SimpleIdentifierImpl get name => _name;
@@ -11442,8 +11597,11 @@
}
@override
+ Token get name2 => _name.token;
+
+ @override
ChildEntities get _childEntities => super._childEntities
- ..addNode('name', name)
+ ..addToken('name', name2)
..addToken('extendsKeyword', extendsKeyword)
..addNode('bound', bound);
@@ -11453,7 +11611,8 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_bound?.accept(visitor);
}
}
@@ -11526,7 +11685,11 @@
/// Initialize a newly create URI-based directive. Either or both of the
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
- UriBasedDirectiveImpl(super.comment, super.metadata, this._uri) {
+ UriBasedDirectiveImpl({
+ required super.comment,
+ required super.metadata,
+ required StringLiteralImpl uri,
+ }) : _uri = uri {
_becomeParentOf(_uri);
}
@@ -11606,6 +11769,9 @@
/// The name of the variable being declared.
SimpleIdentifierImpl _name;
+ @override
+ VariableElement? declaredElement;
+
/// The equal sign separating the variable name from the initial value, or
/// `null` if the initial value was not specified.
@override
@@ -11623,16 +11789,17 @@
/// Initialize a newly created variable declaration. The [equals] and
/// [initializer] can be `null` if there is no initializer.
- VariableDeclarationImpl(this._name, this.equals, this._initializer)
- : super(null, null) {
+ VariableDeclarationImpl({
+ required SimpleIdentifierImpl name,
+ required this.equals,
+ required ExpressionImpl? initializer,
+ }) : _name = name,
+ _initializer = initializer,
+ super(comment: null, metadata: null) {
_becomeParentOf(_name);
_becomeParentOf(_initializer);
}
- @override
- VariableElement? get declaredElement =>
- _name.staticElement as VariableElement?;
-
/// This overridden implementation of [documentationComment] looks in the
/// grandparent node for Dartdoc comments if no documentation is specifically
/// available on the node.
@@ -11684,16 +11851,23 @@
return parent is VariableDeclarationList && parent.isLate;
}
+ @Deprecated('Use name2 instead')
@override
- SimpleIdentifierImpl get name => _name;
+ SimpleIdentifierImpl get name {
+ _name.staticElement = declaredElement;
+ return _name;
+ }
set name(SimpleIdentifier identifier) {
_name = _becomeParentOf(identifier as SimpleIdentifierImpl);
}
@override
+ Token get name2 => _name.token;
+
+ @override
ChildEntities get _childEntities => super._childEntities
- ..addNode('name', name)
+ ..addToken('name', name2)
..addToken('equals', equals)
..addNode('initializer', initializer);
@@ -11703,7 +11877,8 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name.accept(visitor);
+ // ignore: deprecated_member_use_from_same_package
+ name.accept(visitor);
_initializer?.accept(visitor);
}
}
@@ -11742,8 +11917,14 @@
/// the [comment] and [metadata] can be `null` if the variable list does not
/// have the corresponding attribute. The [keyword] can be `null` if a type
/// was specified. The [type] must be `null` if the keyword is 'var'.
- VariableDeclarationListImpl(super.comment, super.metadata, this.lateKeyword,
- this.keyword, this._type, List<VariableDeclaration> variables) {
+ VariableDeclarationListImpl({
+ required super.comment,
+ required super.metadata,
+ required this.lateKeyword,
+ required this.keyword,
+ required TypeAnnotationImpl? type,
+ required List<VariableDeclaration> variables,
+ }) : _type = type {
_becomeParentOf(_type);
_variables._initialize(this, variables);
}
diff --git a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
index d0fffa1..78a09e7 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
@@ -53,66 +53,6 @@
Expression target, List<Expression> cascadeSections) =>
CascadeExpressionImpl(target as ExpressionImpl, cascadeSections);
- ClassDeclarationImpl classDeclaration(
- Comment? comment,
- List<Annotation>? metadata,
- Token? abstractKeyword,
- Token? macroKeyword,
- Token? augmentKeyword,
- Token classKeyword,
- SimpleIdentifier name,
- TypeParameterList? typeParameters,
- ExtendsClause? extendsClause,
- WithClause? withClause,
- ImplementsClause? implementsClause,
- Token leftBracket,
- List<ClassMember> members,
- Token rightBracket) =>
- ClassDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- abstractKeyword,
- macroKeyword,
- augmentKeyword,
- classKeyword,
- name as SimpleIdentifierImpl,
- typeParameters as TypeParameterListImpl?,
- extendsClause as ExtendsClauseImpl?,
- withClause as WithClauseImpl?,
- implementsClause as ImplementsClauseImpl?,
- leftBracket,
- members,
- rightBracket);
-
- ClassTypeAliasImpl classTypeAlias(
- Comment? comment,
- List<Annotation>? metadata,
- Token keyword,
- SimpleIdentifier name,
- TypeParameterList? typeParameters,
- Token equals,
- Token? abstractKeyword,
- Token? macroKeyword,
- Token? augmentKeyword,
- NamedType superclass,
- WithClause withClause,
- ImplementsClause? implementsClause,
- Token semicolon) =>
- ClassTypeAliasImpl(
- comment as CommentImpl?,
- metadata,
- keyword,
- name as SimpleIdentifierImpl,
- typeParameters as TypeParameterListImpl?,
- equals,
- abstractKeyword,
- macroKeyword,
- augmentKeyword,
- superclass as NamedTypeImpl,
- withClause as WithClauseImpl,
- implementsClause as ImplementsClauseImpl?,
- semicolon);
-
CommentReferenceImpl commentReference(
Token? newKeyword, CommentReferableExpression expression) =>
CommentReferenceImpl(
@@ -163,35 +103,6 @@
rightParenthesis,
libraryUri as StringLiteralImpl);
- ConstructorDeclarationImpl constructorDeclaration(
- Comment? comment,
- List<Annotation>? metadata,
- Token? externalKeyword,
- Token? constKeyword,
- Token? factoryKeyword,
- Identifier returnType,
- Token? period,
- SimpleIdentifier? name,
- FormalParameterList parameters,
- Token? separator,
- List<ConstructorInitializer>? initializers,
- ConstructorName? redirectedConstructor,
- FunctionBody? body) =>
- ConstructorDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- externalKeyword,
- constKeyword,
- factoryKeyword,
- returnType as IdentifierImpl,
- period,
- name as SimpleIdentifierImpl?,
- parameters as FormalParameterListImpl,
- separator,
- initializers,
- redirectedConstructor as ConstructorNameImpl?,
- body as FunctionBodyImpl);
-
ConstructorFieldInitializerImpl constructorFieldInitializer(
Token? thisKeyword,
Token? period,
@@ -219,15 +130,6 @@
ContinueStatementImpl(
continueKeyword, label as SimpleIdentifierImpl?, semicolon);
- DeclaredIdentifierImpl declaredIdentifier(
- Comment? comment,
- List<Annotation>? metadata,
- Token? keyword,
- TypeAnnotation? type,
- SimpleIdentifier identifier) =>
- DeclaredIdentifierImpl(comment as CommentImpl?, metadata, keyword,
- type as TypeAnnotationImpl?, identifier as SimpleIdentifierImpl);
-
DefaultFormalParameterImpl defaultFormalParameter(
NormalFormalParameter parameter,
ParameterKind kind,
@@ -273,85 +175,6 @@
CommentImpl endOfLineComment(List<Token> tokens) =>
CommentImpl.createEndOfLineComment(tokens);
- EnumConstantDeclarationImpl enumConstantDeclaration(Comment? comment,
- List<Annotation>? metadata, SimpleIdentifier name) =>
- EnumConstantDeclarationImpl(
- documentationComment: comment as CommentImpl?,
- metadata: metadata,
- name: name as SimpleIdentifierImpl,
- arguments: null,
- );
-
- @Deprecated('Use enumDeclaration2() instead')
- EnumDeclarationImpl enumDeclaration(
- Comment? comment,
- List<Annotation>? metadata,
- Token enumKeyword,
- SimpleIdentifier name,
- Token leftBracket,
- List<EnumConstantDeclaration> constants,
- Token rightBracket) =>
- enumDeclaration2(
- comment: comment,
- metadata: metadata,
- enumKeyword: enumKeyword,
- name: name,
- typeParameters: null,
- withClause: null,
- implementsClause: null,
- leftBracket: leftBracket,
- constants: constants,
- semicolon: null,
- members: [],
- rightBracket: rightBracket);
-
- EnumDeclarationImpl enumDeclaration2({
- required Comment? comment,
- required List<Annotation>? metadata,
- required Token enumKeyword,
- required SimpleIdentifier name,
- required TypeParameterList? typeParameters,
- required WithClause? withClause,
- required ImplementsClause? implementsClause,
- required Token leftBracket,
- required List<EnumConstantDeclaration> constants,
- required List<ClassMember> members,
- required Token? semicolon,
- required Token rightBracket,
- }) {
- return EnumDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- enumKeyword,
- name as SimpleIdentifierImpl,
- typeParameters as TypeParameterListImpl?,
- withClause as WithClauseImpl?,
- implementsClause as ImplementsClauseImpl?,
- leftBracket,
- constants,
- semicolon,
- members,
- rightBracket,
- );
- }
-
- ExportDirectiveImpl exportDirective(
- Comment? comment,
- List<Annotation>? metadata,
- Token keyword,
- StringLiteral libraryUri,
- List<Configuration>? configurations,
- List<Combinator>? combinators,
- Token semicolon) =>
- ExportDirectiveImpl(
- comment as CommentImpl?,
- metadata,
- keyword,
- libraryUri as StringLiteralImpl,
- configurations,
- combinators,
- semicolon);
-
ExpressionFunctionBodyImpl expressionFunctionBody(Token? keyword,
Token functionDefinition, Expression expression, Token? semicolon) =>
ExpressionFunctionBodyImpl(keyword, null, functionDefinition,
@@ -374,35 +197,6 @@
ExtendsClauseImpl extendsClause(Token extendsKeyword, NamedType superclass) =>
ExtendsClauseImpl(extendsKeyword, superclass as NamedTypeImpl);
- ExtensionDeclarationImpl extensionDeclaration(
- {Comment? comment,
- List<Annotation>? metadata,
- required Token extensionKeyword,
- Token? typeKeyword,
- SimpleIdentifier? name,
- TypeParameterList? typeParameters,
- required Token onKeyword,
- required TypeAnnotation extendedType,
- ShowClause? showClause,
- HideClause? hideClause,
- required Token leftBracket,
- required List<ClassMember> members,
- required Token rightBracket}) =>
- ExtensionDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- extensionKeyword,
- typeKeyword,
- name as SimpleIdentifierImpl?,
- typeParameters as TypeParameterListImpl?,
- onKeyword,
- extendedType as TypeAnnotationImpl,
- showClause as ShowClauseImpl?,
- hideClause as HideClauseImpl?,
- leftBracket,
- members,
- rightBracket);
-
ExtensionOverrideImpl extensionOverride(
{required Identifier extensionName,
TypeArgumentList? typeArguments,
@@ -412,27 +206,6 @@
typeArguments as TypeArgumentListImpl?,
argumentList as ArgumentListImpl);
- FieldDeclarationImpl fieldDeclaration2(
- {Comment? comment,
- List<Annotation>? metadata,
- Token? abstractKeyword,
- Token? augmentKeyword,
- Token? covariantKeyword,
- Token? externalKeyword,
- Token? staticKeyword,
- required VariableDeclarationList fieldList,
- required Token semicolon}) =>
- FieldDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- abstractKeyword,
- augmentKeyword,
- covariantKeyword,
- externalKeyword,
- staticKeyword,
- fieldList as VariableDeclarationListImpl,
- semicolon);
-
FieldFormalParameterImpl fieldFormalParameter2(
{Comment? comment,
List<Annotation>? metadata,
@@ -540,25 +313,6 @@
body as StatementImpl);
}
- FunctionDeclarationImpl functionDeclaration(
- Comment? comment,
- List<Annotation>? metadata,
- Token? augmentKeyword,
- Token? externalKeyword,
- TypeAnnotation? returnType,
- Token? propertyKeyword,
- SimpleIdentifier name,
- FunctionExpression functionExpression) =>
- FunctionDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- augmentKeyword,
- externalKeyword,
- returnType as TypeAnnotationImpl?,
- propertyKeyword,
- name as SimpleIdentifierImpl,
- functionExpression as FunctionExpressionImpl);
-
FunctionDeclarationStatementImpl functionDeclarationStatement(
FunctionDeclaration functionDeclaration) =>
FunctionDeclarationStatementImpl(
@@ -583,25 +337,6 @@
FunctionReferenceImpl(function as ExpressionImpl,
typeArguments: typeArguments as TypeArgumentListImpl?);
- FunctionTypeAliasImpl functionTypeAlias(
- Comment? comment,
- List<Annotation>? metadata,
- Token keyword,
- TypeAnnotation? returnType,
- SimpleIdentifier name,
- TypeParameterList? typeParameters,
- FormalParameterList parameters,
- Token semicolon) =>
- FunctionTypeAliasImpl(
- comment as CommentImpl?,
- metadata,
- keyword,
- returnType as TypeAnnotationImpl?,
- name as SimpleIdentifierImpl,
- typeParameters as TypeParameterListImpl?,
- parameters as FormalParameterListImpl,
- semicolon);
-
FunctionTypedFormalParameterImpl functionTypedFormalParameter2(
{Comment? comment,
List<Annotation>? metadata,
@@ -636,25 +371,6 @@
parameters as FormalParameterListImpl,
question: question);
- GenericTypeAliasImpl genericTypeAlias(
- Comment? comment,
- List<Annotation>? metadata,
- Token typedefKeyword,
- SimpleIdentifier name,
- TypeParameterList? typeParameters,
- Token equals,
- TypeAnnotation type,
- Token semicolon) =>
- GenericTypeAliasImpl(
- comment as CommentImpl?,
- metadata,
- typedefKeyword,
- name as SimpleIdentifierImpl,
- typeParameters as TypeParameterListImpl?,
- equals,
- type as TypeAnnotationImpl,
- semicolon);
-
HideClauseImpl hideClause(
{required Token hideKeyword,
required List<ShowHideClauseElement> elements}) =>
@@ -713,30 +429,6 @@
typeArguments: typeArguments as TypeArgumentListImpl?,
typeArgumentTypes: typeArgumentTypes);
- ImportDirectiveImpl importDirective(
- Comment? comment,
- List<Annotation>? metadata,
- Token keyword,
- StringLiteral libraryUri,
- List<Configuration>? configurations,
- Token? deferredKeyword,
- Token? asKeyword,
- SimpleIdentifier? prefix,
- List<Combinator>? combinators,
- Token semicolon,
- ) =>
- ImportDirectiveImpl(
- comment as CommentImpl?,
- metadata,
- keyword,
- libraryUri as StringLiteralImpl,
- configurations,
- deferredKeyword,
- asKeyword,
- prefix as SimpleIdentifierImpl?,
- combinators,
- semicolon);
-
IndexExpressionImpl indexExpressionForCascade2(
{required Token period,
Token? question,
@@ -787,15 +479,6 @@
List<Label> labels, Statement statement) =>
LabeledStatementImpl(labels, statement as StatementImpl);
- LibraryDirectiveImpl libraryDirective(
- Comment? comment,
- List<Annotation>? metadata,
- Token libraryKeyword,
- LibraryIdentifier name,
- Token semicolon) =>
- LibraryDirectiveImpl(comment as CommentImpl?, metadata, libraryKeyword,
- name as LibraryIdentifierImpl, semicolon);
-
LibraryIdentifierImpl libraryIdentifier(List<SimpleIdentifier> components) =>
LibraryIdentifierImpl(components);
@@ -826,31 +509,6 @@
MapLiteralEntryImpl(
key as ExpressionImpl, separator, value as ExpressionImpl);
- MethodDeclarationImpl methodDeclaration(
- Comment? comment,
- List<Annotation>? metadata,
- Token? externalKeyword,
- Token? modifierKeyword,
- TypeAnnotation? returnType,
- Token? propertyKeyword,
- Token? operatorKeyword,
- SimpleIdentifier name,
- TypeParameterList? typeParameters,
- FormalParameterList? parameters,
- FunctionBody body) =>
- MethodDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- externalKeyword,
- modifierKeyword,
- returnType as TypeAnnotationImpl?,
- propertyKeyword,
- operatorKeyword,
- name as SimpleIdentifierImpl,
- typeParameters as TypeParameterListImpl?,
- parameters as FormalParameterListImpl?,
- body as FunctionBodyImpl);
-
MethodInvocationImpl methodInvocation(
Expression? target,
Token? operator,
@@ -864,31 +522,6 @@
typeArguments as TypeArgumentListImpl?,
argumentList as ArgumentListImpl);
- MixinDeclarationImpl mixinDeclaration(
- Comment? comment,
- List<Annotation>? metadata,
- Token? augmentKeyword,
- Token mixinKeyword,
- SimpleIdentifier name,
- TypeParameterList? typeParameters,
- OnClause? onClause,
- ImplementsClause? implementsClause,
- Token leftBracket,
- List<ClassMember> members,
- Token rightBracket) =>
- MixinDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- augmentKeyword,
- mixinKeyword,
- name as SimpleIdentifierImpl,
- typeParameters as TypeParameterListImpl?,
- onClause as OnClauseImpl?,
- implementsClause as ImplementsClauseImpl?,
- leftBracket,
- members,
- rightBracket);
-
NamedExpressionImpl namedExpression(Label name, Expression expression) =>
NamedExpressionImpl(name as LabelImpl, expression as ExpressionImpl);
@@ -923,28 +556,6 @@
ParenthesizedExpressionImpl(
leftParenthesis, expression as ExpressionImpl, rightParenthesis);
- PartDirectiveImpl partDirective(Comment? comment, List<Annotation>? metadata,
- Token partKeyword, StringLiteral partUri, Token semicolon) =>
- PartDirectiveImpl(comment as CommentImpl?, metadata, partKeyword,
- partUri as StringLiteralImpl, semicolon);
-
- PartOfDirectiveImpl partOfDirective(
- Comment? comment,
- List<Annotation>? metadata,
- Token partKeyword,
- Token ofKeyword,
- StringLiteral? uri,
- LibraryIdentifier? libraryName,
- Token semicolon) =>
- PartOfDirectiveImpl(
- comment as CommentImpl?,
- metadata,
- partKeyword,
- ofKeyword,
- uri as StringLiteralImpl?,
- libraryName as LibraryIdentifierImpl?,
- semicolon);
-
PostfixExpressionImpl postfixExpression(Expression operand, Token operator) =>
PostfixExpressionImpl(operand as ExpressionImpl, operator);
@@ -1117,19 +728,6 @@
Token throwKeyword, Expression expression) =>
ThrowExpressionImpl(throwKeyword, expression as ExpressionImpl);
- TopLevelVariableDeclarationImpl topLevelVariableDeclaration(
- Comment? comment,
- List<Annotation>? metadata,
- VariableDeclarationList variableList,
- Token semicolon,
- {Token? externalKeyword}) =>
- TopLevelVariableDeclarationImpl(
- comment as CommentImpl?,
- metadata,
- externalKeyword,
- variableList as VariableDeclarationListImpl,
- semicolon);
-
TryStatementImpl tryStatement(
Token tryKeyword,
Block body,
@@ -1146,63 +744,10 @@
TypeLiteralImpl typeLiteral({required NamedType typeName}) =>
TypeLiteralImpl(typeName as NamedTypeImpl);
- TypeParameterImpl typeParameter(
- Comment? comment,
- List<Annotation>? metadata,
- SimpleIdentifier name,
- Token? extendsKeyword,
- TypeAnnotation? bound) =>
- TypeParameterImpl(
- comment as CommentImpl?,
- metadata,
- name as SimpleIdentifierImpl,
- extendsKeyword,
- bound as TypeAnnotationImpl?);
-
- TypeParameterImpl typeParameter2(
- {Comment? comment,
- List<Annotation>? metadata,
- required SimpleIdentifier name,
- Token? extendsKeyword,
- TypeAnnotation? bound,
- Token? varianceKeyword}) =>
- TypeParameterImpl(
- comment as CommentImpl?,
- metadata,
- name as SimpleIdentifierImpl,
- extendsKeyword,
- bound as TypeAnnotationImpl?)
- ..varianceKeyword = varianceKeyword;
-
TypeParameterListImpl typeParameterList(Token leftBracket,
List<TypeParameter> typeParameters, Token rightBracket) =>
TypeParameterListImpl(leftBracket, typeParameters, rightBracket);
- VariableDeclarationImpl variableDeclaration(
- SimpleIdentifier name, Token? equals, Expression? initializer) =>
- VariableDeclarationImpl(
- name as SimpleIdentifierImpl, equals, initializer as ExpressionImpl?);
-
- VariableDeclarationListImpl variableDeclarationList(
- Comment? comment,
- List<Annotation>? metadata,
- Token? keyword,
- TypeAnnotation? type,
- List<VariableDeclaration> variables) =>
- VariableDeclarationListImpl(comment as CommentImpl?, metadata, null,
- keyword, type as TypeAnnotationImpl?, variables);
-
- VariableDeclarationListImpl variableDeclarationList2(
- {Comment? comment,
- List<Annotation>? metadata,
- Token? lateKeyword,
- Token? keyword,
- TypeAnnotation? type,
- required List<VariableDeclaration> variables}) {
- return VariableDeclarationListImpl(comment as CommentImpl?, metadata,
- lateKeyword, keyword, type as TypeAnnotationImpl?, variables);
- }
-
VariableDeclarationStatementImpl variableDeclarationStatement(
VariableDeclarationList variableList, Token semicolon) =>
VariableDeclarationStatementImpl(
diff --git a/pkg/analyzer/lib/src/dart/ast/element_locator.dart b/pkg/analyzer/lib/src/dart/ast/element_locator.dart
index 4612dc3..6e910aa 100644
--- a/pkg/analyzer/lib/src/dart/ast/element_locator.dart
+++ b/pkg/analyzer/lib/src/dart/ast/element_locator.dart
@@ -69,11 +69,26 @@
}
@override
+ Element? visitFormalParameter(FormalParameter node) {
+ return node.declaredElement;
+ }
+
+ @override
Element? visitFunctionDeclaration(FunctionDeclaration node) {
return node.declaredElement;
}
@override
+ Element? visitFunctionTypeAlias(FunctionTypeAlias node) {
+ return node.declaredElement;
+ }
+
+ @override
+ Element? visitGenericTypeAlias(GenericTypeAlias node) {
+ return node.declaredElement;
+ }
+
+ @override
Element? visitIdentifier(Identifier node) {
var parent = node.parent;
if (parent is Annotation) {
@@ -86,14 +101,16 @@
// Constructor Elements
var returnType = parent.returnType;
if (identical(returnType, node)) {
- var name = parent.name;
+ var name = parent.name2;
if (name != null) {
- return name.staticElement;
+ return parent.declaredElement;
}
var element = node.staticElement;
if (element is ClassElement) {
return element.unnamedConstructor;
}
+ } else if (parent.name2 == node.endToken) {
+ return parent.declaredElement;
}
} else if (parent is LibraryIdentifier) {
var grandParent = parent.parent;
@@ -176,6 +193,11 @@
}
@override
+ Element? visitTypeParameter(TypeParameter node) {
+ return node.declaredElement;
+ }
+
+ @override
Element? visitVariableDeclaration(VariableDeclaration node) {
return node.declaredElement;
}
diff --git a/pkg/analyzer/lib/src/dart/ast/invokes_super_self.dart b/pkg/analyzer/lib/src/dart/ast/invokes_super_self.dart
index d3633fb..c17d674 100644
--- a/pkg/analyzer/lib/src/dart/ast/invokes_super_self.dart
+++ b/pkg/analyzer/lib/src/dart/ast/invokes_super_self.dart
@@ -72,7 +72,7 @@
extension MethodDeclarationExtension on MethodDeclaration {
bool get invokesSuperSelf {
var visitor = _SuperVisitor(
- name.name,
+ name2.lexeme,
isSetter ? _Usage.writing : _Usage.reading,
);
body.accept(visitor);
diff --git a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
index f344609..963f028 100644
--- a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
@@ -167,7 +167,7 @@
_visitToken(node.macroKeyword, suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
sink.write('class ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.typeParameters);
_visitNode(node.extendsClause, prefix: ' ');
_visitNode(node.withClause, prefix: ' ');
@@ -186,7 +186,7 @@
_visitToken(node.macroKeyword, suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
sink.write('class ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.typeParameters);
sink.write(' = ');
_visitNode(node.superclass);
@@ -237,7 +237,7 @@
_visitToken(node.constKeyword, suffix: ' ');
_visitToken(node.factoryKeyword, suffix: ' ');
_visitNode(node.returnType);
- _visitNode(node.name, prefix: '.');
+ _visitToken(node.name2, prefix: '.');
_visitNode(node.parameters);
_visitNodeList(node.initializers, prefix: ' : ', separator: ', ');
_visitNode(node.redirectedConstructor, prefix: ' = ');
@@ -281,7 +281,7 @@
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.keyword, suffix: ' ');
_visitNode(node.type, suffix: ' ');
- _visitNode(node.identifier);
+ _visitToken(node.name);
}
@override
@@ -336,7 +336,7 @@
@override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.arguments);
}
@@ -344,7 +344,7 @@
void visitEnumDeclaration(EnumDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
sink.write('enum ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.typeParameters);
_visitNode(node.withClause, prefix: ' ');
_visitNode(node.implementsClause, prefix: ' ');
@@ -399,7 +399,7 @@
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.extensionKeyword, suffix: ' ');
_visitToken(node.typeKeyword, suffix: ' ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.typeParameters);
sink.write(' ');
_visitToken(node.onKeyword);
@@ -437,7 +437,7 @@
_visitToken(node.keyword, suffix: ' ');
_visitNode(node.type, suffix: ' ');
sink.write('this.');
- _visitNode(node.identifier);
+ _visitToken(node.name);
_visitNode(node.typeParameters);
_visitNode(node.parameters);
}
@@ -528,7 +528,7 @@
_visitToken(node.externalKeyword, suffix: ' ');
_visitNode(node.returnType, suffix: ' ');
_visitToken(node.propertyKeyword, suffix: ' ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.functionExpression);
}
@@ -562,7 +562,7 @@
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
sink.write('typedef ');
_visitNode(node.returnType, suffix: ' ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.typeParameters);
_visitNode(node.parameters);
sink.write(';');
@@ -574,7 +574,7 @@
_visitToken(node.requiredKeyword, suffix: ' ');
_visitToken(node.covariantKeyword, suffix: ' ');
_visitNode(node.returnType, suffix: ' ');
- _visitNode(node.identifier);
+ _visitToken(node.name);
_visitNode(node.typeParameters);
_visitNode(node.parameters);
if (node.question != null) {
@@ -597,7 +597,7 @@
void visitGenericTypeAlias(GenericTypeAlias node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
sink.write('typedef ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.typeParameters);
sink.write(' = ');
_visitNode(node.type);
@@ -771,7 +771,7 @@
_visitNode(node.returnType, suffix: ' ');
_visitToken(node.propertyKeyword, suffix: ' ');
_visitToken(node.operatorKeyword, suffix: ' ');
- _visitNode(node.name);
+ _visitToken(node.name2);
if (!node.isGetter) {
_visitNode(node.typeParameters);
_visitNode(node.parameters);
@@ -792,7 +792,7 @@
void visitMixinDeclaration(MixinDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
sink.write('mixin ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.typeParameters);
_visitNode(node.onClause, prefix: ' ');
_visitNode(node.implementsClause, prefix: ' ');
@@ -958,10 +958,10 @@
_visitToken(node.covariantKeyword, suffix: ' ');
_visitToken(node.keyword, suffix: ' ');
_visitNode(node.type);
- if (node.type != null && node.identifier != null) {
+ if (node.type != null && node.name != null) {
sink.write(' ');
}
- _visitNode(node.identifier);
+ _visitToken(node.name);
}
@override
@@ -1005,7 +1005,7 @@
_visitToken(node.keyword, suffix: ' ');
_visitNode(node.type, suffix: ' ');
sink.write('super.');
- _visitNode(node.identifier);
+ _visitToken(node.name);
_visitNode(node.typeParameters);
_visitNode(node.parameters);
}
@@ -1093,7 +1093,7 @@
if (varianceKeyword != null) {
sink.write('${varianceKeyword.lexeme} ');
}
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.bound, prefix: ' extends ');
}
@@ -1107,7 +1107,7 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
- _visitNode(node.name);
+ _visitToken(node.name2);
_visitNode(node.initializer, prefix: ' = ');
}
diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart
index 251454c..fe970af 100644
--- a/pkg/analyzer/lib/src/dart/ast/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart
@@ -249,7 +249,7 @@
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.abstractKeyword, other.abstractKeyword) &&
isEqualTokens(node.classKeyword, other.classKeyword) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualNodes(node.extendsClause, other.extendsClause) &&
isEqualNodes(node.withClause, other.withClause) &&
@@ -266,7 +266,7 @@
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.typedefKeyword, other.typedefKeyword) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualTokens(node.equals, other.equals) &&
isEqualTokens(node.abstractKeyword, other.abstractKeyword) &&
@@ -332,7 +332,7 @@
isEqualTokens(node.factoryKeyword, other.factoryKeyword) &&
isEqualNodes(node.returnType, other.returnType) &&
isEqualTokens(node.period, other.period) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.parameters, other.parameters) &&
isEqualTokens(node.separator, other.separator) &&
_isEqualNodeLists(node.initializers, other.initializers) &&
@@ -387,7 +387,7 @@
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.keyword, other.keyword) &&
isEqualNodes(node.type, other.type) &&
- isEqualNodes(node.identifier, other.identifier);
+ isEqualTokens(node.name, other.name);
}
@override
@@ -450,7 +450,7 @@
return isEqualNodes(
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
- isEqualNodes(node.name, other.name);
+ isEqualTokens(node.name2, other.name2);
}
@override
@@ -460,7 +460,7 @@
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.enumKeyword, other.enumKeyword) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualTokens(node.leftBracket, other.leftBracket) &&
_isEqualNodeLists(node.constants, other.constants) &&
isEqualTokens(node.rightBracket, other.rightBracket);
@@ -507,7 +507,7 @@
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.extensionKeyword, other.extensionKeyword) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualTokens(node.onKeyword, other.onKeyword) &&
isEqualNodes(node.extendedType, other.extendedType) &&
@@ -547,7 +547,7 @@
isEqualNodes(node.type, other.type) &&
isEqualTokens(node.thisKeyword, other.thisKeyword) &&
isEqualTokens(node.period, other.period) &&
- isEqualNodes(node.identifier, other.identifier);
+ isEqualTokens(node.name, other.name);
}
@override
@@ -627,7 +627,7 @@
isEqualTokens(node.externalKeyword, other.externalKeyword) &&
isEqualNodes(node.returnType, other.returnType) &&
isEqualTokens(node.propertyKeyword, other.propertyKeyword) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.functionExpression, other.functionExpression);
}
@@ -666,7 +666,7 @@
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.typedefKeyword, other.typedefKeyword) &&
isEqualNodes(node.returnType, other.returnType) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualNodes(node.parameters, other.parameters) &&
isEqualTokens(node.semicolon, other.semicolon);
@@ -679,7 +679,7 @@
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualNodes(node.returnType, other.returnType) &&
- isEqualNodes(node.identifier, other.identifier) &&
+ isEqualTokens(node.name, other.name) &&
isEqualNodes(node.parameters, other.parameters);
}
@@ -700,7 +700,7 @@
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.typedefKeyword, other.typedefKeyword) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualTokens(node.equals, other.equals) &&
isEqualNodes(node.type, other.type);
@@ -894,7 +894,7 @@
isEqualNodes(node.returnType, other.returnType) &&
isEqualTokens(node.propertyKeyword, other.propertyKeyword) &&
isEqualTokens(node.operatorKeyword, other.operatorKeyword) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.parameters, other.parameters) &&
isEqualNodes(node.body, other.body);
}
@@ -915,7 +915,7 @@
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.mixinKeyword, other.mixinKeyword) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualNodes(node.typeParameters, other.typeParameters) &&
isEqualNodes(node.onClause, other.onClause) &&
isEqualNodes(node.implementsClause, other.implementsClause) &&
@@ -1099,7 +1099,7 @@
_isEqualNodeLists(node.metadata, other.metadata) &&
isEqualTokens(node.keyword, other.keyword) &&
isEqualNodes(node.type, other.type) &&
- isEqualNodes(node.identifier, other.identifier);
+ isEqualTokens(node.name, other.name);
}
@override
@@ -1153,7 +1153,7 @@
isEqualNodes(node.type, other.type) &&
isEqualTokens(node.superKeyword, other.superKeyword) &&
isEqualTokens(node.period, other.period) &&
- isEqualNodes(node.identifier, other.identifier);
+ isEqualTokens(node.name, other.name);
}
@override
@@ -1250,7 +1250,7 @@
return isEqualNodes(
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualTokens((node as TypeParameterImpl).varianceKeyword,
(other as TypeParameterImpl).varianceKeyword) &&
isEqualTokens(node.extendsKeyword, other.extendsKeyword) &&
@@ -1271,7 +1271,7 @@
return isEqualNodes(
node.documentationComment, other.documentationComment) &&
_isEqualNodeLists(node.metadata, other.metadata) &&
- isEqualNodes(node.name, other.name) &&
+ isEqualTokens(node.name2, other.name2) &&
isEqualTokens(node.equals, other.equals) &&
isEqualNodes(node.initializer, other.initializer);
}
@@ -1805,10 +1805,7 @@
@override
bool visitClassDeclaration(covariant ClassDeclarationImpl node) {
- if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
- } else if (identical(node.typeParameters, _oldNode)) {
+ if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList;
return true;
} else if (identical(node.extendsClause, _oldNode)) {
@@ -1831,10 +1828,7 @@
@override
bool visitClassTypeAlias(covariant ClassTypeAliasImpl node) {
- if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
- } else if (identical(node.typeParameters, _oldNode)) {
+ if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList;
return true;
} else if (identical(node.superclass, _oldNode)) {
@@ -1915,9 +1909,6 @@
if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as Identifier;
return true;
- } else if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
} else if (identical(node.parameters, _oldNode)) {
node.parameters = _newNode as FormalParameterList;
return true;
@@ -1986,9 +1977,6 @@
if (identical(node.type, _oldNode)) {
node.type = _newNode as TypeAnnotation;
return true;
- } else if (identical(node.identifier, _oldNode)) {
- node.identifier = _newNode as SimpleIdentifier;
- return true;
}
return visitAnnotatedNode(node);
}
@@ -2048,19 +2036,12 @@
@override
bool visitEnumConstantDeclaration(
covariant EnumConstantDeclarationImpl node) {
- if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
- }
return visitAnnotatedNode(node);
}
@override
bool visitEnumDeclaration(covariant EnumDeclarationImpl node) {
- if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
- } else if (identical(node.typeParameters, _oldNode)) {
+ if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList;
return true;
} else if (identical(node.withClause, _oldNode)) {
@@ -2115,9 +2096,6 @@
return true;
} else if (_replaceInList(node.metadata)) {
return true;
- } else if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
} else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList;
return true;
@@ -2264,9 +2242,6 @@
if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as TypeAnnotation;
return true;
- } else if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
} else if (identical(node.functionExpression, _oldNode)) {
node.functionExpression = _newNode as FunctionExpression;
return true;
@@ -2332,9 +2307,6 @@
if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as TypeAnnotation;
return true;
- } else if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
} else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList;
return true;
@@ -2379,10 +2351,7 @@
@override
bool visitGenericTypeAlias(GenericTypeAlias node) {
var nodeImpl = node as GenericTypeAliasImpl;
- if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
- } else if (identical(node.typeParameters, _oldNode)) {
+ if (identical(node.typeParameters, _oldNode)) {
nodeImpl.typeParameters = _newNode as TypeParameterList;
return true;
} else if (identical(node.type, _oldNode)) {
@@ -2591,9 +2560,6 @@
if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as TypeAnnotation;
return true;
- } else if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
} else if (identical(node.parameters, _oldNode)) {
node.parameters = _newNode as FormalParameterList;
return true;
@@ -2632,9 +2598,6 @@
return true;
} else if (_replaceInList(node.metadata)) {
return true;
- } else if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
} else if (identical(node.typeParameters, _oldNode)) {
node.typeParameters = _newNode as TypeParameterList;
return true;
@@ -2707,9 +2670,6 @@
if (identical(node.documentationComment, _oldNode)) {
node.documentationComment = _newNode as Comment;
return true;
- } else if (identical(node.identifier, _oldNode)) {
- node.identifier = _newNode as SimpleIdentifier;
- return true;
} else if (_replaceInList(node.metadata)) {
return true;
}
@@ -3016,10 +2976,7 @@
@override
bool visitTypeParameter(covariant TypeParameterImpl node) {
- if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
- } else if (identical(node.bound, _oldNode)) {
+ if (identical(node.bound, _oldNode)) {
node.bound = _newNode as TypeAnnotation;
return true;
}
@@ -3044,10 +3001,7 @@
@override
bool visitVariableDeclaration(covariant VariableDeclarationImpl node) {
- if (identical(node.name, _oldNode)) {
- node.name = _newNode as SimpleIdentifier;
- return true;
- } else if (identical(node.initializer, _oldNode)) {
+ if (identical(node.initializer, _oldNode)) {
node.initializer = _newNode as Expression;
return true;
// TODO(srawlins) also replace node's declared element's
@@ -3173,8 +3127,8 @@
@override
void visitCatchClause(CatchClause node) {
- _addToScope2(node.exceptionParameter2?.name);
- _addToScope2(node.stackTraceParameter2?.name);
+ _addToScope(node.exceptionParameter2?.name);
+ _addToScope(node.stackTraceParameter2?.name);
super.visitCatchClause(node);
}
@@ -3193,7 +3147,7 @@
@override
void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
- _addToScope(node.loopVariable.identifier);
+ _addToScope(node.loopVariable.name);
super.visitForEachPartsWithDeclaration(node);
}
@@ -3260,28 +3214,19 @@
void _addParameters(NodeList<FormalParameter> 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)) {
- _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);
}
}
void _addVariables(NodeList<VariableDeclaration> variables) {
for (VariableDeclaration variable in variables) {
- _addToScope(variable.name);
+ _addToScope(variable.name2);
}
}
@@ -3297,21 +3242,12 @@
_addVariables(statement.variables.variables);
} else if (statement is FunctionDeclarationStatement &&
!_referenceIsWithinLocalFunction) {
- _addToScope(statement.functionDeclaration.name);
+ _addToScope(statement.functionDeclaration.name2);
}
}
}
- bool _isInRange(AstNode node) {
- 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) {
+ bool _isInRange(Token token) {
if (_position < 0) {
// if source position is not set then all nodes are in range
return true;
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index 2095651..e197e85 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -373,7 +373,7 @@
// lookup for ==
var method = element.lookUpConcreteMethod("==", _currentLibrary);
if (method == null ||
- (method.enclosingElement2 as ClassElement).isDartCoreObject) {
+ (method.enclosingElement3 as ClassElement).isDartCoreObject) {
return false;
}
// there is == that we don't like
@@ -576,7 +576,8 @@
if (member is FieldDeclaration && !member.isStatic) {
for (VariableDeclaration variableDeclaration
in member.fields.variables) {
- if (isEnumDeclaration && variableDeclaration.name.name == 'values') {
+ if (isEnumDeclaration &&
+ variableDeclaration.name2.lexeme == 'values') {
continue;
}
var initializer = variableDeclaration.initializer;
@@ -597,7 +598,7 @@
CompileTimeErrorCode
.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST,
constKeyword,
- [variableDeclaration.name.name]);
+ [variableDeclaration.name2.lexeme]);
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index 3449496..2f0dfe0 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -198,7 +198,7 @@
void computeDependencies(
ConstantEvaluationTarget constant, ReferenceFinderCallback callback) {
if (constant is ConstFieldElementImpl && constant.isEnumConstant) {
- var enclosing = constant.enclosingElement2;
+ var enclosing = constant.enclosingElement3;
if (enclosing is EnumElementImpl) {
if (enclosing.name == 'values') {
return;
@@ -258,7 +258,7 @@
}
}
}
- for (FieldElement field in constant.enclosingElement2.fields) {
+ for (FieldElement field in constant.enclosingElement3.fields) {
// Note: non-static const isn't allowed but we handle it anyway so
// that we won't be confused by incorrect code.
if ((field.isFinal || field.isConst) &&
@@ -372,7 +372,7 @@
return null;
}
var typeProvider = constructor.library.typeProvider;
- if (constructor.enclosingElement2 == typeProvider.symbolElement) {
+ if (constructor.enclosingElement3 == typeProvider.symbolElement) {
// The dart:core.Symbol has a const factory constructor that redirects
// to dart:_internal.Symbol. That in turn redirects to an external
// const constructor, which we won't be able to evaluate.
@@ -396,7 +396,7 @@
static _EnumConstant? _enumConstant(VariableElementImpl element) {
if (element is ConstFieldElementImpl && element.isEnumConstant) {
- var enum_ = element.enclosingElement2;
+ var enum_ = element.enclosingElement3;
if (enum_ is EnumElementImpl) {
var index = enum_.constants.indexOf(element);
assert(index >= 0);
@@ -873,7 +873,7 @@
if (element.name == "identical") {
NodeList<Expression> arguments = node.argumentList.arguments;
if (arguments.length == 2) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is CompilationUnitElement) {
LibraryElement library = enclosingElement.library;
if (library.isDartCore) {
@@ -1427,7 +1427,7 @@
return false;
}
return identifier.name == 'length' &&
- identifier.staticElement?.enclosingElement2 is! ExtensionElement;
+ identifier.staticElement?.enclosingElement3 is! ExtensionElement;
}
void _reportNotPotentialConstants(AstNode node) {
@@ -2129,7 +2129,7 @@
List<Expression> arguments, {
required bool isNullSafe,
}) {
- ClassElement definingClass = _constructor.enclosingElement2;
+ final definingClass = _constructor.enclosingElement3;
var argumentCount = arguments.length;
if (_constructor.name == "fromEnvironment") {
if (!_checkFromEnvironmentArguments(arguments, definingType)) {
@@ -2232,7 +2232,7 @@
}
void _checkFields() {
- var fields = _constructor.enclosingElement2.fields;
+ var fields = _constructor.enclosingElement3.fields;
for (var field in fields) {
if ((field.isFinal || field.isConst) &&
!field.isStatic &&
@@ -2521,7 +2521,7 @@
}
void _checkTypeParameters() {
- var typeParameters = _constructor.enclosingElement2.typeParameters;
+ var typeParameters = _constructor.enclosingElement3.typeParameters;
var typeArguments = _typeArguments;
if (typeParameters.isNotEmpty &&
typeArguments != null &&
diff --git a/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart b/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
index 284072f..c4e7db3 100644
--- a/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
+++ b/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
@@ -227,7 +227,7 @@
}
if (element is ParameterElement) {
- var enclosing = element.enclosingElement2;
+ var enclosing = element.enclosingElement3;
if (enclosing is ConstructorElement &&
isConstConstructorElement(enclosing)) {
if (node.thisOrAncestorOfType<ConstructorInitializer>() != null) {
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index b9ef02c..cd1e068 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -103,17 +103,23 @@
@override
String get displayName => name;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElementImpl get enclosingElement {
return _enclosingElement as CompilationUnitElementImpl;
}
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElementImpl get enclosingElement2 {
return _enclosingElement as CompilationUnitElementImpl;
}
+ @override
+ CompilationUnitElementImpl get enclosingElement3 {
+ return _enclosingElement as CompilationUnitElementImpl;
+ }
+
/// Set the fields contained in this class to the given [fields].
set fields(List<FieldElement> fields) {
assert(!isMixinApplication);
@@ -320,7 +326,7 @@
!getter.isAbstract &&
!getter.isStatic &&
getter.isAccessibleIn2(library) &&
- getter.enclosingElement2 != this));
+ getter.enclosingElement3 != this));
ExecutableElement? lookUpInheritedConcreteMember(
String name, LibraryElement library) {
@@ -340,7 +346,7 @@
!method.isAbstract &&
!method.isStatic &&
method.isAccessibleIn2(library) &&
- method.enclosingElement2 != this));
+ method.enclosingElement3 != this));
@override
PropertyAccessorElement? lookUpInheritedConcreteSetter(
@@ -350,7 +356,7 @@
!setter.isAbstract &&
!setter.isStatic &&
setter.isAccessibleIn2(library) &&
- setter.enclosingElement2 != this));
+ setter.enclosingElement3 != this));
@override
MethodElement? lookUpInheritedMethod(
@@ -359,7 +365,7 @@
(MethodElement method) =>
!method.isStatic &&
method.isAccessibleIn2(library) &&
- method.enclosingElement2 != this));
+ method.enclosingElement3 != this));
@override
MethodElement? lookUpMethod(String methodName, LibraryElement library) =>
@@ -545,18 +551,24 @@
required this.uri,
}) : super(null, importKeywordOffset);
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElementImpl get enclosingElement {
return super.enclosingElement2 as LibraryOrAugmentationElementImpl;
}
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElementImpl get enclosingElement2 {
return super.enclosingElement2 as LibraryOrAugmentationElementImpl;
}
@override
+ LibraryOrAugmentationElementImpl get enclosingElement3 {
+ return super.enclosingElement3 as LibraryOrAugmentationElementImpl;
+ }
+
+ @override
LibraryAugmentationElementImpl? get importedAugmentation {
final uri = this.uri;
if (uri is DirectiveUriWithAugmentationImpl) {
@@ -714,7 +726,7 @@
bool get hasNoSuchMethod {
MethodElement? method = lookUpConcreteMethod(
FunctionElement.NO_SUCH_METHOD_METHOD_NAME, library);
- var definingClass = method?.enclosingElement2 as ClassElement?;
+ var definingClass = method?.enclosingElement3 as ClassElement?;
return definingClass != null && !definingClass.isDartCoreObject;
}
@@ -1140,16 +1152,21 @@
_classes = classes;
}
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryElement get enclosingElement =>
super.enclosingElement2 as LibraryElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElement get enclosingElement2 =>
super.enclosingElement2 as LibraryOrAugmentationElement;
@override
+ LibraryOrAugmentationElement get enclosingElement3 =>
+ super.enclosingElement3 as LibraryOrAugmentationElement;
+
+ @override
CompilationUnitElementImpl get enclosingUnit {
return this;
}
@@ -1224,7 +1241,7 @@
}
@override
- AnalysisSession get session => enclosingElement2.session;
+ AnalysisSession get session => enclosingElement3.session;
@override
List<TopLevelVariableElement> get topLevelVariables {
@@ -1398,7 +1415,7 @@
@override
String get displayName {
- var className = enclosingElement2.name;
+ var className = enclosingElement3.name;
var name = this.name;
if (name.isNotEmpty) {
return '$className.$name';
@@ -1407,16 +1424,21 @@
}
}
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
AbstractClassElementImpl get enclosingElement =>
super.enclosingElement2 as AbstractClassElementImpl;
+ @Deprecated('Use enclosingElement3 instead')
@override
AbstractClassElementImpl get enclosingElement2 =>
super.enclosingElement2 as AbstractClassElementImpl;
@override
+ InterfaceElement get enclosingElement3 =>
+ super.enclosingElement3 as AbstractClassElementImpl;
+
+ @override
bool get isConst {
return hasModifier(Modifier.CONST);
}
@@ -1451,7 +1473,7 @@
@override
Element get nonSynthetic {
- return isSynthetic ? enclosingElement2 : this;
+ return isSynthetic ? enclosingElement3 : this;
}
@override
@@ -1476,7 +1498,7 @@
@override
InterfaceType get returnTypeInternal {
- return (_returnType ??= enclosingElement2.thisType) as InterfaceType;
+ return (_returnType ??= enclosingElement3.thisType) as InterfaceType;
}
ConstructorElement? get superConstructor {
@@ -1605,7 +1627,7 @@
if (library == null) {
throw StateError(
'[library: null][this: ($runtimeType) $this]'
- '[enclosingElement2: $enclosingElement2]'
+ '[enclosingElement: $enclosingElement3]'
'[reference: $reference]',
);
}
@@ -1977,7 +1999,7 @@
final element = this.element;
if (element is ConstructorElement) {
return element.library.isDartCore &&
- element.enclosingElement2.name == _DEPRECATED_CLASS_NAME;
+ element.enclosingElement3.name == _DEPRECATED_CLASS_NAME;
} else if (element is PropertyAccessorElement) {
return element.library.isDartCore &&
element.name == _DEPRECATED_VARIABLE_NAME;
@@ -2107,7 +2129,7 @@
}) {
final element = this.element;
return element is ConstructorElement &&
- element.enclosingElement2.name == className &&
+ element.enclosingElement3.name == className &&
element.library.name == libraryName;
}
@@ -2221,7 +2243,7 @@
_docComment = doc;
}
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
Element? get enclosingElement => _enclosingElement;
@@ -2230,9 +2252,13 @@
_enclosingElement = element as ElementImpl?;
}
+ @Deprecated('Use enclosingElement3 instead')
@override
Element? get enclosingElement2 => _enclosingElement;
+ @override
+ Element? get enclosingElement3 => _enclosingElement;
+
/// Return the enclosing unit element (which might be the same as `this`), or
/// `null` if this element is not contained in any compilation unit.
CompilationUnitElementImpl get enclosingUnit {
@@ -2581,12 +2607,12 @@
@override
AnalysisSession? get session {
- return enclosingElement2?.session;
+ return enclosingElement3?.session;
}
@override
Source? get source {
- return enclosingElement2?.source;
+ return enclosingElement3?.source;
}
/// Return the context to resolve type parameters in, or `null` if neither
@@ -2696,7 +2722,7 @@
) {
Element? element = this;
while (element != null && !predicate(element)) {
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
return element as E?;
}
@@ -2706,9 +2732,9 @@
Element? element = this;
while (element != null && element is! E) {
if (element is CompilationUnitElement) {
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
} else {
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
}
return element as E?;
@@ -2787,7 +2813,7 @@
Element? ancestor = element;
while (ancestor != null) {
components.insert(0, (ancestor as ElementImpl).identifier);
- ancestor = ancestor.enclosingElement2;
+ ancestor = ancestor.enclosingElement3;
}
_components = components;
}
@@ -3044,14 +3070,18 @@
/// [offset].
ExecutableElementImpl(String super.name, super.offset, {super.reference});
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement => super.enclosingElement2!;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement2 => super.enclosingElement2!;
@override
+ Element get enclosingElement3 => super.enclosingElement3!;
+
+ @override
bool get hasImplicitReturnType {
return hasModifier(Modifier.IMPLICIT_TYPE);
}
@@ -3321,18 +3351,24 @@
@override
String get displayName => name ?? '';
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElementImpl get enclosingElement {
return _enclosingElement as CompilationUnitElementImpl;
}
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElementImpl get enclosingElement2 {
return super.enclosingElement2 as CompilationUnitElementImpl;
}
@override
+ CompilationUnitElementImpl get enclosingElement3 {
+ return super.enclosingElement3 as CompilationUnitElementImpl;
+ }
+
+ @override
DartType get extendedType =>
ElementTypeProvider.current.getExtendedType(this);
@@ -3530,7 +3566,7 @@
///
/// Such fields are `index`, `_name`, and `values`.
bool get isSyntheticEnumField {
- return enclosingElement2 is EnumElementImpl &&
+ return enclosingElement3 is EnumElementImpl &&
isSynthetic &&
getter?.isSynthetic == true &&
setter == null;
@@ -3598,7 +3634,7 @@
@override
String get identifier {
String identifier = super.identifier;
- Element? enclosing = enclosingElement2;
+ Element? enclosing = enclosingElement3;
if (enclosing is ExecutableElement || enclosing is VariableElement) {
identifier += "@$nameOffset";
}
@@ -3866,15 +3902,20 @@
@override
String get displayName => name;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
ExecutableElement get enclosingElement =>
super.enclosingElement2 as ExecutableElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
ExecutableElement get enclosingElement2 =>
super.enclosingElement2 as ExecutableElement;
+ @override
+ ExecutableElement get enclosingElement3 =>
+ super.enclosingElement3 as ExecutableElement;
+
/// Return `true` if this label is associated with a `switch` member (`case
/// ` or`default`).
bool get isOnSwitchMember => _onSwitchMember;
@@ -4840,8 +4881,8 @@
@override
Element get nonSynthetic {
- if (isSynthetic && enclosingElement2 is EnumElementImpl) {
- return enclosingElement2;
+ if (isSynthetic && enclosingElement3 is EnumElementImpl) {
+ return enclosingElement3;
}
return this;
}
@@ -5087,13 +5128,18 @@
@override
String? get documentationComment => null;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element? get enclosingElement => null;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element? get enclosingElement2 => null;
@override
+ Element? get enclosingElement3 => null;
+
+ @override
bool get hasAlwaysThrows => false;
@override
@@ -5321,13 +5367,17 @@
/// [offset].
NonParameterVariableElementImpl(String super.name, super.offset);
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement => super.enclosingElement2!;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement2 => super.enclosingElement2!;
+ @override
+ Element get enclosingElement3 => super.enclosingElement3!;
+
bool get hasInitializer {
return hasModifier(Modifier.HAS_INITIALIZER);
}
@@ -5596,7 +5646,7 @@
@override
CompilationUnitElementImpl get enclosingUnit {
- var enclosingLibrary = enclosingElement2 as LibraryElementImpl;
+ var enclosingLibrary = enclosingElement3 as LibraryElementImpl;
return enclosingLibrary._definingCompilationUnit;
}
@@ -5627,15 +5677,20 @@
@override
String get displayName => name;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryElement get enclosingElement =>
super.enclosingElement2 as LibraryElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElementImpl get enclosingElement2 =>
super.enclosingElement2 as LibraryOrAugmentationElementImpl;
+ @override
+ LibraryOrAugmentationElementImpl get enclosingElement3 =>
+ super.enclosingElement3 as LibraryOrAugmentationElementImpl;
+
@Deprecated('Use imports2 instead')
@override
List<ImportElement> get imports {
@@ -5646,7 +5701,7 @@
@override
List<LibraryImportElement> get imports2 {
- return enclosingElement2.libraryImports
+ return enclosingElement3.libraryImports
.where((import) => import.prefix?.element == this)
.toList();
}
@@ -5660,7 +5715,7 @@
}
@override
- Scope get scope => _scope ??= PrefixScope(enclosingElement2, this);
+ Scope get scope => _scope ??= PrefixScope(enclosingElement3, this);
@override
T? accept<T>(ElementVisitor<T> visitor) => visitor.visitPrefixElement(this);
@@ -5801,14 +5856,18 @@
reference?.element = this;
}
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement => variable.enclosingElement2!;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement2 => variable.enclosingElement2!;
@override
+ Element get enclosingElement3 => variable.enclosingElement3!;
+
+ @override
bool get hasImplicitReturnType => variable.hasImplicitType;
@override
@@ -5820,8 +5879,8 @@
if (!variable.isSynthetic) {
return variable;
}
- assert(enclosingElement2 is EnumElementImpl);
- return enclosingElement2;
+ assert(enclosingElement3 is EnumElementImpl);
+ return enclosingElement3;
}
@override
@@ -5866,14 +5925,18 @@
property.setter = this;
}
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement => variable.enclosingElement2!;
+ @Deprecated('Use enclosingElement3 instead')
@override
Element get enclosingElement2 => variable.enclosingElement2!;
@override
+ Element get enclosingElement3 => variable.enclosingElement3!;
+
+ @override
bool get isSetter => true;
@override
@@ -5969,10 +6032,10 @@
@override
Element get nonSynthetic {
if (isSynthetic) {
- if (enclosingElement2 is EnumElementImpl) {
+ if (enclosingElement3 is EnumElementImpl) {
// TODO(scheglov) remove 'index'?
if (name == 'index' || name == 'values') {
- return enclosingElement2;
+ return enclosingElement3;
}
}
return (getter ?? setter)!;
@@ -6113,16 +6176,16 @@
@override
ParameterElement? get superConstructorParameter {
- final enclosingElement2 = this.enclosingElement2;
- if (enclosingElement2 is ConstructorElementImpl) {
- var superConstructor = enclosingElement2.superConstructor;
+ final enclosingElement3 = this.enclosingElement3;
+ if (enclosingElement3 is ConstructorElementImpl) {
+ var superConstructor = enclosingElement3.superConstructor;
if (superConstructor != null) {
var superParameters = superConstructor.parameters;
if (isNamed) {
return superParameters
.firstWhereOrNull((e) => e.isNamed && e.name == name);
} else {
- var index = indexIn(enclosingElement2);
+ var index = indexIn(enclosingElement3);
var positionalSuperParameters =
superParameters.where((e) => e.isPositional).toList();
if (index >= 0 && index < positionalSuperParameters.length) {
@@ -6223,15 +6286,20 @@
@override
String get displayName => name;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElement get enclosingElement =>
super.enclosingElement2 as CompilationUnitElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
CompilationUnitElement get enclosingElement2 =>
super.enclosingElement2 as CompilationUnitElement;
+ @override
+ CompilationUnitElement get enclosingElement3 =>
+ super.enclosingElement3 as CompilationUnitElement;
+
/// Returns whether this alias is a "proper rename" of [aliasedClass], as
/// defined in the constructor-tearoffs specification.
bool get isProperRename {
@@ -6470,7 +6538,7 @@
return true;
}
if (other is TypeParameterElement) {
- if (other.enclosingElement2 == null || enclosingElement2 == null) {
+ if (other.enclosingElement3 == null || enclosingElement3 == null) {
return identical(other, this);
}
return other.location == location;
@@ -6700,7 +6768,7 @@
String? get documentationComment => base.documentationComment;
@override
- Element? get enclosingElement => base.enclosingElement2;
+ Element? get enclosingElement => base.enclosingElement3;
@override
bool get hasAlwaysThrows => base.hasAlwaysThrows;
@@ -6866,7 +6934,7 @@
Source get librarySource => library.source;
@override
- Source get source => enclosingElement2!.source!;
+ Source get source => enclosingElement3!.source!;
}
/// Instances of [List]s that are used as "not yet computed" values, they
diff --git a/pkg/analyzer/lib/src/dart/element/extensions.dart b/pkg/analyzer/lib/src/dart/element/extensions.dart
index 6b256a0..6186e8a 100644
--- a/pkg/analyzer/lib/src/dart/element/extensions.dart
+++ b/pkg/analyzer/lib/src/dart/element/extensions.dart
@@ -16,21 +16,21 @@
/// Return the target kinds defined for this [ElementAnnotation].
Set<TargetKind> get targetKinds {
final element = this.element;
- ClassElement? classElement;
+ InterfaceElement? interfaceElement;
if (element is PropertyAccessorElement) {
if (element.isGetter) {
var type = element.returnType;
if (type is InterfaceType) {
- classElement = type.element;
+ interfaceElement = type.element;
}
}
} else if (element is ConstructorElement) {
- classElement = element.enclosingElement2;
+ interfaceElement = element.enclosingElement3;
}
- if (classElement == null) {
+ if (interfaceElement == null) {
return const <TargetKind>{};
}
- for (var annotation in classElement.metadata) {
+ for (var annotation in interfaceElement.metadata) {
if (annotation.isTarget) {
var value = annotation.computeConstantValue()!;
var kinds = <TargetKind>{};
@@ -68,21 +68,21 @@
return true;
}
- var ancestor = enclosingElement2;
+ var ancestor = enclosingElement3;
if (ancestor is ClassElement) {
if (ancestor.hasDoNotStore) {
return true;
}
- ancestor = ancestor.enclosingElement2;
+ ancestor = ancestor.enclosingElement3;
} else if (ancestor is ExtensionElement) {
if (ancestor.hasDoNotStore) {
return true;
}
- ancestor = ancestor.enclosingElement2;
+ ancestor = ancestor.enclosingElement3;
}
return ancestor is CompilationUnitElement &&
- ancestor.enclosingElement2.hasDoNotStore;
+ ancestor.enclosingElement3.hasDoNotStore;
}
/// Return `true` if this element is an instance member of a class or mixin.
@@ -94,7 +94,7 @@
/// [PropertyAccessorElement]s.
bool get isInstanceMember {
var this_ = this;
- var enclosing = this_.enclosingElement2;
+ var enclosing = this_.enclosingElement3;
if (enclosing is ClassElement) {
return this_ is MethodElement && !this_.isStatic ||
this_ is PropertyAccessorElement && !this_.isStatic;
@@ -105,7 +105,7 @@
extension ExecutableElementExtension on ExecutableElement {
bool get isEnumConstructor {
- return this is ConstructorElement && enclosingElement2 is EnumElementImpl;
+ return this is ConstructorElement && enclosingElement3 is EnumElementImpl;
}
}
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index 9768db4..ad86fb1 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -366,7 +366,7 @@
continue;
}
- var class_ = executable.enclosingElement2;
+ var class_ = executable.enclosingElement3;
if (class_ is ClassElement && class_.isDartCoreObject) {
continue;
}
@@ -518,7 +518,7 @@
}
var current = currentList.single;
- if (candidate.enclosingElement2 == mixinElement) {
+ if (candidate.enclosingElement3 == mixinElement) {
namedCandidates[name] = [
isNonNullableByDefault
? candidate
@@ -714,7 +714,7 @@
Name name,
ExecutableElement executable,
) {
- if (executable.enclosingElement2 == class_) {
+ if (executable.enclosingElement3 == class_) {
return executable;
}
@@ -902,7 +902,7 @@
}
static bool _isDeclaredInObject(ExecutableElement element) {
- var enclosing = element.enclosingElement2;
+ var enclosing = element.enclosingElement3;
return enclosing is ClassElement &&
enclosing.supertype == null &&
!enclosing.isMixin;
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 242170d..b0708f0 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -43,14 +43,18 @@
@override
String get displayName => declaration.displayName;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
ClassElement get enclosingElement => declaration.enclosingElement2;
+ @Deprecated('Use enclosingElement3 instead')
@override
ClassElement get enclosingElement2 => declaration.enclosingElement2;
@override
+ InterfaceElement get enclosingElement3 => declaration.enclosingElement3;
+
+ @override
bool get isConst => declaration.isConst;
@override
@@ -348,12 +352,16 @@
@override
String get displayName => declaration.displayName;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
- Element get enclosingElement => declaration.enclosingElement2;
+ Element get enclosingElement => declaration.enclosingElement3;
+
+ @Deprecated('Use enclosingElement3 instead')
+ @override
+ Element get enclosingElement2 => declaration.enclosingElement3;
@override
- Element get enclosingElement2 => declaration.enclosingElement2;
+ Element get enclosingElement3 => declaration.enclosingElement3;
@override
PropertyAccessorElement? get getter {
@@ -442,12 +450,16 @@
@override
FunctionElement get declaration => super.declaration as FunctionElement;
+ @Deprecated('Use enclosingElement3 instead')
@override
- Element get enclosingElement => declaration.enclosingElement2;
+ Element get enclosingElement => declaration.enclosingElement3;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
- Element get enclosingElement2 => declaration.enclosingElement2;
+ Element get enclosingElement2 => declaration.enclosingElement3;
+
+ @override
+ Element get enclosingElement3 => declaration.enclosingElement3;
@override
bool get isDartCoreIdentical => declaration.isDartCoreIdentical;
@@ -505,12 +517,16 @@
@override
String? get documentationComment => _declaration.documentationComment;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
- Element? get enclosingElement => _declaration.enclosingElement2;
+ Element? get enclosingElement => _declaration.enclosingElement3;
+
+ @Deprecated('Use enclosingElement3 instead')
+ @override
+ Element? get enclosingElement2 => _declaration.enclosingElement3;
@override
- Element? get enclosingElement2 => _declaration.enclosingElement2;
+ Element? get enclosingElement3 => _declaration.enclosingElement3;
@override
bool get hasAlwaysThrows => _declaration.hasAlwaysThrows;
@@ -799,12 +815,16 @@
@override
MethodElement get declaration => super.declaration as MethodElement;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
- Element get enclosingElement => declaration.enclosingElement2;
+ Element get enclosingElement => declaration.enclosingElement3;
+
+ @Deprecated('Use enclosingElement3 instead')
+ @override
+ Element get enclosingElement2 => declaration.enclosingElement3;
@override
- Element get enclosingElement2 => declaration.enclosingElement2;
+ Element get enclosingElement3 => declaration.enclosingElement3;
@override
String get name => declaration.name;
@@ -887,12 +907,16 @@
@override
String? get defaultValueCode => declaration.defaultValueCode;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
- Element? get enclosingElement => declaration.enclosingElement2;
+ Element? get enclosingElement => declaration.enclosingElement3;
+
+ @Deprecated('Use enclosingElement3 instead')
+ @override
+ Element? get enclosingElement2 => declaration.enclosingElement3;
@override
- Element? get enclosingElement2 => declaration.enclosingElement2;
+ Element? get enclosingElement3 => declaration.enclosingElement3;
@override
bool get hasDefaultValue => declaration.hasDefaultValue;
@@ -1032,12 +1056,16 @@
PropertyAccessorElement get declaration =>
super.declaration as PropertyAccessorElement;
- @Deprecated('Use enclosingElement2 instead')
+ @Deprecated('Use enclosingElement3 instead')
@override
- Element get enclosingElement => declaration.enclosingElement2;
+ Element get enclosingElement => declaration.enclosingElement3;
+
+ @Deprecated('Use enclosingElement3 instead')
+ @override
+ Element get enclosingElement2 => declaration.enclosingElement3;
@override
- Element get enclosingElement2 => declaration.enclosingElement2;
+ Element get enclosingElement3 => declaration.enclosingElement3;
@override
bool get isGetter => declaration.isGetter;
diff --git a/pkg/analyzer/lib/src/dart/element/type_system.dart b/pkg/analyzer/lib/src/dart/element/type_system.dart
index 3faa7fb..eaff897 100644
--- a/pkg/analyzer/lib/src/dart/element/type_system.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_system.dart
@@ -1696,7 +1696,7 @@
// If the method being invoked comes from an extension, don't refine the
// type because we can only make guarantees about methods defined in the
// SDK, and the numeric methods we refine are all instance methods.
- if (methodElement.enclosingElement2 is ExtensionElement) {
+ if (methodElement.enclosingElement3 is ExtensionElement) {
return currentType;
}
@@ -1800,7 +1800,7 @@
// If the method being invoked comes from an extension, don't refine the
// type because we can only make guarantees about methods defined in the
// SDK, and the numeric methods we refine are all instance methods.
- if (methodElement.enclosingElement2 is ExtensionElement) {
+ if (methodElement.enclosingElement3 is ExtensionElement) {
return currentType;
}
diff --git a/pkg/analyzer/lib/src/dart/micro/utils.dart b/pkg/analyzer/lib/src/dart/micro/utils.dart
index c5113f7..48c3c78 100644
--- a/pkg/analyzer/lib/src/dart/micro/utils.dart
+++ b/pkg/analyzer/lib/src/dart/micro/utils.dart
@@ -5,6 +5,7 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.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/element/element.dart';
import 'package:collection/src/iterable_extensions.dart';
@@ -15,6 +16,9 @@
if (node == null) {
return null;
}
+ if (node is DeclaredSimpleIdentifier) {
+ node = node.parent;
+ }
if (node is SimpleIdentifier && node.parent is LibraryIdentifier) {
node = node.parent;
}
@@ -43,8 +47,8 @@
ConstructorElement? constructor) {
var seenConstructors = <ConstructorElement?>{};
while (constructor is ConstructorElementImpl && constructor.isSynthetic) {
- var enclosing = constructor.enclosingElement2;
- if (enclosing.isMixinApplication) {
+ var enclosing = constructor.enclosingElement3;
+ if (enclosing is ClassElement && enclosing.isMixinApplication) {
var superInvocation = constructor.constantInitializers
.whereType<SuperConstructorInvocation>()
.singleOrNull;
@@ -73,7 +77,7 @@
String prefix,
Element element,
Map<LibraryImportElement, Set<Element>> importElementsMap) {
- if (element.enclosingElement2 is! CompilationUnitElement) {
+ if (element.enclosingElement3 is! CompilationUnitElement) {
return null;
}
var usedLibrary = element.library;
@@ -280,7 +284,7 @@
MatchInfo(e.nameOffset + e.nameLength, 0, MatchKind.DECLARATION));
} else {
var offset = node.period!.offset;
- var length = node.name!.end - offset;
+ var length = node.name2!.end - offset;
references.add(MatchInfo(offset, length, MatchKind.DECLARATION));
}
}
@@ -310,7 +314,7 @@
length = 0;
}
references.add(MatchInfo(offset, length, kind));
- } else if (e != null && e.enclosingElement2 == element) {
+ } else if (e != null && e.enclosingElement3 == element) {
kind = MatchKind.REFERENCE;
offset = node.offset;
length = element.nameLength;
@@ -329,7 +333,7 @@
offset = constructorSelector.period.offset;
length = constructorSelector.name.end - offset;
} else {
- offset = node.name.end;
+ offset = node.name2.end;
length = 0;
}
var kind = node.arguments == null
diff --git a/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
index 339f8df..0e5cbf2 100644
--- a/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
@@ -29,15 +29,16 @@
}
node.constructorName.accept(_resolver);
var element = node.constructorName.staticElement;
- if (element != null &&
- !element.isFactory &&
- element.enclosingElement2.isAbstract) {
- _resolver.errorReporter.reportErrorForNode(
- CompileTimeErrorCode
- .TEAROFF_OF_GENERATIVE_CONSTRUCTOR_OF_ABSTRACT_CLASS,
- node,
- [],
- );
+ if (element != null && !element.isFactory) {
+ final enclosingElement = element.enclosingElement3;
+ if (enclosingElement is ClassElement && enclosingElement.isAbstract) {
+ _resolver.errorReporter.reportErrorForNode(
+ CompileTimeErrorCode
+ .TEAROFF_OF_GENERATIVE_CONSTRUCTOR_OF_ABSTRACT_CLASS,
+ node,
+ [],
+ );
+ }
}
var name = node.constructorName.name;
if (element == null &&
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
index dba662f..d746b4b 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart
@@ -175,7 +175,7 @@
ExecutableElement element, {
required bool implicitReceiver,
}) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (implicitReceiver) {
if (_resolver.enclosingExtension != null) {
_resolver.errorReporter.reportErrorForNode(
diff --git a/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
index 729d28a..52a7b37 100644
--- a/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
@@ -26,7 +26,7 @@
int unnamedParameterIndex = 0;
for (var formalParameter in parameters) {
var key = formalParameter.isNamed
- ? formalParameter.identifier?.name ?? ''
+ ? formalParameter.name?.lexeme ?? ''
: unnamedParameterIndex++;
if (formalParameter.isExplicitlyTyped) {
result.add(key);
diff --git a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
index ac88021..0f67ceec 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -220,7 +220,7 @@
ExecutableElement element,
bool nullReceiver,
) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (nullReceiver) {
if (_resolver.enclosingExtension != null) {
_resolver.errorReporter.reportErrorForNode(
diff --git a/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart
index cc95ced..362b8a7 100644
--- a/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart
@@ -568,7 +568,7 @@
if (element is LocalVariableElement ||
(element is FunctionElement &&
- element.enclosingElement2 is ExecutableElement)) {
+ element.enclosingElement3 is ExecutableElement)) {
errorReporter.reportError(
DiagnosticFactory().referencedBeforeDeclaration(
errorReporter.source,
diff --git a/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart
index 08996d4..53483f9 100644
--- a/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart
@@ -135,7 +135,7 @@
return false;
}
if (parent is ConstructorDeclaration) {
- if (parent.name == node || parent.returnType == node) {
+ if (parent.returnType == node) {
return false;
}
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
index fd96f2e..082e7fb 100644
--- a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
@@ -291,7 +291,7 @@
propertyName,
);
} else {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ExtensionElement &&
enclosingElement.name == null) {
_resolver.errorReporter.reportErrorForNode(
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index a528110..1283c93 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -240,7 +240,7 @@
@override
void visitClassDeclaration(covariant ClassDeclarationImpl node) {
ClassElementImpl element = _elementWalker!.getClass();
- node.name.staticElement = element;
+ node.declaredElement = element;
_namedTypeResolver.enclosingClass = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -275,7 +275,7 @@
@override
void visitClassTypeAlias(covariant ClassTypeAliasImpl node) {
ClassElementImpl element = _elementWalker!.getClass();
- node.name.staticElement = element;
+ node.declaredElement = element;
_namedTypeResolver.enclosingClass = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -303,7 +303,7 @@
void visitConstructorDeclaration(ConstructorDeclaration node) {
ConstructorElementImpl element = _elementWalker!.getConstructor();
(node as ConstructorDeclarationImpl).declaredElement = element;
- node.name?.staticElement = element;
+ node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -330,10 +330,10 @@
@override
void visitDeclaredIdentifier(covariant DeclaredIdentifierImpl node) {
- var nameNode = node.identifier;
- var element = LocalVariableElementImpl(nameNode.name, nameNode.offset);
+ var nameToken = node.name;
+ var element = LocalVariableElementImpl(nameToken.lexeme, nameToken.offset);
_elementHolder.enclose(element);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -354,14 +354,14 @@
@override
void visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
var normalParameter = node.parameter;
- var nameNode = normalParameter.identifier;
+ var nameToken = normalParameter.name;
ParameterElementImpl element;
if (_elementWalker != null) {
element = _elementWalker!.getParameter();
} else {
- var name = nameNode?.name ?? '';
- var nameOffset = nameNode?.offset ?? -1;
+ var name = nameToken?.lexeme ?? '';
+ var nameOffset = nameToken?.offset ?? -1;
if (node.parameter is FieldFormalParameter) {
// Only for recovery, this should not happen in valid code.
element = DefaultFieldFormalParameterElementImpl(
@@ -389,10 +389,8 @@
}
}
- if (normalParameter is SimpleFormalParameterImpl) {
- normalParameter.declaredElement = element;
- }
- nameNode?.staticElement = element;
+ normalParameter.declaredElement = element;
+ node.declaredElement = element;
normalParameter.accept(this);
@@ -409,8 +407,8 @@
@override
void visitEnumConstantDeclaration(
covariant EnumConstantDeclarationImpl node) {
- var element = _elementWalker!.getVariable();
- node.name.staticElement = element;
+ var element = _elementWalker!.getVariable() as ConstFieldElementImpl;
+ node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -427,7 +425,7 @@
@override
void visitEnumDeclaration(covariant EnumDeclarationImpl node) {
EnumElementImpl element = _elementWalker!.getEnum();
- node.name.staticElement = element;
+ node.declaredElement = element;
_namedTypeResolver.enclosingClass = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -466,7 +464,7 @@
void visitExtensionDeclaration(ExtensionDeclaration node) {
var element = _elementWalker!.getExtension();
(node as ExtensionDeclarationImpl).declaredElement = element;
- node.name?.staticElement = element;
+ node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -489,15 +487,15 @@
if (node.parent is DefaultFormalParameter) {
element = node.declaredElement as FieldFormalParameterElementImpl;
} else {
- var nameNode = node.identifier;
+ var nameToken = node.name;
if (_elementWalker != null) {
element =
_elementWalker!.getParameter() as FieldFormalParameterElementImpl;
} else {
// Only for recovery, this should not happen in valid code.
element = FieldFormalParameterElementImpl(
- name: nameNode.name,
- nameOffset: nameNode.offset,
+ name: nameToken.lexeme,
+ nameOffset: nameToken.offset,
parameterKind: node.kind,
);
_elementHolder.enclose(element);
@@ -506,7 +504,7 @@
element.isFinal = node.isFinal;
_setCodeRange(element, node);
}
- nameNode.staticElement = element;
+ node.declaredElement = element;
}
_setOrCreateMetadataElements(element, node.metadata);
@@ -548,7 +546,7 @@
element = node.isGetter || node.isSetter
? _elementWalker!.getAccessor()
: _elementWalker!.getFunction();
- node.name.staticElement = element;
+ node.declaredElement = element;
} else {
element = node.declaredElement as ExecutableElementImpl;
@@ -648,7 +646,7 @@
@override
void visitFunctionTypeAlias(covariant FunctionTypeAliasImpl node) {
var element = _elementWalker!.getTypedef();
- node.name.staticElement = element;
+ node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -670,13 +668,13 @@
if (node.parent is DefaultFormalParameter) {
element = node.declaredElement as ParameterElementImpl;
} else {
- var nameNode = node.identifier;
+ var nameToken = node.name;
if (_elementWalker != null) {
element = _elementWalker!.getParameter();
} else {
element = ParameterElementImpl(
- name: nameNode.name,
- nameOffset: nameNode.offset,
+ name: nameToken.lexeme,
+ nameOffset: nameToken.offset,
parameterKind: node.kind,
);
_elementHolder.addParameter(element);
@@ -685,7 +683,7 @@
element.isFinal = node.isFinal;
_setCodeRange(element, node);
}
- nameNode.staticElement = element;
+ node.declaredElement = element;
}
_setOrCreateMetadataElements(element, node.metadata);
@@ -762,7 +760,7 @@
@override
void visitGenericTypeAlias(covariant GenericTypeAliasImpl node) {
var element = _elementWalker!.getTypedef();
- node.name.staticElement = element;
+ node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -864,7 +862,7 @@
ExecutableElementImpl element = node.isGetter || node.isSetter
? _elementWalker!.getAccessor()
: _elementWalker!.getFunction();
- node.name.staticElement = element;
+ node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -899,7 +897,7 @@
@override
void visitMixinDeclaration(covariant MixinDeclarationImpl node) {
var element = _elementWalker!.getMixin();
- node.name.staticElement = element;
+ node.declaredElement = element;
_setOrCreateMetadataElements(element, node.metadata);
@@ -975,14 +973,14 @@
if (node.parent is DefaultFormalParameter) {
element = node.declaredElement as ParameterElementImpl;
} else {
- var nameNode = node.identifier;
+ var nameToken = node.name;
if (_elementWalker != null) {
element = _elementWalker!.getParameter();
} else {
- if (nameNode != null) {
+ if (nameToken != null) {
element = ParameterElementImpl(
- name: nameNode.name,
- nameOffset: nameNode.offset,
+ name: nameToken.lexeme,
+ nameOffset: nameToken.offset,
parameterKind: node.kind,
);
} else {
@@ -1003,7 +1001,6 @@
}
node.declaredElement = element;
}
- nameNode?.staticElement = element;
node.declaredElement = element;
}
@@ -1021,15 +1018,15 @@
if (node.parent is DefaultFormalParameter) {
element = node.declaredElement as SuperFormalParameterElementImpl;
} else {
- var nameNode = node.identifier;
+ var nameToken = node.name;
if (_elementWalker != null) {
element =
_elementWalker!.getParameter() as SuperFormalParameterElementImpl;
} else {
// Only for recovery, this should not happen in valid code.
element = SuperFormalParameterElementImpl(
- name: nameNode.name,
- nameOffset: nameNode.offset,
+ name: nameToken.lexeme,
+ nameOffset: nameToken.offset,
parameterKind: node.kind,
);
_elementHolder.enclose(element);
@@ -1038,7 +1035,7 @@
element.isFinal = node.isFinal;
_setCodeRange(element, node);
}
- nameNode.staticElement = element;
+ node.declaredElement = element;
}
_setOrCreateMetadataElements(element, node.metadata);
@@ -1112,7 +1109,7 @@
VariableElementImpl element;
if (_elementWalker != null) {
element = _elementWalker!.getVariable();
- node.name.staticElement = element;
+ node.declaredElement = element;
} else {
var localElement = node.declaredElement as LocalVariableElementImpl;
element = localElement;
@@ -1196,9 +1193,9 @@
void _buildLocalFunctionElement(
covariant FunctionDeclarationStatementImpl statement) {
var node = statement.functionDeclaration;
- var nameNode = node.name;
- var element = FunctionElementImpl(nameNode.name, nameNode.offset);
- nameNode.staticElement = element;
+ var nameToken = node.name2;
+ var element = FunctionElementImpl(nameToken.lexeme, nameToken.offset);
+ node.declaredElement = element;
_define(element);
_elementHolder.enclose(element);
}
@@ -1209,21 +1206,21 @@
var isLate = variableList.isLate;
for (var variable in variableList.variables) {
variable as VariableDeclarationImpl;
- var variableName = variable.name;
+ var nameToken = variable.name2;
LocalVariableElementImpl element;
if (isConst && variable.initializer != null) {
element = ConstLocalVariableElementImpl(
- variableName.name,
- variableName.offset,
+ nameToken.lexeme,
+ nameToken.offset,
);
} else {
element = LocalVariableElementImpl(
- variableName.name,
- variableName.offset,
+ nameToken.lexeme,
+ nameToken.offset,
);
}
- variableName.staticElement = element;
+ variable.declaredElement = element;
_elementHolder.enclose(element);
_define(element);
@@ -1241,18 +1238,20 @@
for (var typeParameter in typeParameterList.typeParameters) {
typeParameter as TypeParameterImpl;
- var name = typeParameter.name;
+ var name = typeParameter.name2;
TypeParameterElementImpl element;
if (_elementWalker != null) {
element = _elementWalker!.getTypeParameter();
} else {
- element = TypeParameterElementImpl(name.name, name.offset);
+ element = TypeParameterElementImpl(name.lexeme, name.offset);
_elementHolder.addTypeParameter(element);
_setCodeRange(element, typeParameter);
}
- name.staticElement = element;
+ typeParameter.declaredElement = element;
+ // ignore: deprecated_member_use_from_same_package
+ typeParameter.name.staticElement = element;
_define(element);
_setOrCreateMetadataElements(element, typeParameter.metadata);
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart
index 9846ada..97dbd16 100644
--- a/pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart
@@ -77,7 +77,7 @@
return false;
}
if (parent is ConstructorDeclaration) {
- if (parent.name == node || parent.returnType == node) {
+ if (parent.returnType == node) {
return false;
}
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
index 17d7f04..d9be7b7 100644
--- a/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
@@ -33,7 +33,7 @@
_resolver.errorReporter.reportErrorForNode(
HintCode.INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE,
node,
- [node.name.name],
+ [node.name2.lexeme],
);
}
return;
@@ -70,8 +70,13 @@
element.constantInitializer = initializer;
}
- _resolver.checkForInvalidAssignment(node.name, initializer,
- whyNotPromoted: whyNotPromoted);
+ _resolver.checkForAssignableExpressionAtType(
+ initializer,
+ initializer.typeOrThrow,
+ element.type,
+ CompileTimeErrorCode.INVALID_ASSIGNMENT,
+ whyNotPromoted: whyNotPromoted,
+ );
}
void _setInferredType(VariableElement element, DartType initializerType) {
diff --git a/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart b/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart
index 9726e9f..d3dfb14 100644
--- a/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart
+++ b/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
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/diagnostic/diagnostic.dart';
@@ -74,19 +75,19 @@
AnalysisError invalidOverride(
Source source,
ErrorCode? errorCode,
- AstNode errorNode,
+ SyntacticEntity errorNode,
ExecutableElement member,
ExecutableElement superMember) {
errorCode ??= CompileTimeErrorCode.INVALID_OVERRIDE;
// Elements enclosing members that can participate in overrides are always
- // named, so we can safely assume `_thisMember.enclosingElement2.name` and
- // `superMember.enclosingElement2.name` are non-`null`.
+ // named, so we can safely assume `_thisMember.enclosingElement3.name` and
+ // `superMember.enclosingElement3.name` are non-`null`.
return AnalysisError(
source, errorNode.offset, errorNode.length, errorCode, [
member.name,
- member.enclosingElement2.name!,
+ member.enclosingElement3.name!,
member.type,
- superMember.enclosingElement2.name!,
+ superMember.enclosingElement3.name!,
superMember.type,
], [
// Only include the context location for INVALID_OVERRIDE because for
diff --git a/pkg/analyzer/lib/src/error/assignment_verifier.dart b/pkg/analyzer/lib/src/error/assignment_verifier.dart
index 4e7b029..9cef247 100644
--- a/pkg/analyzer/lib/src/error/assignment_verifier.dart
+++ b/pkg/analyzer/lib/src/error/assignment_verifier.dart
@@ -91,7 +91,7 @@
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
node,
- [variable.name, variable.enclosingElement2.displayName],
+ [variable.name, variable.enclosingElement3.displayName],
);
} else {
_errorReporter.reportErrorForNode(
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index a1b430c..8b3e2ad 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -171,7 +171,7 @@
}
}
} else if (parent is ConstructorDeclaration) {
- var class_ = parent.declaredElement!.enclosingElement2;
+ var class_ = parent.declaredElement!.enclosingElement3;
if (class_.isPrivate || (parentElement?.isPrivate ?? false)) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_INTERNAL_ANNOTATION, node, []);
@@ -301,9 +301,9 @@
if (undefinedParam != null) {
String? name;
if (parent is FunctionDeclaration) {
- name = parent.name.name;
+ name = parent.name2.lexeme;
} else if (parent is MethodDeclaration) {
- name = parent.name.name;
+ name = parent.name2.lexeme;
}
if (name != null) {
var paramName = undefinedParam is SimpleStringLiteral
@@ -323,7 +323,7 @@
var invokedElement = element.element!;
var name = invokedElement.name;
if (invokedElement is ConstructorElement) {
- var className = invokedElement.enclosingElement2.name;
+ var className = invokedElement.enclosingElement3.name;
if (name!.isEmpty) {
name = className;
} else {
@@ -471,7 +471,7 @@
final element = field.declaredElement;
if (element is PropertyAccessorElement || element is FieldElement) {
Name name = Name(_currentLibrary.source.uri, element!.name);
- Element enclosingElement = element.enclosingElement2!;
+ Element enclosingElement = element.enclosingElement3!;
if (enclosingElement is ClassElement) {
var overridden = _inheritanceManager
.getMember2(enclosingElement, name, forSuper: true);
@@ -493,11 +493,11 @@
_hasNonVirtualAnnotation(overriddenElement)) {
// Overridden members are always inside classes or mixins, which are
// always named, so we can safely assume
- // `overriddenElement.enclosingElement2.name` is non-`null`.
- _errorReporter.reportErrorForNode(
- HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, field.name, [
- field.name.name,
- overriddenElement.enclosingElement2.displayName
+ // `overriddenElement.enclosingElement3.name` is non-`null`.
+ _errorReporter.reportErrorForToken(
+ HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, field.name2, [
+ field.name2.lexeme,
+ overriddenElement.enclosingElement3.displayName
]);
}
if (!_invalidAccessVerifier._inTestDirectory) {
@@ -534,7 +534,8 @@
// Return types are inferred only on non-recursive local functions.
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,
body: node.functionExpression.body);
@@ -571,15 +572,14 @@
@override
void visitFunctionTypeAlias(FunctionTypeAlias node) {
- _checkStrictInferenceReturnType(node.returnType, node, node.name.name);
+ _checkStrictInferenceReturnType(node.returnType, node, node.name2.lexeme);
_checkStrictInferenceInParameters(node.parameters);
super.visitFunctionTypeAlias(node);
}
@override
void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
- _checkStrictInferenceReturnType(
- node.returnType, node, node.identifier.name);
+ _checkStrictInferenceReturnType(node.returnType, node, node.name.lexeme);
_checkStrictInferenceInParameters(node.parameters);
super.visitFunctionTypedFormalParameter(node);
}
@@ -598,7 +598,7 @@
void visitGenericTypeAlias(GenericTypeAlias node) {
if (node.functionType != null) {
_checkStrictInferenceReturnType(
- node.functionType!.returnType, node, node.name.name);
+ node.functionType!.returnType, node, node.name2.lexeme);
}
super.visitGenericTypeAlias(node);
}
@@ -640,7 +640,7 @@
void visitMethodDeclaration(MethodDeclaration node) {
bool wasInDoNotStoreMember = _inDoNotStoreMember;
var element = node.declaredElement!;
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
Name name = Name(_currentLibrary.source.uri, element.name);
@@ -672,7 +672,8 @@
: false;
if (!node.isSetter && !elementIsOverride) {
- _checkStrictInferenceReturnType(node.returnType, node, node.name.name);
+ _checkStrictInferenceReturnType(
+ node.returnType, node, node.name2.lexeme);
}
if (!elementIsOverride) {
_checkStrictInferenceInParameters(node.parameters, body: node.body);
@@ -687,11 +688,12 @@
_hasNonVirtualAnnotation(overriddenElement)) {
// Overridden members are always inside classes or mixins, which are
// always named, so we can safely assume
- // `overriddenElement.enclosingElement2.name` is non-`null`.
- _errorReporter.reportErrorForNode(
- HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER,
- node.name,
- [node.name.name, overriddenElement.enclosingElement2.displayName]);
+ // `overriddenElement.enclosingElement3.name` is non-`null`.
+ _errorReporter.reportErrorForToken(
+ HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, node.name2, [
+ node.name2.lexeme,
+ overriddenElement.enclosingElement3.displayName
+ ]);
}
super.visitMethodDeclaration(node);
@@ -1051,8 +1053,8 @@
definedOrInheritedNonFinalInstanceFields(
element, HashSet<ClassElement>());
if (nonFinalFields.isNotEmpty) {
- _errorReporter.reportErrorForNode(
- HintCode.MUST_BE_IMMUTABLE, node.name, [nonFinalFields.join(', ')]);
+ _errorReporter.reportErrorForToken(HintCode.MUST_BE_IMMUTABLE,
+ node.name2, [nonFinalFields.join(', ')]);
}
}
}
@@ -1124,8 +1126,8 @@
// Note that null return types are expected to be flagged by other analyses.
var returnType = decl.returnType?.type;
if (returnType is VoidType) {
- _errorReporter.reportErrorForNode(HintCode.INVALID_FACTORY_METHOD_DECL,
- decl.name, [decl.name.toString()]);
+ _errorReporter.reportErrorForToken(HintCode.INVALID_FACTORY_METHOD_DECL,
+ decl.name2, [decl.name2.lexeme]);
return;
}
@@ -1153,8 +1155,8 @@
}
}
- _errorReporter.reportErrorForNode(HintCode.INVALID_FACTORY_METHOD_IMPL,
- decl.name, [decl.name.toString()]);
+ _errorReporter.reportErrorForToken(
+ HintCode.INVALID_FACTORY_METHOD_IMPL, decl.name2, [decl.name2.lexeme]);
}
void _checkForInvalidSealedSuperclass(NamedCompilationUnitMember node) {
@@ -1314,18 +1316,25 @@
return;
}
- var errorNode = functionNode;
if (functionNode is FunctionDeclaration) {
- errorNode = functionNode.name;
+ _errorReporter.reportErrorForToken(
+ HintCode.MISSING_RETURN,
+ functionNode.name2,
+ [returnType],
+ );
} 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) {
@@ -1451,7 +1460,7 @@
///
/// Return `true` if and only if a hint code is generated on the passed 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;
}
bool isNonObjectNoSuchMethodInvocation(Expression? invocation) {
@@ -1461,7 +1470,7 @@
SimpleIdentifier name = invocation.methodName;
if (name.name == FunctionElement.NO_SUCH_METHOD_METHOD_NAME) {
var methodElement = name.staticElement;
- var classElement = methodElement?.enclosingElement2;
+ var classElement = methodElement?.enclosingElement3;
return methodElement is MethodElement &&
classElement is ClassElement &&
!classElement.isDartCoreObject;
@@ -1473,8 +1482,8 @@
FunctionBody body = node.body;
if (body is ExpressionFunctionBody) {
if (isNonObjectNoSuchMethodInvocation(body.expression)) {
- _errorReporter.reportErrorForNode(
- HintCode.UNNECESSARY_NO_SUCH_METHOD, node.name);
+ _errorReporter.reportErrorForToken(
+ HintCode.UNNECESSARY_NO_SUCH_METHOD, node.name2);
return true;
}
} else if (body is BlockFunctionBody) {
@@ -1483,8 +1492,8 @@
Statement returnStatement = statements.first;
if (returnStatement is ReturnStatement &&
isNonObjectNoSuchMethodInvocation(returnStatement.expression)) {
- _errorReporter.reportErrorForNode(
- HintCode.UNNECESSARY_NO_SUCH_METHOD, node.name);
+ _errorReporter.reportErrorForToken(
+ HintCode.UNNECESSARY_NO_SUCH_METHOD, node.name2);
return true;
}
}
@@ -1611,7 +1620,7 @@
for (var param in parameterList.parameters) {
// Param is defined.
- if (param.identifier?.name == unlessParam) {
+ if (param.name?.lexeme == unlessParam) {
return null;
}
}
@@ -1804,8 +1813,7 @@
}
static String _formalParameterNameOrEmpty(FormalParameter node) {
- var identifier = node.identifier;
- return identifier?.name ?? '';
+ return node.name?.lexeme ?? '';
}
static bool _hasNonVirtualAnnotation(ExecutableElement element) {
@@ -1901,7 +1909,7 @@
if (node.leftOperand is SuperExpression) {
var methodDeclaration = node.thisOrAncestorOfType<MethodDeclaration>();
- if (methodDeclaration?.name.name == operator.lexeme) {
+ if (methodDeclaration?.name2.lexeme == operator.lexeme) {
return;
}
}
@@ -1965,7 +1973,7 @@
SimpleIdentifier identifier, Element element) {
bool hasProtected = _hasProtected(element);
if (hasProtected) {
- var definingClass = element.enclosingElement2 as ClassElement;
+ var definingClass = element.enclosingElement3 as ClassElement;
if (_hasTypeOrSuperType(_enclosingClass, definingClass)) {
return;
}
@@ -2004,7 +2012,7 @@
node = identifier;
}
- var definingClass = element.enclosingElement2;
+ var definingClass = element.enclosingElement3;
if (hasProtected) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
@@ -2032,7 +2040,7 @@
parent is PropertyAccess && parent.target is SuperExpression) {
var methodDeclaration =
grandparent?.thisOrAncestorOfType<MethodDeclaration>();
- if (methodDeclaration?.name.name == identifier.name) {
+ if (methodDeclaration?.name2.lexeme == identifier.name) {
validOverride = true;
}
}
@@ -2060,12 +2068,12 @@
bool _hasProtected(Element element) {
if (element is PropertyAccessorElement &&
- element.enclosingElement2 is ClassElement &&
+ element.enclosingElement3 is ClassElement &&
(element.hasProtected || element.variable.hasProtected)) {
return true;
}
if (element is MethodElement &&
- element.enclosingElement2 is ClassElement &&
+ element.enclosingElement3 is ClassElement &&
element.hasProtected) {
return true;
}
diff --git a/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart b/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
index 42d4dde..13fe69c 100644
--- a/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
+++ b/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
@@ -234,10 +234,10 @@
_fieldMap[fieldElement] = _InitState.initInFieldFormal;
} else if (state == _InitState.initInDeclaration) {
if (fieldElement.isFinal || fieldElement.isConst) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
CompileTimeErrorCode
.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
- parameter.identifier,
+ parameter.name,
[fieldElement.displayName],
);
}
diff --git a/pkg/analyzer/lib/src/error/correct_override.dart b/pkg/analyzer/lib/src/error/correct_override.dart
index 609bc46..82b95dd 100644
--- a/pkg/analyzer/lib/src/error/correct_override.dart
+++ b/pkg/analyzer/lib/src/error/correct_override.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/syntactic_entity.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -50,7 +50,7 @@
void verify({
required ExecutableElement superMember,
required ErrorReporter errorReporter,
- required AstNode errorNode,
+ required SyntacticEntity errorNode,
ErrorCode? errorCode,
}) {
var isCorrect = isCorrectOverrideOf(superMember: superMember);
@@ -110,7 +110,7 @@
void verify({
required ErrorReporter errorReporter,
- required AstNode errorNode,
+ required SyntacticEntity errorNode,
}) {
var superParameters = _superParameters();
for (var entry in superParameters.entries) {
@@ -123,16 +123,17 @@
var superMember = superParameter.member;
// Elements enclosing members that can participate in overrides are
// always named, so we can safely assume
- // `_thisMember.enclosingElement2.name` and
- // `superMember.enclosingElement2.name` are non-`null`.
- errorReporter.reportErrorForNode(
+ // `_thisMember.enclosingElement3.name` and
+ // `superMember.enclosingElement3.name` are non-`null`.
+ errorReporter.reportErrorForOffset(
CompileTimeErrorCode.INVALID_OVERRIDE,
- errorNode,
+ errorNode.offset,
+ errorNode.length,
[
_thisMember.name,
- _thisMember.enclosingElement2.name!,
+ _thisMember.enclosingElement3.name!,
_thisMember.type,
- superMember.enclosingElement2.name!,
+ superMember.enclosingElement3.name!,
superMember.type,
],
);
@@ -143,7 +144,7 @@
List<_SuperMember> _superMembers() {
var classHierarchy = _session.classHierarchy;
- var classElement = _thisMember.enclosingElement2 as ClassElement;
+ var classElement = _thisMember.enclosingElement3 as ClassElement;
var interfaces = classHierarchy.implementedInterfaces(classElement);
var superMembers = <_SuperMember>[];
@@ -272,5 +273,5 @@
_SuperParameter(this.element, this.type);
ExecutableElement get member =>
- element.enclosingElement2 as ExecutableElement;
+ element.enclosingElement3 as ExecutableElement;
}
diff --git a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
index 954b777..a3aed31 100644
--- a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
+++ b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
@@ -169,7 +169,7 @@
// TODO(jwren) We should modify ConstructorElement.getDisplayName(),
// or have the logic centralized elsewhere, instead of doing this logic
// here.
- displayName = element.enclosingElement2.displayName;
+ displayName = element.enclosingElement3.displayName;
if (element.displayName.isNotEmpty) {
displayName = "$displayName.${element.displayName}";
}
@@ -268,7 +268,7 @@
/// Return `true` if [element] is a [ParameterElement] declared in [node].
static bool _isLocalParameter(Element? element, AstNode? node) {
if (element is ParameterElement) {
- var definingFunction = element.enclosingElement2 as ExecutableElement;
+ var definingFunction = element.enclosingElement3 as ExecutableElement;
for (; node != null; node = node.parent) {
if (node is ConstructorDeclaration) {
diff --git a/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart b/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
index 58db0cd..3afd901 100644
--- a/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
+++ b/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
@@ -5,6 +5,7 @@
import 'dart:collection';
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
@@ -54,8 +55,9 @@
var staticSetters = <String, Element>{};
for (EnumConstantDeclaration constant in node.constants) {
- _checkDuplicateIdentifier(staticGetters, constant.name);
- _checkValuesDeclarationInEnum(constant.name);
+ _checkDuplicateIdentifier(staticGetters, constant.name2,
+ element: constant.declaredElement!);
+ _checkValuesDeclarationInEnum(constant.name2);
}
for (var member in node.members) {
@@ -79,10 +81,11 @@
}
} else if (member is FieldDeclaration) {
for (var field in member.fields.variables) {
- var identifier = field.name;
+ var identifier = field.name2;
_checkDuplicateIdentifier(
member.isStatic ? staticGetters : instanceGetters,
identifier,
+ element: field.declaredElement!,
setterScope: member.isStatic ? staticSetters : instanceSetters,
);
_checkValuesDeclarationInEnum(identifier);
@@ -90,27 +93,28 @@
} else if (member is MethodDeclaration) {
_checkDuplicateIdentifier(
member.isStatic ? staticGetters : instanceGetters,
- member.name,
+ member.name2,
+ element: member.declaredElement!,
setterScope: member.isStatic ? staticSetters : instanceSetters,
);
if (!(member.isStatic && member.isSetter)) {
- _checkValuesDeclarationInEnum(member.name);
+ _checkValuesDeclarationInEnum2(member.name2);
}
}
}
if (enumName == 'values') {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
CompileTimeErrorCode.ENUM_WITH_NAME_VALUES,
- node.name,
+ node.name2,
);
}
for (var constant in node.constants) {
- if (constant.name.name == enumName) {
- _errorReporter.reportErrorForNode(
+ if (constant.name2.lexeme == enumName) {
+ _errorReporter.reportErrorForToken(
CompileTimeErrorCode.ENUM_CONSTANT_SAME_NAME_AS_ENCLOSING,
- constant.name,
+ constant.name2,
);
}
}
@@ -141,7 +145,7 @@
[
enumElement.displayName,
baseName,
- inherited.enclosingElement2.displayName,
+ inherited.enclosingElement3.displayName,
],
);
}
@@ -168,7 +172,7 @@
[
enumElement.displayName,
baseName,
- inherited.enclosingElement2.displayName,
+ inherited.enclosingElement3.displayName,
],
);
}
@@ -186,17 +190,19 @@
for (var member in node.members) {
if (member is FieldDeclaration) {
for (var field in member.fields.variables) {
- var identifier = field.name;
+ var identifier = field.name2;
_checkDuplicateIdentifier(
member.isStatic ? staticGetters : instanceGetters,
identifier,
+ element: field.declaredElement!,
setterScope: member.isStatic ? staticSetters : instanceSetters,
);
}
} else if (member is MethodDeclaration) {
_checkDuplicateIdentifier(
member.isStatic ? staticGetters : instanceGetters,
- member.name,
+ member.name2,
+ element: member.declaredElement!,
setterScope: member.isStatic ? staticSetters : instanceSetters,
);
}
@@ -207,11 +213,11 @@
if (member is FieldDeclaration) {
if (member.isStatic) {
for (var field in member.fields.variables) {
- var identifier = field.name;
- var name = identifier.name;
+ var identifier = field.name2;
+ var name = identifier.lexeme;
if (instanceGetters.containsKey(name) ||
instanceSetters.containsKey(name)) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
CompileTimeErrorCode.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE,
identifier,
[name],
@@ -221,11 +227,11 @@
}
} else if (member is MethodDeclaration) {
if (member.isStatic) {
- var identifier = member.name;
- var name = identifier.name;
+ var identifier = member.name2;
+ var name = identifier.lexeme;
if (instanceGetters.containsKey(name) ||
instanceSetters.containsKey(name)) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
CompileTimeErrorCode.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE,
identifier,
[name],
@@ -241,7 +247,8 @@
void checkForVariables(VariableDeclarationList node) {
Map<String, Element> definedNames = HashMap<String, Element>();
for (VariableDeclaration variable in node.variables) {
- _checkDuplicateIdentifier(definedNames, variable.name);
+ _checkDuplicateIdentifier(definedNames, variable.name2,
+ element: variable.declaredElement!);
}
}
@@ -253,11 +260,12 @@
void checkParameters(FormalParameterList node) {
Map<String, Element> definedNames = HashMap<String, Element>();
for (FormalParameter parameter in node.parameters) {
- var identifier = parameter.identifier;
+ var identifier = parameter.name;
if (identifier != null) {
// The identifier can be null if this is a parameter list for a generic
// function type.
- _checkDuplicateIdentifier(definedNames, identifier);
+ _checkDuplicateIdentifier(definedNames, identifier,
+ element: parameter.declaredElement!);
}
}
}
@@ -268,11 +276,15 @@
for (Statement statement in statements) {
if (statement is VariableDeclarationStatement) {
for (VariableDeclaration variable in statement.variables.variables) {
- _checkDuplicateIdentifier(definedNames, variable.name);
+ _checkDuplicateIdentifier(definedNames, variable.name2,
+ element: variable.declaredElement!);
}
} else if (statement is FunctionDeclarationStatement) {
_checkDuplicateIdentifier(
- definedNames, statement.functionDeclaration.name);
+ definedNames,
+ statement.functionDeclaration.name2,
+ element: statement.functionDeclaration.declaredElement!,
+ );
}
}
}
@@ -281,7 +293,8 @@
void checkTypeParameters(TypeParameterList node) {
Map<String, Element> definedNames = HashMap<String, Element>();
for (TypeParameter parameter in node.typeParameters) {
- _checkDuplicateIdentifier(definedNames, parameter.name);
+ _checkDuplicateIdentifier(definedNames, parameter.name2,
+ element: parameter.declaredElement!);
}
}
@@ -336,18 +349,18 @@
}
for (CompilationUnitMember member in node.declarations) {
if (member is ExtensionDeclaration) {
- var identifier = member.name;
+ var identifier = member.name2;
if (identifier != null) {
_checkDuplicateIdentifier(definedGetters, identifier,
- setterScope: definedSetters);
+ element: member.declaredElement!, setterScope: definedSetters);
}
} else if (member is NamedCompilationUnitMember) {
- _checkDuplicateIdentifier(definedGetters, member.name,
- setterScope: definedSetters);
+ _checkDuplicateIdentifier(definedGetters, member.name2,
+ element: member.declaredElement!, setterScope: definedSetters);
} else if (member is TopLevelVariableDeclaration) {
for (VariableDeclaration variable in member.variables.variables) {
- _checkDuplicateIdentifier(definedGetters, variable.name,
- setterScope: definedSetters);
+ _checkDuplicateIdentifier(definedGetters, variable.name2,
+ element: variable.declaredElement!, setterScope: definedSetters);
}
}
}
@@ -367,7 +380,7 @@
// [member] is erroneous; do not count it as a possible duplicate.
continue;
}
- var name = member.name?.name ?? '';
+ var name = member.name2?.lexeme ?? '';
if (name == 'new') {
name = '';
}
@@ -383,17 +396,18 @@
}
} else if (member is FieldDeclaration) {
for (VariableDeclaration field in member.fields.variables) {
- SimpleIdentifier identifier = field.name;
_checkDuplicateIdentifier(
member.isStatic ? staticGetters : instanceGetters,
- identifier,
+ field.name2,
+ element: field.declaredElement!,
setterScope: member.isStatic ? staticSetters : instanceSetters,
);
}
} else if (member is MethodDeclaration) {
_checkDuplicateIdentifier(
member.isStatic ? staticGetters : instanceGetters,
- member.name,
+ member.name2,
+ element: member.declaredElement!,
setterScope: member.isStatic ? staticSetters : instanceSetters,
);
}
@@ -412,12 +426,12 @@
if (member is FieldDeclaration) {
if (member.isStatic) {
for (VariableDeclaration field in member.fields.variables) {
- SimpleIdentifier identifier = field.name;
- String name = identifier.name;
+ final identifier = field.name2;
+ String name = identifier.lexeme;
if (instanceGetters.containsKey(name) ||
instanceSetters.containsKey(name)) {
String className = element.displayName;
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
CompileTimeErrorCode.CONFLICTING_STATIC_AND_INSTANCE,
identifier,
[className, name, className]);
@@ -426,12 +440,12 @@
}
} else if (member is MethodDeclaration) {
if (member.isStatic) {
- SimpleIdentifier identifier = member.name;
- String name = identifier.name;
+ final identifier = member.name2;
+ String name = identifier.lexeme;
if (instanceGetters.containsKey(name) ||
instanceSetters.containsKey(name)) {
String className = element.name;
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
CompileTimeErrorCode.CONFLICTING_STATIC_AND_INSTANCE,
identifier,
[className, name, className]);
@@ -476,20 +490,19 @@
/// in one of the scopes - [getterScope] or [setterScope], and produce an
/// error if it is.
void _checkDuplicateIdentifier(
- Map<String, Element> getterScope, SimpleIdentifier identifier,
- {Element? element, Map<String, Element>? setterScope}) {
+ Map<String, Element> getterScope, Token identifier,
+ {required Element element, Map<String, Element>? setterScope}) {
if (identifier.isSynthetic) {
return;
}
- element ??= identifier.staticElement!;
// Fields define getters and setters, so check them separately.
if (element is PropertyInducingElement) {
_checkDuplicateIdentifier(getterScope, identifier,
- element: element.getter, setterScope: setterScope);
+ element: element.getter!, setterScope: setterScope);
if (!element.isConst && !element.isFinal) {
_checkDuplicateIdentifier(getterScope, identifier,
- element: element.setter, setterScope: setterScope);
+ element: element.setter!, setterScope: setterScope);
}
return;
}
@@ -504,7 +517,7 @@
return CompileTimeErrorCode.DUPLICATE_DEFINITION;
}
- var name = identifier.name;
+ var name = identifier.lexeme;
if (element is MethodElement) {
name = element.name;
}
@@ -512,7 +525,7 @@
var previous = getterScope[name];
if (previous != null) {
if (!_isGetterSetterPair(element, previous)) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
getError(previous, element),
identifier,
[name],
@@ -526,7 +539,7 @@
if (element is PropertyAccessorElement && element.isSetter) {
previous = setterScope[name];
if (previous != null) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
getError(previous, element),
identifier,
[name],
@@ -538,9 +551,18 @@
}
}
- void _checkValuesDeclarationInEnum(SimpleIdentifier name) {
- if (name.name == 'values') {
- _errorReporter.reportErrorForNode(
+ void _checkValuesDeclarationInEnum(Token name) {
+ if (name.lexeme == 'values') {
+ _errorReporter.reportErrorForToken(
+ CompileTimeErrorCode.VALUES_DECLARATION_IN_ENUM,
+ name,
+ );
+ }
+ }
+
+ void _checkValuesDeclarationInEnum2(Token name) {
+ if (name.lexeme == 'values') {
+ _errorReporter.reportErrorForToken(
CompileTimeErrorCode.VALUES_DECLARATION_IN_ENUM,
name,
);
diff --git a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
index 469f0f5..ba54bdc 100644
--- a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
+++ b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
@@ -53,23 +53,23 @@
var setterType = setter.parameters[0].type;
if (!_match(getterType, setterType)) {
Element errorElement;
- if (getter.enclosingElement2 == classElement) {
+ if (getter.enclosingElement3 == classElement) {
errorElement = getter;
- } else if (setter.enclosingElement2 == classElement) {
+ } else if (setter.enclosingElement3 == classElement) {
errorElement = setter;
} else {
errorElement = classElement;
}
var getterName = getter.displayName;
- if (getter.enclosingElement2 != classElement) {
- var getterClassName = getter.enclosingElement2.displayName;
+ if (getter.enclosingElement3 != classElement) {
+ var getterClassName = getter.enclosingElement3.displayName;
getterName = '$getterClassName.$getterName';
}
var setterName = setter.displayName;
- if (setter.enclosingElement2 != classElement) {
- var setterClassName = setter.enclosingElement2.displayName;
+ if (setter.enclosingElement3 != classElement) {
+ var setterClassName = setter.enclosingElement3.displayName;
setterName = '$setterClassName.$setterName';
}
diff --git a/pkg/analyzer/lib/src/error/imports_verifier.dart b/pkg/analyzer/lib/src/error/imports_verifier.dart
index 81adecd..7574408 100644
--- a/pkg/analyzer/lib/src/error/imports_verifier.dart
+++ b/pkg/analyzer/lib/src/error/imports_verifier.dart
@@ -94,7 +94,7 @@
void _recordIfExtensionMember(Element? element) {
if (element != null) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ExtensionElement) {
_recordUsedExtension(enclosingElement);
}
@@ -165,7 +165,7 @@
if (_recordPrefixMap(identifier, element)) {
return;
}
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is CompilationUnitElement) {
_recordUsedElement(element);
} else if (enclosingElement is ExtensionElement) {
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index 89c04f9..4e9bd87 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -4,6 +4,8 @@
import 'package:analyzer/dart/analysis/features.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/constant/value.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -19,9 +21,9 @@
import 'package:analyzer/src/error/getter_setter_types_verifier.dart';
import 'package:analyzer/src/task/inference_error.dart';
-class InheritanceOverrideVerifier {
- static const _missingOverridesKey = 'missingOverrides';
+final _missingOverrides = Expando<List<ExecutableElement>>();
+class InheritanceOverrideVerifier {
final TypeSystemImpl _typeSystem;
final TypeProvider _typeProvider;
final InheritanceManager3 _inheritance;
@@ -43,7 +45,8 @@
reporter: _reporter,
featureSet: unit.featureSet,
library: library,
- classNameNode: declaration.name,
+ classNameToken: declaration.name2,
+ classElement: declaration.declaredElement as AbstractClassElementImpl,
implementsClause: declaration.implementsClause,
members: declaration.members,
superclass: declaration.extendsClause?.superclass,
@@ -57,7 +60,8 @@
reporter: _reporter,
featureSet: unit.featureSet,
library: library,
- classNameNode: declaration.name,
+ classNameToken: declaration.name2,
+ classElement: declaration.declaredElement as AbstractClassElementImpl,
implementsClause: declaration.implementsClause,
superclass: declaration.superclass,
withClause: declaration.withClause,
@@ -70,7 +74,8 @@
reporter: _reporter,
featureSet: unit.featureSet,
library: library,
- classNameNode: declaration.name,
+ classNameToken: declaration.name2,
+ classElement: declaration.declaredElement as AbstractClassElementImpl,
implementsClause: declaration.implementsClause,
members: declaration.members,
withClause: declaration.withClause,
@@ -83,7 +88,8 @@
reporter: _reporter,
featureSet: unit.featureSet,
library: library,
- classNameNode: declaration.name,
+ classNameToken: declaration.name2,
+ classElement: declaration.declaredElement as AbstractClassElementImpl,
implementsClause: declaration.implementsClause,
members: declaration.members,
onClause: declaration.onClause,
@@ -103,7 +109,7 @@
/// Returns [ExecutableElement] members that are in the interface of the
/// given class, but don't have concrete implementations.
static List<ExecutableElement> missingOverrides(ClassDeclaration node) {
- return node.name.getProperty(_missingOverridesKey) ?? const [];
+ return _missingOverrides[node.name2] ?? const [];
}
}
@@ -118,7 +124,7 @@
final Uri libraryUri;
final AbstractClassElementImpl classElement;
- final SimpleIdentifier classNameNode;
+ final Token classNameToken;
final List<ClassMember> members;
final ImplementsClause? implementsClause;
final OnClause? onClause;
@@ -137,14 +143,14 @@
required this.reporter,
required this.featureSet,
required this.library,
- required this.classNameNode,
+ required this.classNameToken,
+ required this.classElement,
this.implementsClause,
this.members = const [],
this.onClause,
this.superclass,
this.withClause,
- }) : libraryUri = library.source.uri,
- classElement = classNameNode.staticElement as AbstractClassElementImpl;
+ }) : libraryUri = library.source.uri;
bool get _isNonNullableByDefault => typeSystem.isNonNullableByDefault;
@@ -158,9 +164,9 @@
if (!classElement.isEnum &&
!classElement.isAbstract &&
implementsDartCoreEnum) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.CONCRETE_CLASS_HAS_ENUM_SUPERINTERFACE,
- classNameNode,
+ classNameToken,
);
return true;
}
@@ -174,7 +180,7 @@
// Report conflicts between direct superinterfaces of the class.
for (var conflict in interface.conflicts) {
- _reportInconsistentInheritance(classNameNode, conflict);
+ _reportInconsistentInheritance(classNameToken, conflict);
}
if (classElement.supertype != null) {
@@ -206,13 +212,13 @@
var fieldList = member.fields;
for (var field in fieldList.variables) {
var fieldElement = field.declaredElement as FieldElement;
- _checkDeclaredMember(field.name, libraryUri, fieldElement.getter);
- _checkDeclaredMember(field.name, libraryUri, fieldElement.setter);
+ _checkDeclaredMember(field.name2, libraryUri, fieldElement.getter);
+ _checkDeclaredMember(field.name2, libraryUri, fieldElement.setter);
if (!member.isStatic && !classElement.isEnum) {
- _checkIllegalEnumValuesDeclaration(field.name);
+ _checkIllegalEnumValuesDeclaration(field.name2);
}
if (!member.isStatic) {
- _checkIllegalConcreteEnumMemberDeclaration(field.name);
+ _checkIllegalConcreteEnumMemberDeclaration(field.name2);
}
}
} else if (member is MethodDeclaration) {
@@ -221,13 +227,13 @@
continue;
}
- _checkDeclaredMember(member.name, libraryUri, member.declaredElement,
+ _checkDeclaredMember(member.name2, libraryUri, member.declaredElement,
methodParameterNodes: member.parameters?.parameters);
if (!(member.isStatic || member.isAbstract || member.isSetter)) {
- _checkIllegalConcreteEnumMemberDeclaration(member.name);
+ _checkIllegalConcreteEnumMemberDeclaration(member.name2);
}
if (!member.isStatic && !classElement.isEnum) {
- _checkIllegalEnumValuesDeclaration(member.name);
+ _checkIllegalEnumValuesDeclaration(member.name2);
}
}
}
@@ -293,7 +299,7 @@
).verify(
superMember: interfaceElement,
errorReporter: reporter,
- errorNode: classNameNode,
+ errorNode: classNameToken,
errorCode: CompileTimeErrorCode.INVALID_IMPLEMENTATION_OVERRIDE,
);
}
@@ -308,7 +314,7 @@
/// instance members in each of [directSuperInterfaces]. The [libraryUri] is
/// the URI of the library containing the [member].
void _checkDeclaredMember(
- AstNode node,
+ SyntacticEntity node,
Uri libraryUri,
ExecutableElement? member, {
List<FormalParameter>? methodParameterNodes,
@@ -542,7 +548,7 @@
.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
derivedOptionalNodes[i],
[
- baseExecutable.enclosingElement2.displayName,
+ baseExecutable.enclosingElement3.displayName,
baseExecutable.displayName,
name
],
@@ -571,7 +577,7 @@
.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
derivedOptionalNodes[i],
[
- baseExecutable.enclosingElement2.displayName,
+ baseExecutable.enclosingElement3.displayName,
baseExecutable.displayName
],
);
@@ -659,14 +665,14 @@
return false;
}
- void _checkIllegalConcreteEnumMemberDeclaration(SimpleIdentifier name) {
+ void _checkIllegalConcreteEnumMemberDeclaration(Token name) {
if (implementsDartCoreEnum &&
!classElement.isDartCoreEnumImpl &&
- const {'index', 'hashCode', '=='}.contains(name.name)) {
- reporter.reportErrorForNode(
+ const {'index', 'hashCode', '=='}.contains(name.lexeme)) {
+ reporter.reportErrorForToken(
CompileTimeErrorCode.ILLEGAL_CONCRETE_ENUM_MEMBER_DECLARATION,
name,
- [name.name],
+ [name.lexeme],
);
}
}
@@ -688,11 +694,11 @@
) {
var member = concreteMap[Name(libraryUri, memberName)];
if (member != null) {
- var enclosingClass = member.enclosingElement2;
+ var enclosingClass = member.enclosingElement3;
if (enclosingClass is ClassElement && filter(enclosingClass)) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.ILLEGAL_CONCRETE_ENUM_MEMBER_INHERITANCE,
- classNameNode,
+ classNameToken,
[memberName, enclosingClass.name],
);
}
@@ -705,9 +711,9 @@
}
}
- void _checkIllegalEnumValuesDeclaration(SimpleIdentifier name) {
- if (implementsDartCoreEnum && name.name == 'values') {
- reporter.reportErrorForNode(
+ void _checkIllegalEnumValuesDeclaration(Token name) {
+ if (implementsDartCoreEnum && name.lexeme == 'values') {
+ reporter.reportErrorForToken(
CompileTimeErrorCode.ILLEGAL_ENUM_VALUES_DECLARATION,
name,
);
@@ -726,10 +732,10 @@
);
var inherited = getter ?? setter;
if (inherited != null) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.ILLEGAL_ENUM_VALUES_INHERITANCE,
- classNameNode,
- [inherited.enclosingElement2.name!],
+ classNameToken,
+ [inherited.enclosingElement3.name!],
);
}
}
@@ -780,7 +786,7 @@
for (var member in members) {
if (member is MethodDeclaration) {
- var displayName = member.name.name;
+ var displayName = member.name2.lexeme;
var name2 = displayName;
if (member.isSetter) {
name2 += '=';
@@ -788,10 +794,10 @@
if (checkMemberNameCombo(member, name2, displayName)) return true;
} else if (member is FieldDeclaration) {
for (var variableDeclaration in member.fields.variables) {
- var name2 = variableDeclaration.name.name;
- if (checkMemberNameCombo(member, name2, name2)) return true;
+ var name = variableDeclaration.name2.lexeme;
+ if (checkMemberNameCombo(member, name, name)) return true;
if (!variableDeclaration.isFinal) {
- if (checkMemberNameCombo(member, '$name2=', name2)) return true;
+ if (checkMemberNameCombo(member, '$name=', name)) return true;
}
}
}
@@ -799,35 +805,35 @@
return false;
}
- void _reportInconsistentInheritance(AstNode node, Conflict conflict) {
+ void _reportInconsistentInheritance(Token token, Conflict conflict) {
var name = conflict.name;
if (conflict is GetterMethodConflict) {
// Members that participate in inheritance are always enclosed in named
// elements so it is safe to assume that
- // `conflict.getter.enclosingElement2.name` and
- // `conflict.method.enclosingElement2.name` are both non-`null`.
- reporter.reportErrorForNode(
+ // `conflict.getter.enclosingElement3.name` and
+ // `conflict.method.enclosingElement3.name` are both non-`null`.
+ reporter.reportErrorForToken(
CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD,
- node,
+ token,
[
name.name,
- conflict.getter.enclosingElement2.name!,
- conflict.method.enclosingElement2.name!
+ conflict.getter.enclosingElement3.name!,
+ conflict.method.enclosingElement3.name!
],
);
} else if (conflict is CandidatesConflict) {
var candidatesStr = conflict.candidates.map((candidate) {
- var className = candidate.enclosingElement2.name;
+ var className = candidate.enclosingElement3.name;
var typeStr = candidate.type.getDisplayString(
withNullability: _isNonNullableByDefault,
);
return '$className.${name.name} ($typeStr)';
}).join(', ');
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.INCONSISTENT_INHERITANCE,
- node,
+ token,
[name.name, candidatesStr],
);
} else {
@@ -840,10 +846,7 @@
return;
}
- classNameNode.setProperty(
- InheritanceOverrideVerifier._missingOverridesKey,
- elements,
- );
+ _missingOverrides[classNameToken] = elements;
var descriptions = <String>[];
for (ExecutableElement element in elements) {
@@ -857,7 +860,7 @@
}
var elementName = element.displayName;
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
var enclosingName = enclosingElement.displayName;
var description = "$prefix$enclosingName.$elementName";
@@ -866,34 +869,34 @@
descriptions.sort();
if (descriptions.length == 1) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
- classNameNode,
+ classNameToken,
[descriptions[0]],
);
} else if (descriptions.length == 2) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
- classNameNode,
+ classNameToken,
[descriptions[0], descriptions[1]],
);
} else if (descriptions.length == 3) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE,
- classNameNode,
+ classNameToken,
[descriptions[0], descriptions[1], descriptions[2]],
);
} else if (descriptions.length == 4) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR,
- classNameNode,
+ classNameToken,
[descriptions[0], descriptions[1], descriptions[2], descriptions[3]],
);
} else {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode
.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS,
- classNameNode,
+ classNameToken,
[
descriptions[0],
descriptions[1],
@@ -911,9 +914,9 @@
var inferenceError = element.typeInferenceError;
if (inferenceError?.kind ==
TopLevelInferenceErrorKind.overrideNoCombinedSuperSignature) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
CompileTimeErrorCode.NO_COMBINED_SUPER_SIGNATURE,
- node.name,
+ node.name2,
[
classElement.name,
inferenceError!.arguments[0],
@@ -985,21 +988,21 @@
final namesForError = notOverriddenNames.toList();
if (namesForError.length == 1) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
HintCode.MISSING_OVERRIDE_OF_MUST_BE_OVERRIDDEN_ONE,
- classNameNode,
+ classNameToken,
namesForError,
);
} else if (namesForError.length == 2) {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
HintCode.MISSING_OVERRIDE_OF_MUST_BE_OVERRIDDEN_TWO,
- classNameNode,
+ classNameToken,
namesForError,
);
} else {
- reporter.reportErrorForNode(
+ reporter.reportErrorForToken(
HintCode.MISSING_OVERRIDE_OF_MUST_BE_OVERRIDDEN_THREE_PLUS,
- classNameNode,
+ classNameToken,
[
namesForError[0],
namesForError[1],
diff --git a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
index 3ce9a09..a248430 100644
--- a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
+++ b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
@@ -28,17 +28,17 @@
if (element is MethodElement && _hasConcreteSuperMethod(element)) {
_verifySuperIsCalled(
- node, overridden.name, overridden.enclosingElement2.name);
+ node, overridden.name, overridden.enclosingElement3.name);
return;
}
- var enclosingElement = element.enclosingElement2 as ClassElement;
+ var enclosingElement = element.enclosingElement3 as ClassElement;
if (element is PropertyAccessorElement && element.isGetter) {
var inheritedConcreteGetter = enclosingElement
.lookUpInheritedConcreteGetter(element.name, element.library);
if (inheritedConcreteGetter != null) {
_verifySuperIsCalled(
- node, overridden.name, overridden.enclosingElement2.name);
+ node, overridden.name, overridden.enclosingElement3.name);
}
return;
}
@@ -53,7 +53,7 @@
if (name.endsWith('=')) {
name = name.substring(0, name.length - 1);
}
- _verifySuperIsCalled(node, name, overridden.enclosingElement2.name);
+ _verifySuperIsCalled(node, name, overridden.enclosingElement3.name);
}
}
}
@@ -69,10 +69,10 @@
ExecutableElement? _findOverriddenMemberWithMustCallSuper(
ExecutableElement element) {
//Element member = node.declaredElement;
- if (element.enclosingElement2 is! ClassElement) {
+ if (element.enclosingElement3 is! ClassElement) {
return null;
}
- var classElement = element.enclosingElement2 as ClassElement;
+ var classElement = element.enclosingElement3 as ClassElement;
String name = element.name;
// Walk up the type hierarchy from [classElement], ignoring direct
@@ -109,7 +109,7 @@
/// Returns whether [node] overrides a concrete method.
bool _hasConcreteSuperMethod(ExecutableElement element) {
- var classElement = element.enclosingElement2 as ClassElement;
+ var classElement = element.enclosingElement3 as ClassElement;
String name = element.name;
if (classElement.supertype.isConcrete(name)) {
@@ -133,8 +133,8 @@
if (!declaredElement.invokesSuperSelf) {
// Overridable elements are always enclosed in named elements, so it is
// safe to assume [overriddenEnclosingName] is non-`null`.
- _errorReporter.reportErrorForNode(
- HintCode.MUST_CALL_SUPER, node.name, [overriddenEnclosingName!]);
+ _errorReporter.reportErrorForToken(
+ HintCode.MUST_CALL_SUPER, node.name2, [overriddenEnclosingName!]);
}
return;
}
diff --git a/pkg/analyzer/lib/src/error/override_verifier.dart b/pkg/analyzer/lib/src/error/override_verifier.dart
index 5a87250..e3a6fcb 100644
--- a/pkg/analyzer/lib/src/error/override_verifier.dart
+++ b/pkg/analyzer/lib/src/error/override_verifier.dart
@@ -54,9 +54,9 @@
var setter = fieldElement.setter;
if (setter != null && _isOverride(setter)) continue;
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD,
- field.name,
+ field.name2,
);
}
}
@@ -67,20 +67,20 @@
var element = node.declaredElement!;
if (element.hasOverride && !_isOverride(element)) {
if (element is MethodElement) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD,
- node.name,
+ node.name2,
);
} else if (element is PropertyAccessorElement) {
if (element.isGetter) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER,
- node.name,
+ node.name2,
);
} else {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER,
- node.name,
+ node.name2,
);
}
}
diff --git a/pkg/analyzer/lib/src/error/required_parameters_verifier.dart b/pkg/analyzer/lib/src/error/required_parameters_verifier.dart
index 03bd2ed..51cc6f1 100644
--- a/pkg/analyzer/lib/src/error/required_parameters_verifier.dart
+++ b/pkg/analyzer/lib/src/error/required_parameters_verifier.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/syntactic_entity.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -38,7 +39,7 @@
_check(
parameters: node.constructorElement?.parameters,
arguments: node.arguments?.argumentList.arguments ?? <Expression>[],
- errorNode: node.name,
+ errorNode: node.name2,
);
}
@@ -111,7 +112,7 @@
required List<ParameterElement>? parameters,
ConstructorElement? enclosingConstructor,
required List<Expression> arguments,
- required AstNode errorNode,
+ required SyntacticEntity errorNode,
}) {
if (parameters == null) {
return;
@@ -122,9 +123,10 @@
String parameterName = parameter.name;
if (!_containsNamedExpression(
enclosingConstructor, arguments, parameterName)) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForOffset(
CompileTimeErrorCode.MISSING_REQUIRED_ARGUMENT,
- errorNode,
+ errorNode.offset,
+ errorNode.length,
[parameterName],
);
}
@@ -137,15 +139,17 @@
enclosingConstructor, arguments, parameterName)) {
var reason = annotation.reason;
if (reason != null) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForOffset(
HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS,
- errorNode,
+ errorNode.offset,
+ errorNode.length,
[parameterName, reason],
);
} else {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForOffset(
HintCode.MISSING_REQUIRED_PARAM,
- errorNode,
+ errorNode.offset,
+ errorNode.length,
[parameterName],
);
}
diff --git a/pkg/analyzer/lib/src/error/super_formal_parameters_verifier.dart b/pkg/analyzer/lib/src/error/super_formal_parameters_verifier.dart
index 309ead0..2fcbb0c 100644
--- a/pkg/analyzer/lib/src/error/super_formal_parameters_verifier.dart
+++ b/pkg/analyzer/lib/src/error/super_formal_parameters_verifier.dart
@@ -24,10 +24,10 @@
} else {
result.positionalArgumentCount++;
if (hasExplicitPositionalArguments) {
- errorReporter?.reportErrorForNode(
+ errorReporter?.reportErrorForToken(
CompileTimeErrorCode
.POSITIONAL_SUPER_FORMAL_PARAMETER_WITH_POSITIONAL_ARGUMENT,
- parameter.identifier,
+ parameter.name,
);
}
}
diff --git a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
index c2c2f51..1386d07 100644
--- a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
+++ b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
@@ -97,7 +97,7 @@
return;
}
- var enumElement = constructorElement.enclosingElement2;
+ var enumElement = constructorElement.enclosingElement3;
var typeParameters = enumElement.typeParameters;
var typeArgumentList = node.arguments?.typeArguments;
@@ -131,9 +131,11 @@
bound = substitution.substituteType(bound);
if (!_typeSystem.isSubtypeOf(typeArgument, bound)) {
- _errorReporter.reportErrorForNode(
+ final errorTarget = typeArgumentNodes?[i] ?? node.name2;
+ _errorReporter.reportErrorForOffset(
CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS,
- typeArgumentNodes?[i] ?? node.name,
+ errorTarget.offset,
+ errorTarget.length,
[typeArgument, typeParameter.name, bound],
);
}
diff --git a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
index 66a2b0f..22e7a62 100644
--- a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
+++ b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
@@ -257,7 +257,7 @@
usedElements.addElement(parameter);
}
}
- var enclosingElement = element?.enclosingElement2;
+ var enclosingElement = element?.enclosingElement3;
if (element == null) {
if (isIdentifierRead) {
usedElements.unresolvedReadMembers.add(node.name);
@@ -457,6 +457,40 @@
: _libraryUri = library.source.uri;
@override
+ void visitClassDeclaration(ClassDeclaration node) {
+ final declaredElement = node.declaredElement as ClassElement;
+ _visitClassElement(declaredElement);
+
+ super.visitClassDeclaration(node);
+ }
+
+ @override
+ void visitConstructorDeclaration(ConstructorDeclaration node) {
+ if (node.name2 != null) {
+ final declaredElement = node.declaredElement as ConstructorElement;
+ _visitConstructorElement(declaredElement);
+ }
+
+ super.visitConstructorDeclaration(node);
+ }
+
+ @override
+ void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+ final declaredElement = node.declaredElement as FieldElement;
+ _visitFieldElement(declaredElement);
+
+ super.visitEnumConstantDeclaration(node);
+ }
+
+ @override
+ void visitEnumDeclaration(EnumDeclaration node) {
+ final declaredElement = node.declaredElement as ClassElement;
+ _visitClassElement(declaredElement);
+
+ super.visitEnumDeclaration(node);
+ }
+
+ @override
void visitFormalParameterList(FormalParameterList node) {
for (var element in node.parameterElements) {
if (!_isUsedElement(element!)) {
@@ -468,6 +502,54 @@
}
@override
+ void visitFunctionDeclaration(FunctionDeclaration node) {
+ final declaredElement = node.declaredElement;
+ if (declaredElement is FunctionElement) {
+ _visitFunctionElement(declaredElement);
+ } else if (declaredElement is PropertyAccessorElement) {
+ _visitPropertyAccessorElement(declaredElement);
+ }
+
+ super.visitFunctionDeclaration(node);
+ }
+
+ @override
+ void visitFunctionTypeAlias(FunctionTypeAlias node) {
+ final declaredElement = node.declaredElement as TypeAliasElement;
+ _visitTypeAliasElement(declaredElement);
+
+ super.visitFunctionTypeAlias(node);
+ }
+
+ @override
+ void visitGenericTypeAlias(GenericTypeAlias node) {
+ final declaredElement = node.declaredElement as TypeAliasElement;
+ _visitTypeAliasElement(declaredElement);
+
+ super.visitGenericTypeAlias(node);
+ }
+
+ @override
+ void visitMethodDeclaration(MethodDeclaration node) {
+ final declaredElement = node.declaredElement;
+ if (declaredElement is MethodElement) {
+ _visitMethodElement(declaredElement);
+ } else if (declaredElement is PropertyAccessorElement) {
+ _visitPropertyAccessorElement(declaredElement);
+ }
+
+ super.visitMethodDeclaration(node);
+ }
+
+ @override
+ void visitMixinDeclaration(MixinDeclaration node) {
+ final declaredElement = node.declaredElement as ClassElement;
+ _visitClassElement(declaredElement);
+
+ super.visitMixinDeclaration(node);
+ }
+
+ @override
void visitSimpleIdentifier(SimpleIdentifier node) {
if (node.inDeclarationContext()) {
var element = node.staticElement;
@@ -516,7 +598,7 @@
if (element.isPrivate) {
return false;
}
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ClassElement) {
if (enclosingElement.isEnum) {
@@ -544,7 +626,7 @@
bool elementIsStaticVariable =
element is VariableElement && element.isStatic;
if (element.isPublic) {
- if (_isPrivateClassOrExtension(element.enclosingElement2!) &&
+ if (_isPrivateClassOrExtension(element.enclosingElement3!) &&
elementIsStaticVariable) {
// Public static fields of private classes, mixins, and extensions are
// inaccessible from outside the library in which they are declared.
@@ -581,7 +663,7 @@
element is FunctionElement && !element.isStatic) {
// local variable or function
} else if (element is ParameterElement) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
// Only report unused parameters of constructors, methods, and functions.
if (enclosingElement is! ConstructorElement &&
enclosingElement is! FunctionElement &&
@@ -593,7 +675,7 @@
return true;
}
if (enclosingElement is ConstructorElement &&
- enclosingElement.enclosingElement2.typeParameters.isNotEmpty) {
+ enclosingElement.enclosingElement3.typeParameters.isNotEmpty) {
// There is an issue matching arguments of instance creation
// expressions for generic classes with parameters, so for now,
// consider every parameter of a constructor of a generic class
@@ -647,7 +729,7 @@
}
Iterable<ExecutableElement> _overriddenElements(Element element) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ClassElement) {
Name name = Name(_libraryUri, element.name!);
var overridden =
@@ -729,7 +811,7 @@
// constructor in the class. A single unused, private constructor may serve
// the purpose of preventing the class from being extended. In serving this
// purpose, the constructor is "used."
- if (element.enclosingElement2.constructors.length > 1 &&
+ if (element.enclosingElement3.constructors.length > 1 &&
!_isUsedMember(element)) {
_reportErrorForElement(
HintCode.UNUSED_ELEMENT, element, [element.displayName]);
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index ee1e932..4523131 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -194,15 +194,15 @@
}
}
- SimpleIdentifier? get currentDeclarationName {
+ Token? get currentDeclarationName {
if (classDeclaration != null) {
- return classDeclaration!.name;
+ return classDeclaration!.name2;
} else if (mixinDeclaration != null) {
- return mixinDeclaration!.name;
+ return mixinDeclaration!.name2;
} else if (extensionDeclaration != null) {
- return extensionDeclaration!.name;
+ return extensionDeclaration!.name2;
} else {
- return enumDeclaration!.name;
+ return enumDeclaration!.name2;
}
}
@@ -276,16 +276,16 @@
extensionDeclaration == null);
debugEvent("ExtensionHeader");
- var typeParameters = pop() as TypeParameterList?;
+ var typeParameters = pop() as TypeParameterListImpl?;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, extensionKeyword);
- SimpleIdentifier? name;
+ SimpleIdentifierImpl? name;
if (nameToken != null) {
name = ast.simpleIdentifier(nameToken, isDeclaration: true);
}
- extensionDeclaration = ast.extensionDeclaration(
+ extensionDeclaration = ExtensionDeclarationImpl(
comment: comment,
metadata: metadata,
extensionKeyword: extensionKeyword,
@@ -371,7 +371,7 @@
}
if (staticToken != null) {
assert(staticToken.isModifier);
- String? className = currentDeclarationName?.name;
+ String? className = currentDeclarationName?.lexeme;
if (name.lexeme != className || getOrSet != null) {
modifiers.staticKeyword = staticToken;
}
@@ -425,11 +425,17 @@
@override
void beginTypeVariable(Token token) {
debugEvent("beginTypeVariable");
- var name = pop() as SimpleIdentifier;
+ var name = pop() as SimpleIdentifierImpl;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, name.beginToken);
- var typeParameter = ast.typeParameter(comment, metadata, name, null, null);
+ var typeParameter = TypeParameterImpl(
+ comment: comment,
+ metadata: metadata,
+ name: name,
+ extendsKeyword: null,
+ bound: null,
+ );
push(typeParameter);
}
@@ -824,7 +830,7 @@
var bodyObject = pop();
var initializers = (pop() as List<ConstructorInitializer>?) ?? const [];
var separator = pop() as Token?;
- var parameters = pop() as FormalParameterList;
+ var parameters = pop() as FormalParameterListImpl;
var typeParameters = pop() as TypeParameterList?;
var name = pop();
pop(); // return type
@@ -832,9 +838,9 @@
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, beginToken);
- ConstructorName? redirectedConstructor;
- FunctionBody body;
- if (bodyObject is FunctionBody) {
+ ConstructorNameImpl? redirectedConstructor;
+ FunctionBodyImpl body;
+ if (bodyObject is FunctionBodyImpl) {
body = bodyObject;
} else if (bodyObject is _RedirectingFactoryBody) {
separator = bodyObject.equalToken;
@@ -850,10 +856,10 @@
SimpleIdentifier prefixOrName;
Token? period;
- SimpleIdentifier? nameOrNull;
- if (name is SimpleIdentifier) {
+ SimpleIdentifierImpl? nameOrNull;
+ if (name is SimpleIdentifierImpl) {
prefixOrName = name;
- } else if (name is PrefixedIdentifier) {
+ } else if (name is PrefixedIdentifierImpl) {
prefixOrName = name.prefix;
period = name.period;
nameOrNull = name.identifier;
@@ -877,21 +883,21 @@
handleRecoverableError(
messageConstConstructorWithBody, bodyToken, bodyToken);
}
- ConstructorDeclaration constructor = ast.constructorDeclaration(
- comment,
- metadata,
- modifiers?.externalKeyword,
- modifiers?.finalConstOrVarKeyword,
- null,
- // TODO(paulberry): factoryKeyword
- ast.simpleIdentifier(prefixOrName.token),
- period,
- nameOrNull,
- parameters,
- separator,
- initializers,
- redirectedConstructor,
- body);
+ ConstructorDeclaration constructor = ConstructorDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ externalKeyword: modifiers?.externalKeyword,
+ constKeyword: modifiers?.finalConstOrVarKeyword,
+ factoryKeyword: null,
+ returnType: ast.simpleIdentifier(prefixOrName.token),
+ period: period,
+ name: nameOrNull,
+ parameters: parameters,
+ separator: separator,
+ initializers: initializers,
+ redirectedConstructor: redirectedConstructor,
+ body: body,
+ );
currentDeclarationMembers.add(constructor);
if (mixinDeclaration != null) {
// TODO (danrubel): Report an error if this is a mixin declaration.
@@ -911,11 +917,11 @@
assert(optional(';', endToken) || optional('}', endToken));
debugEvent("ClassFactoryMethod");
- FunctionBody body;
+ FunctionBodyImpl body;
Token? separator;
- ConstructorName? redirectedConstructor;
+ ConstructorNameImpl? redirectedConstructor;
var bodyObject = pop();
- if (bodyObject is FunctionBody) {
+ if (bodyObject is FunctionBodyImpl) {
body = bodyObject;
} else if (bodyObject is _RedirectingFactoryBody) {
separator = bodyObject.equalToken;
@@ -929,7 +935,7 @@
uri);
}
- var parameters = pop() as FormalParameterList;
+ var parameters = pop() as FormalParameterListImpl;
var typeParameters = pop() as TypeParameterList?;
var constructorName = pop() as Identifier;
var modifiers = pop() as _Modifiers?;
@@ -946,7 +952,7 @@
// the actual constructor name.
SimpleIdentifier returnType;
Token? period;
- SimpleIdentifier? name;
+ SimpleIdentifierImpl? name;
Identifier typeName = constructorName;
if (typeName is SimpleIdentifier) {
returnType = typeName;
@@ -959,20 +965,23 @@
throw UnimplementedError();
}
- currentDeclarationMembers.add(ast.constructorDeclaration(
- comment,
- metadata,
- modifiers?.externalKeyword,
- modifiers?.finalConstOrVarKeyword,
- factoryKeyword,
- ast.simpleIdentifier(returnType.token),
- period,
- name,
- parameters,
- separator,
- null,
- redirectedConstructor,
- body));
+ currentDeclarationMembers.add(
+ ConstructorDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ externalKeyword: modifiers?.externalKeyword,
+ constKeyword: modifiers?.finalConstOrVarKeyword,
+ factoryKeyword: factoryKeyword,
+ returnType: ast.simpleIdentifier(returnType.token),
+ period: period,
+ name: name,
+ parameters: parameters,
+ separator: separator,
+ initializers: null,
+ redirectedConstructor: redirectedConstructor,
+ body: body,
+ ),
+ );
}
@override
@@ -1016,8 +1025,10 @@
}
var variables = popTypedList2<VariableDeclaration>(count);
- var type = pop() as TypeAnnotation?;
- var variableList = ast.variableDeclarationList2(
+ var type = pop() as TypeAnnotationImpl?;
+ var variableList = VariableDeclarationListImpl(
+ comment: null,
+ metadata: null,
lateKeyword: lateToken,
keyword: varFinalOrConst,
type: type,
@@ -1026,7 +1037,8 @@
var covariantKeyword = covariantToken;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, beginToken);
- currentDeclarationMembers.add(ast.fieldDeclaration2(
+ currentDeclarationMembers.add(
+ FieldDeclarationImpl(
comment: comment,
metadata: metadata,
abstractKeyword: abstractToken,
@@ -1035,7 +1047,9 @@
externalKeyword: externalToken,
staticKeyword: staticToken,
fieldList: variableList,
- semicolon: semicolon));
+ semicolon: semicolon,
+ ),
+ );
}
@override
@@ -1049,18 +1063,18 @@
var bodyObject = pop();
pop(); // initializers
pop(); // separator
- var parameters = pop() as FormalParameterList?;
- var typeParameters = pop() as TypeParameterList?;
+ var parameters = pop() as FormalParameterListImpl?;
+ var typeParameters = pop() as TypeParameterListImpl?;
var name = pop();
- var returnType = pop() as TypeAnnotation?;
+ var returnType = pop() as TypeAnnotationImpl?;
var modifiers = pop() as _Modifiers?;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, beginToken);
assert(parameters != null || optional('get', getOrSet!));
- FunctionBody body;
- if (bodyObject is FunctionBody) {
+ FunctionBodyImpl body;
+ if (bodyObject is FunctionBodyImpl) {
body = bodyObject;
} else if (bodyObject is _RedirectingFactoryBody) {
body = ast.emptyFunctionBody(endToken);
@@ -1073,8 +1087,8 @@
}
Token? operatorKeyword;
- SimpleIdentifier nameId;
- if (name is SimpleIdentifier) {
+ SimpleIdentifierImpl nameId;
+ if (name is SimpleIdentifierImpl) {
nameId = name;
} else if (name is _OperatorName) {
operatorKeyword = name.operatorKeyword;
@@ -1089,18 +1103,21 @@
}
checkFieldFormalParameters(parameters);
- currentDeclarationMembers.add(ast.methodDeclaration(
- comment,
- metadata,
- modifiers?.externalKeyword,
- modifiers?.abstractKeyword ?? modifiers?.staticKeyword,
- returnType,
- getOrSet,
- operatorKeyword,
- nameId,
- typeParameters,
- parameters,
- body));
+ currentDeclarationMembers.add(
+ MethodDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ externalKeyword: modifiers?.externalKeyword,
+ modifierKeyword: modifiers?.abstractKeyword ?? modifiers?.staticKeyword,
+ returnType: returnType,
+ propertyKeyword: getOrSet,
+ operatorKeyword: operatorKeyword,
+ name: nameId,
+ typeParameters: typeParameters,
+ parameters: parameters,
+ body: body,
+ ),
+ );
}
@override
@@ -1284,11 +1301,20 @@
var combinators = pop() as List<Combinator>?;
var configurations = pop() as List<Configuration>?;
- var uri = pop() as StringLiteral;
+ var uri = pop() as StringLiteralImpl;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, exportKeyword);
- directives.add(ast.exportDirective(comment, metadata, exportKeyword, uri,
- configurations, combinators, semicolon));
+ directives.add(
+ ExportDirectiveImpl(
+ comment: comment,
+ metadata: metadata,
+ exportKeyword: exportKeyword,
+ uri: uri,
+ configurations: configurations,
+ combinators: combinators,
+ semicolon: semicolon,
+ ),
+ );
}
@override
@@ -1350,14 +1376,14 @@
debugEvent("ExtensionFactoryMethod");
var bodyObject = pop();
- var parameters = pop() as FormalParameterList;
- var typeParameters = pop() as TypeParameterList?;
+ var parameters = pop() as FormalParameterListImpl;
+ var typeParameters = pop() as TypeParameterListImpl?;
var constructorName = pop();
var modifiers = pop() as _Modifiers?;
var metadata = pop() as List<Annotation>?;
- FunctionBody body;
- if (bodyObject is FunctionBody) {
+ FunctionBodyImpl body;
+ if (bodyObject is FunctionBodyImpl) {
body = bodyObject;
} else if (bodyObject is _RedirectingFactoryBody) {
body = ast.emptyFunctionBody(endToken);
@@ -1373,10 +1399,10 @@
// has already reported an error at this point, but we include them in as
// a method declaration in order to get navigation, search, etc.
- SimpleIdentifier methodName;
- if (constructorName is SimpleIdentifier) {
+ SimpleIdentifierImpl methodName;
+ if (constructorName is SimpleIdentifierImpl) {
methodName = constructorName;
- } else if (constructorName is PrefixedIdentifier) {
+ } else if (constructorName is PrefixedIdentifierImpl) {
methodName = constructorName.identifier;
} else {
// Unsure what the method name should be in this situation.
@@ -1384,18 +1410,21 @@
// don't bother adding this declaration to the AST.
return;
}
- currentDeclarationMembers.add(ast.methodDeclaration(
- comment,
- metadata,
- modifiers?.externalKeyword,
- modifiers?.abstractKeyword ?? modifiers?.staticKeyword,
- null, // returnType
- null, // getOrSet
- null, // operatorKeyword
- methodName,
- typeParameters,
- parameters,
- body));
+ currentDeclarationMembers.add(
+ MethodDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ externalKeyword: modifiers?.externalKeyword,
+ modifierKeyword: modifiers?.abstractKeyword ?? modifiers?.staticKeyword,
+ returnType: null,
+ propertyKeyword: null,
+ operatorKeyword: null,
+ name: methodName,
+ typeParameters: typeParameters,
+ parameters: parameters,
+ body: body,
+ ),
+ );
}
@override
@@ -1442,9 +1471,15 @@
assert(optional('=', assignment));
debugEvent("FieldInitializer");
- var initializer = pop() as Expression;
- var name = pop() as SimpleIdentifier;
- push(_makeVariableDeclaration(name, assignment, initializer));
+ var initializer = pop() as ExpressionImpl;
+ var name = pop() as SimpleIdentifierImpl;
+ push(
+ _makeVariableDeclaration(
+ name: name,
+ equals: assignment,
+ initializer: initializer,
+ ),
+ );
}
@override
@@ -1822,7 +1857,7 @@
var combinators = pop() as List<Combinator>?;
var deferredKeyword = pop(NullValue.Deferred) as Token?;
var asKeyword = pop(NullValue.As) as Token?;
- var prefix = pop(NullValue.Prefix) as SimpleIdentifier?;
+ var prefix = pop(NullValue.Prefix) as SimpleIdentifierImpl?;
var configurations = pop() as List<Configuration>?;
var uri = pop() as StringLiteralImpl;
var metadata = pop() as List<Annotation>?;
@@ -1852,17 +1887,17 @@
);
} else {
directives.add(
- ast.importDirective(
- comment,
- metadata,
- importKeyword,
- uri,
- configurations,
- deferredKeyword,
- asKeyword,
- prefix,
- combinators,
- semicolon ?? Tokens.semicolon(),
+ ImportDirectiveImpl(
+ comment: comment,
+ metadata: metadata,
+ importKeyword: importKeyword,
+ uri: uri,
+ configurations: configurations,
+ deferredKeyword: deferredKeyword,
+ asKeyword: asKeyword,
+ prefix: prefix,
+ combinators: combinators,
+ semicolon: semicolon ?? Tokens.semicolon(),
),
);
}
@@ -1880,8 +1915,12 @@
// reached, node would always be a VariableDeclaration.
if (node is VariableDeclaration) {
variable = node;
- } else if (node is SimpleIdentifier) {
- variable = _makeVariableDeclaration(node, null, null);
+ } else if (node is SimpleIdentifierImpl) {
+ variable = _makeVariableDeclaration(
+ name: node,
+ equals: null,
+ initializer: null,
+ );
} else {
internalProblem(
templateInternalProblemUnhandled.withArguments(
@@ -1974,8 +2013,15 @@
var name = ast.libraryIdentifier(libraryName);
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, libraryKeyword);
- directives.add(ast.libraryDirective(
- comment, metadata, libraryKeyword, name, semicolon));
+ directives.add(
+ LibraryDirectiveImpl(
+ comment: comment,
+ metadata: metadata,
+ libraryKeyword: libraryKeyword,
+ name: name,
+ semicolon: semicolon,
+ ),
+ );
}
@override
@@ -2036,14 +2082,22 @@
}
var parameters = pop() as FormalParameterList;
checkFieldFormalParameters(parameters);
- var name = pop() as SimpleIdentifier;
- var returnType = pop() as TypeAnnotation?;
+ var name = pop() as SimpleIdentifierImpl;
+ var returnType = pop() as TypeAnnotationImpl?;
var typeParameters = pop() as TypeParameterList?;
var metadata = pop(NullValue.Metadata) as List<Annotation>?;
- FunctionExpression functionExpression =
+ final functionExpression =
ast.functionExpression(typeParameters, parameters, body);
- var functionDeclaration = ast.functionDeclaration(
- null, metadata, null, null, returnType, null, name, functionExpression);
+ var functionDeclaration = FunctionDeclarationImpl(
+ comment: null,
+ metadata: metadata,
+ augmentKeyword: null,
+ externalKeyword: null,
+ returnType: returnType,
+ propertyKeyword: null,
+ name: name,
+ functionExpression: functionExpression,
+ );
push(ast.functionDeclarationStatement(functionDeclaration));
}
@@ -2168,35 +2222,38 @@
assert(optional(';', semicolon));
debugEvent("NamedMixinApplication");
- ImplementsClause? implementsClause;
+ ImplementsClauseImpl? implementsClause;
if (implementsKeyword != null) {
var interfaces = pop() as List<NamedType>;
implementsClause = ast.implementsClause(implementsKeyword, interfaces);
}
- var withClause = pop(NullValue.WithClause) as WithClause;
- var superclass = pop() as NamedType;
+ var withClause = pop(NullValue.WithClause) as WithClauseImpl;
+ var superclass = pop() as NamedTypeImpl;
var augmentKeyword = pop(NullValue.Token) as Token?;
var macroKeyword = pop(NullValue.Token) as Token?;
var modifiers = pop() as _Modifiers?;
- var typeParameters = pop() as TypeParameterList?;
- var name = pop() as SimpleIdentifier;
+ var typeParameters = pop() as TypeParameterListImpl?;
+ var name = pop() as SimpleIdentifierImpl;
var abstractKeyword = modifiers?.abstractKeyword;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, beginToken);
- declarations.add(ast.classTypeAlias(
- comment,
- metadata,
- classKeyword,
- name,
- typeParameters,
- equalsToken,
- abstractKeyword,
- macroKeyword,
- augmentKeyword,
- superclass,
- withClause,
- implementsClause,
- semicolon));
+ declarations.add(
+ ClassTypeAliasImpl(
+ comment: comment,
+ metadata: metadata,
+ typedefKeyword: classKeyword,
+ name: name,
+ typeParameters: typeParameters,
+ equals: equalsToken,
+ abstractKeyword: abstractKeyword,
+ macroKeyword: macroKeyword,
+ augmentKeyword: augmentKeyword,
+ superclass: superclass,
+ withClause: withClause,
+ implementsClause: implementsClause,
+ semicolon: semicolon,
+ ),
+ );
}
@override
@@ -2224,11 +2281,18 @@
assert(optional(';', semicolon));
debugEvent("Part");
- var uri = pop() as StringLiteral;
+ var uri = pop() as StringLiteralImpl;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, partKeyword);
- directives
- .add(ast.partDirective(comment, metadata, partKeyword, uri, semicolon));
+ directives.add(
+ PartDirectiveImpl(
+ comment: comment,
+ metadata: metadata,
+ partKeyword: partKeyword,
+ uri: uri,
+ semicolon: semicolon,
+ ),
+ );
}
@override
@@ -2239,17 +2303,26 @@
assert(optional(';', semicolon));
debugEvent("PartOf");
var libraryNameOrUri = pop();
- LibraryIdentifier? name;
- StringLiteral? uri;
- if (libraryNameOrUri is StringLiteral) {
+ LibraryIdentifierImpl? name;
+ StringLiteralImpl? uri;
+ if (libraryNameOrUri is StringLiteralImpl) {
uri = libraryNameOrUri;
} else {
name = ast.libraryIdentifier(libraryNameOrUri as List<SimpleIdentifier>);
}
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, partKeyword);
- directives.add(ast.partOfDirective(
- comment, metadata, partKeyword, ofKeyword, uri, name, semicolon));
+ directives.add(
+ PartOfDirectiveImpl(
+ comment: comment,
+ metadata: metadata,
+ partKeyword: partKeyword,
+ ofKeyword: ofKeyword,
+ uri: uri,
+ libraryName: name,
+ semicolon: semicolon,
+ ),
+ );
}
@override
@@ -2257,7 +2330,7 @@
assert(optional('=', equalToken));
debugEvent("RedirectingFactoryBody");
- var constructorName = pop() as ConstructorName;
+ var constructorName = pop() as ConstructorNameImpl;
var starToken = pop() as Token?;
var asyncToken = pop() as Token?;
push(_RedirectingFactoryBody(
@@ -2428,8 +2501,10 @@
}
var variables = popTypedList2<VariableDeclaration>(count);
- var type = pop() as TypeAnnotation?;
- var variableList = ast.variableDeclarationList2(
+ var type = pop() as TypeAnnotationImpl?;
+ var variableList = VariableDeclarationListImpl(
+ comment: null,
+ metadata: null,
lateKeyword: lateToken,
keyword: varFinalOrConst,
type: type,
@@ -2437,9 +2512,15 @@
);
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, beginToken);
- declarations.add(ast.topLevelVariableDeclaration(
- comment, metadata, variableList, semicolon,
- externalKeyword: externalToken));
+ declarations.add(
+ TopLevelVariableDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ externalKeyword: externalToken,
+ variableList: variableList,
+ semicolon: semicolon,
+ ),
+ );
}
@override
@@ -2454,22 +2535,26 @@
var body = pop() as FunctionBody;
var parameters = pop() as FormalParameterList?;
var typeParameters = pop() as TypeParameterList?;
- var name = pop() as SimpleIdentifier;
- var returnType = pop() as TypeAnnotation?;
+ var name = pop() as SimpleIdentifierImpl;
+ var returnType = pop() as TypeAnnotationImpl?;
var modifiers = pop() as _Modifiers?;
var augmentKeyword = modifiers?.augmentKeyword;
var externalKeyword = modifiers?.externalKeyword;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, beginToken);
- declarations.add(ast.functionDeclaration(
- comment,
- metadata,
- augmentKeyword,
- externalKeyword,
- returnType,
- getOrSet,
- name,
- ast.functionExpression(typeParameters, parameters, body)));
+ declarations.add(
+ FunctionDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ augmentKeyword: augmentKeyword,
+ externalKeyword: externalKeyword,
+ returnType: returnType,
+ propertyKeyword: getOrSet,
+ name: name,
+ functionExpression:
+ ast.functionExpression(typeParameters, parameters, body),
+ ),
+ );
}
@override
@@ -2504,18 +2589,28 @@
debugEvent("FunctionTypeAlias");
if (equals == null) {
- var parameters = pop() as FormalParameterList;
- var typeParameters = pop() as TypeParameterList?;
- var name = pop() as SimpleIdentifier;
- var returnType = pop() as TypeAnnotation?;
+ var parameters = pop() as FormalParameterListImpl;
+ var typeParameters = pop() as TypeParameterListImpl?;
+ var name = pop() as SimpleIdentifierImpl;
+ var returnType = pop() as TypeAnnotationImpl?;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, typedefKeyword);
- declarations.add(ast.functionTypeAlias(comment, metadata, typedefKeyword,
- returnType, name, typeParameters, parameters, semicolon));
+ declarations.add(
+ FunctionTypeAliasImpl(
+ comment: comment,
+ metadata: metadata,
+ typedefKeyword: typedefKeyword,
+ returnType: returnType,
+ name: name,
+ typeParameters: typeParameters,
+ parameters: parameters,
+ semicolon: semicolon,
+ ),
+ );
} else {
- var type = pop() as TypeAnnotation;
- var templateParameters = pop() as TypeParameterList?;
- var name = pop() as SimpleIdentifier;
+ var type = pop() as TypeAnnotationImpl;
+ var templateParameters = pop() as TypeParameterListImpl?;
+ var name = pop() as SimpleIdentifierImpl;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, typedefKeyword);
if (type is! GenericFunctionType && !enableNonFunctionTypeAliases) {
@@ -2524,8 +2619,18 @@
startToken: equals,
);
}
- declarations.add(ast.genericTypeAlias(comment, metadata, typedefKeyword,
- name, templateParameters, equals, type, semicolon));
+ declarations.add(
+ GenericTypeAliasImpl(
+ comment: comment,
+ metadata: metadata,
+ typedefKeyword: typedefKeyword,
+ name: name,
+ typeParameters: templateParameters,
+ equals: equals,
+ type: type,
+ semicolon: semicolon,
+ ),
+ );
}
}
@@ -2580,10 +2685,16 @@
assert(optionalOrNull('=', assignmentOperator));
debugEvent("VariableInitializer");
- var initializer = pop() as Expression;
- var identifier = pop() as SimpleIdentifier;
+ var initializer = pop() as ExpressionImpl;
+ var identifier = pop() as SimpleIdentifierImpl;
// TODO(ahe): Don't push initializers, instead install them.
- push(_makeVariableDeclaration(identifier, assignmentOperator, initializer));
+ push(
+ _makeVariableDeclaration(
+ name: identifier,
+ equals: assignmentOperator,
+ initializer: initializer,
+ ),
+ );
}
@override
@@ -2593,14 +2704,15 @@
var variables = popTypedList2<VariableDeclaration>(count);
var modifiers = pop(NullValue.Modifiers) as _Modifiers?;
- var type = pop() as TypeAnnotation?;
+ var type = pop() as TypeAnnotationImpl?;
var keyword = modifiers?.finalConstOrVarKeyword;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, variables[0].beginToken);
// var comment = _findComment(metadata,
// variables[0].beginToken ?? type?.beginToken ?? modifiers.beginToken);
- push(ast.variableDeclarationStatement(
- ast.variableDeclarationList2(
+ push(
+ ast.variableDeclarationStatement(
+ VariableDeclarationListImpl(
comment: comment,
metadata: metadata,
lateKeyword: modifiers?.lateToken,
@@ -2608,7 +2720,9 @@
type: type,
variables: variables,
),
- semicolon ?? Tokens.semicolon()));
+ semicolon ?? Tokens.semicolon(),
+ ),
+ );
}
@override
@@ -2739,9 +2853,11 @@
if (catchParameterList != null) {
List<FormalParameter> catchParameters = catchParameterList.parameters;
if (catchParameters.isNotEmpty) {
+ // ignore: deprecated_member_use_from_same_package
exception = catchParameters[0].identifier;
}
if (catchParameters.length > 1) {
+ // ignore: deprecated_member_use_from_same_package
stackTrace = catchParameters[1].identifier;
}
}
@@ -2798,34 +2914,35 @@
if (nativeToken != null) {
nativeClause = ast.nativeClause(nativeToken, nativeName);
}
- var implementsClause = pop(NullValue.IdentifierList) as ImplementsClause?;
- var withClause = pop(NullValue.WithClause) as WithClause?;
- var extendsClause = pop(NullValue.ExtendsClause) as ExtendsClause?;
+ var implementsClause =
+ pop(NullValue.IdentifierList) as ImplementsClauseImpl?;
+ var withClause = pop(NullValue.WithClause) as WithClauseImpl?;
+ var extendsClause = pop(NullValue.ExtendsClause) as ExtendsClauseImpl?;
var augmentKeyword = pop(NullValue.Token) as Token?;
var macroKeyword = pop(NullValue.Token) as Token?;
var modifiers = pop() as _Modifiers?;
- var typeParameters = pop() as TypeParameterList?;
- var name = pop() as SimpleIdentifier;
+ var typeParameters = pop() as TypeParameterListImpl?;
+ var name = pop() as SimpleIdentifierImpl;
var abstractKeyword = modifiers?.abstractKeyword;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, begin);
// leftBracket, members, and rightBracket
// are set in [endClassOrMixinBody].
- classDeclaration = ast.classDeclaration(
- comment,
- metadata,
- abstractKeyword,
- macroKeyword,
- augmentKeyword,
- classKeyword,
- name,
- typeParameters,
- extendsClause,
- withClause,
- implementsClause,
- Tokens.openCurlyBracket(), // leftBracket
- <ClassMember>[],
- Tokens.closeCurlyBracket(), // rightBracket
+ classDeclaration = ClassDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ abstractKeyword: abstractKeyword,
+ macroKeyword: macroKeyword,
+ augmentKeyword: augmentKeyword,
+ classKeyword: classKeyword,
+ name: name,
+ typeParameters: typeParameters,
+ extendsClause: extendsClause,
+ withClause: withClause,
+ implementsClause: implementsClause,
+ leftBracket: Tokens.openCurlyBracket(),
+ members: <ClassMember>[],
+ rightBracket: Tokens.closeCurlyBracket(),
);
classDeclaration!.nativeClause = nativeClause;
@@ -2965,8 +3082,9 @@
// Replace the constant to include arguments.
if (argumentList != null) {
constant = EnumConstantDeclarationImpl(
- documentationComment: constant.documentationComment,
+ comment: constant.documentationComment,
metadata: constant.metadata,
+ // ignore: deprecated_member_use_from_same_package
name: constant.name,
arguments: EnumConstantArgumentsImpl(
typeArguments: typeArguments,
@@ -3004,10 +3122,11 @@
assert(optional('{', leftBrace));
debugEvent("EnumHeader");
- var implementsClause = pop(NullValue.IdentifierList) as ImplementsClause?;
- var withClause = pop(NullValue.WithClause) as WithClause?;
- var typeParameters = pop() as TypeParameterList?;
- var name = pop() as SimpleIdentifier;
+ var implementsClause =
+ pop(NullValue.IdentifierList) as ImplementsClauseImpl?;
+ var withClause = pop(NullValue.WithClause) as WithClauseImpl?;
+ var typeParameters = pop() as TypeParameterListImpl?;
+ var name = pop() as SimpleIdentifierImpl;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, enumKeyword);
@@ -3027,7 +3146,7 @@
}
declarations.add(
- enumDeclaration = ast.enumDeclaration2(
+ enumDeclaration = EnumDeclarationImpl(
comment: comment,
metadata: metadata,
enumKeyword: enumKeyword,
@@ -3167,12 +3286,14 @@
if (variableOrDeclaration is VariableDeclarationStatement) {
VariableDeclarationList variableList = variableOrDeclaration.variables;
forLoopParts = ast.forEachPartsWithDeclaration(
- loopVariable: ast.declaredIdentifier(
- variableList.documentationComment,
- variableList.metadata,
- variableList.keyword,
- variableList.type,
- variableList.variables.first.name),
+ loopVariable: DeclaredIdentifierImpl(
+ comment: variableList.documentationComment as CommentImpl?,
+ metadata: variableList.metadata,
+ keyword: variableList.keyword,
+ type: variableList.type as TypeAnnotationImpl?,
+ // ignore: deprecated_member_use_from_same_package
+ identifier: variableList.variables.first.name as SimpleIdentifierImpl,
+ ),
inKeyword: inKeyword,
iterable: iterator,
);
@@ -3259,7 +3380,7 @@
return;
}
- SimpleIdentifier identifier =
+ final identifier =
ast.simpleIdentifier(token, isDeclaration: context.inDeclaration);
if (context.inLibraryOrPartOfDeclaration) {
if (!context.isContinuation) {
@@ -3270,7 +3391,14 @@
} else if (context == IdentifierContext.enumValueDeclaration) {
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, token);
- push(ast.enumConstantDeclaration(comment, metadata, identifier));
+ push(
+ EnumConstantDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ name: identifier,
+ arguments: null,
+ ),
+ );
} else {
push(identifier);
}
@@ -3615,26 +3743,27 @@
extensionDeclaration == null);
debugEvent("MixinHeader");
- var implementsClause = pop(NullValue.IdentifierList) as ImplementsClause?;
- var onClause = pop(NullValue.IdentifierList) as OnClause?;
+ var implementsClause =
+ pop(NullValue.IdentifierList) as ImplementsClauseImpl?;
+ var onClause = pop(NullValue.IdentifierList) as OnClauseImpl?;
var augmentKeyword = pop(NullValue.Token) as Token?;
- var typeParameters = pop() as TypeParameterList?;
- var name = pop() as SimpleIdentifier;
+ var typeParameters = pop() as TypeParameterListImpl?;
+ var name = pop() as SimpleIdentifierImpl;
var metadata = pop() as List<Annotation>?;
var comment = _findComment(metadata, mixinKeyword);
- mixinDeclaration = ast.mixinDeclaration(
- comment,
- metadata,
- augmentKeyword,
- mixinKeyword,
- name,
- typeParameters,
- onClause,
- implementsClause,
- Tokens.openCurlyBracket(), // leftBracket
- <ClassMember>[],
- Tokens.closeCurlyBracket(), // rightBracket
+ mixinDeclaration = MixinDeclarationImpl(
+ comment: comment,
+ metadata: metadata,
+ augmentKeyword: augmentKeyword,
+ mixinKeyword: mixinKeyword,
+ name: name,
+ typeParameters: typeParameters,
+ onClause: onClause,
+ implementsClause: implementsClause,
+ leftBracket: Tokens.openCurlyBracket(),
+ members: <ClassMember>[],
+ rightBracket: Tokens.closeCurlyBracket(),
);
declarations.add(mixinDeclaration!);
}
@@ -3713,8 +3842,14 @@
void handleNoFieldInitializer(Token token) {
debugEvent("NoFieldInitializer");
- var name = pop() as SimpleIdentifier;
- push(_makeVariableDeclaration(name, null, null));
+ var name = pop() as SimpleIdentifierImpl;
+ push(
+ _makeVariableDeclaration(
+ name: name,
+ equals: null,
+ initializer: null,
+ ),
+ );
}
@override
@@ -3744,7 +3879,7 @@
debugEvent("NoTypeNameInConstructorReference");
assert(enumDeclaration != null);
- push(ast.simpleIdentifier(enumDeclaration!.name.token));
+ push(ast.simpleIdentifier(enumDeclaration!.name2));
}
@override
@@ -4315,9 +4450,16 @@
typeArguments: typeArguments));
}
- VariableDeclaration _makeVariableDeclaration(
- SimpleIdentifier name, Token? equals, Expression? initializer) {
- return ast.variableDeclaration(name, equals, initializer);
+ VariableDeclaration _makeVariableDeclaration({
+ required SimpleIdentifierImpl name,
+ required Token? equals,
+ required ExpressionImpl? initializer,
+ }) {
+ return VariableDeclarationImpl(
+ name: name,
+ equals: equals,
+ initializer: initializer,
+ );
}
void _reportFeatureNotEnabled({
@@ -4441,7 +4583,7 @@
/// followed by a token.
class _OperatorName {
final Token operatorKeyword;
- final SimpleIdentifier name;
+ final SimpleIdentifierImpl name;
_OperatorName(this.operatorKeyword, this.name);
}
@@ -4470,7 +4612,7 @@
final Token? asyncKeyword;
final Token? starKeyword;
final Token equalToken;
- final ConstructorName constructorName;
+ final ConstructorNameImpl constructorName;
_RedirectingFactoryBody(this.asyncKeyword, this.starKeyword, this.equalToken,
this.constructorName);
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 634506e..5768e84 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -365,7 +365,7 @@
} else {
if (element.isFactory &&
// Check if we've reported [NO_GENERATIVE_CONSTRUCTORS_IN_SUPERCLASS].
- !element.enclosingElement2.constructors
+ !element.enclosingElement3.constructors
.every((constructor) => constructor.isFactory)) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR, node, [element]);
diff --git a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
index 3cc1495..e3f078a 100644
--- a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
+++ b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
@@ -38,7 +38,7 @@
return;
}
- _checkForAssignableExpressionAtType(
+ checkForAssignableExpressionAtType(
expression, actualStaticType, expectedStaticType, errorCode,
whyNotPromoted: whyNotPromoted);
}
@@ -61,6 +61,36 @@
);
}
+ void checkForAssignableExpressionAtType(
+ Expression expression,
+ DartType actualStaticType,
+ DartType expectedStaticType,
+ ErrorCode errorCode,
+ {Map<DartType, NonPromotionReason> Function()? whyNotPromoted}) {
+ if (!expectedStaticType.isVoid && checkForUseOfVoidResult(expression)) {
+ return;
+ }
+
+ if (!typeSystem.isAssignableTo(actualStaticType, expectedStaticType)) {
+ AstNode getErrorNode(AstNode node) {
+ if (node is CascadeExpression) {
+ return getErrorNode(node.target);
+ }
+ if (node is ParenthesizedExpression) {
+ return getErrorNode(node.expression);
+ }
+ return node;
+ }
+
+ errorReporter.reportErrorForNode(
+ errorCode,
+ getErrorNode(expression),
+ [actualStaticType, expectedStaticType],
+ computeWhyNotPromotedMessages(expression, whyNotPromoted?.call()),
+ );
+ }
+ }
+
/// Verify that the given constructor field [initializer] has compatible field
/// and initializer expression types. The [fieldElement] is the static element
/// from the name in the [ConstructorFieldInitializer].
@@ -124,45 +154,6 @@
// return true;
}
- /// Verify that the given left hand side ([lhs]) and right hand side ([rhs])
- /// represent a valid assignment.
- ///
- /// See [CompileTimeErrorCode.INVALID_ASSIGNMENT].
- void checkForInvalidAssignment(Expression? lhs, Expression? rhs,
- {Map<DartType, NonPromotionReason> Function()? whyNotPromoted}) {
- if (lhs == null || rhs == null) {
- return;
- }
-
- if (lhs is IndexExpression &&
- identical(lhs.realTarget.staticType, NeverTypeImpl.instance) ||
- lhs is PrefixedIdentifier &&
- identical(lhs.prefix.staticType, NeverTypeImpl.instance) ||
- lhs is PropertyAccess &&
- identical(lhs.realTarget.staticType, NeverTypeImpl.instance)) {
- return;
- }
-
- DartType leftType;
- var parent = lhs.parent;
- if (parent is AssignmentExpression && parent.leftHandSide == lhs) {
- leftType = parent.writeType!;
- } else {
- var leftVariableElement = getVariableElement(lhs);
- leftType = (leftVariableElement == null)
- ? lhs.typeOrThrow
- : leftVariableElement.type;
- }
-
- if (!leftType.isVoid && checkForUseOfVoidResult(rhs)) {
- return;
- }
-
- _checkForAssignableExpressionAtType(
- rhs, rhs.typeOrThrow, leftType, CompileTimeErrorCode.INVALID_ASSIGNMENT,
- whyNotPromoted: whyNotPromoted);
- }
-
/// Check for situations where the result of a method or function is used,
/// when it returns 'void'. Or, in rare cases, when other types of expressions
/// are void, such as identifiers.
@@ -284,32 +275,4 @@
whyNotPromoted: whyNotPromoted);
}
}
-
- bool _checkForAssignableExpressionAtType(
- Expression expression,
- DartType actualStaticType,
- DartType expectedStaticType,
- ErrorCode errorCode,
- {Map<DartType, NonPromotionReason> Function()? whyNotPromoted}) {
- if (!typeSystem.isAssignableTo(actualStaticType, expectedStaticType)) {
- AstNode getErrorNode(AstNode node) {
- if (node is CascadeExpression) {
- return getErrorNode(node.target);
- }
- if (node is ParenthesizedExpression) {
- return getErrorNode(node.expression);
- }
- return node;
- }
-
- errorReporter.reportErrorForNode(
- errorCode,
- getErrorNode(expression),
- [actualStaticType, expectedStaticType],
- computeWhyNotPromotedMessages(expression, whyNotPromoted?.call()),
- );
- return false;
- }
- return true;
- }
}
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 9bce035..8703396 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -117,7 +117,7 @@
}
static bool _inFactoryConstructor(Element? element) {
- var enclosing = element?.enclosingElement2;
+ var enclosing = element?.enclosingElement3;
if (enclosing == null) {
return false;
}
@@ -128,7 +128,7 @@
}
static bool _inStaticMethod(Element? element) {
- var enclosing = element?.enclosingElement2;
+ var enclosing = element?.enclosingElement3;
if (enclosing == null) {
return false;
}
@@ -429,7 +429,7 @@
_duplicateDefinitionVerifier.checkClass(node);
if (!element.isDartCoreFunctionImpl) {
_checkForBuiltInIdentifierAsName(
- node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME);
+ node.name2, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME);
}
_checkForConflictingClassTypeVariableErrorCodes();
var superclass = node.extendsClause?.superclass;
@@ -448,7 +448,7 @@
_checkForFinalNotInitializedInClass(members);
_checkForBadFunctionUse(node);
_checkForWrongTypeParameterVarianceInSuperinterfaces();
- _checkForMainFunction(node.name);
+ _checkForMainFunction1(node.name2, node.declaredElement!);
_reportMacroApplicationErrors(
annotations: node.metadata,
macroErrors: element.macroApplicationErrors,
@@ -470,13 +470,13 @@
@override
void visitClassTypeAlias(ClassTypeAlias node) {
_checkForBuiltInIdentifierAsName(
- node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME);
+ node.name2, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME);
var outerClassElement = _enclosingClass;
try {
_enclosingClass = node.declaredElement as ClassElementImpl;
_checkClassInheritance(
node, node.superclass, node.withClause, node.implementsClause);
- _checkForMainFunction(node.name);
+ _checkForMainFunction1(node.name2, node.declaredElement!);
_checkForWrongTypeParameterVarianceInSuperinterfaces();
} finally {
_enclosingClass = outerClassElement;
@@ -543,7 +543,7 @@
_checkForInvalidField(node, fieldName, staticElement);
if (staticElement is FieldElement) {
_checkForAbstractOrExternalFieldConstructorInitializer(
- node.fieldName, staticElement);
+ node.fieldName.token, staticElement);
}
super.visitConstructorFieldInitializer(node);
} finally {
@@ -572,7 +572,16 @@
@override
void visitDefaultFormalParameter(DefaultFormalParameter node) {
- checkForInvalidAssignment(node.identifier, node.defaultValue);
+ final defaultValue = node.defaultValue;
+ if (defaultValue != null) {
+ checkForAssignableExpressionAtType(
+ defaultValue,
+ defaultValue.typeOrThrow,
+ node.declaredElement!.type,
+ CompileTimeErrorCode.INVALID_ASSIGNMENT,
+ );
+ }
+
super.visitDefaultFormalParameter(node);
}
@@ -592,7 +601,7 @@
_duplicateDefinitionVerifier.checkEnum(node);
_checkForBuiltInIdentifierAsName(
- node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME);
+ node.name2, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME);
_checkForConflictingEnumTypeVariableErrorCodes(element);
var implementsClause = node.implementsClause;
var withClause = node.withClause;
@@ -604,7 +613,7 @@
_constructorFieldsVerifier.enterEnum(node, element);
_checkForFinalNotInitializedInClass(node.members);
_checkForWrongTypeParameterVarianceInSuperinterfaces();
- _checkForMainFunction(node.name);
+ _checkForMainFunction1(node.name2, node.declaredElement!);
_checkForEnumInstantiatedToBoundsIsNotWellBounded(node, element);
GetterSetterTypesVerifier(
@@ -655,7 +664,7 @@
errorReporter: errorReporter,
).checkExtension(element);
- final name = node.name;
+ final name = node.name2;
if (name != null) {
_checkForBuiltInIdentifierAsName(
name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_EXTENSION_NAME);
@@ -701,7 +710,7 @@
var fieldElement = element.field;
if (fieldElement != null) {
_checkForAbstractOrExternalFieldConstructorInitializer(
- node.identifier, fieldElement);
+ node.name, fieldElement);
}
}
super.visitFieldFormalParameter(node);
@@ -710,7 +719,7 @@
@override
void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
DeclaredIdentifier loopVariable = node.loopVariable;
- if (_checkForEachParts(node, loopVariable.identifier)) {
+ if (_checkForEachParts(node, loopVariable.declaredElement)) {
if (loopVariable.isConst) {
errorReporter.reportErrorForToken(
CompileTimeErrorCode.FOR_IN_WITH_CONST_VARIABLE,
@@ -723,7 +732,7 @@
@override
void visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
SimpleIdentifier identifier = node.identifier;
- if (_checkForEachParts(node, identifier)) {
+ if (_checkForEachParts(node, identifier.staticElement)) {
_checkForAssignmentToFinal(identifier);
}
super.visitForEachPartsWithIdentifier(node);
@@ -746,23 +755,23 @@
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
ExecutableElement functionElement = node.declaredElement!;
- if (functionElement.enclosingElement2 is! CompilationUnitElement) {
+ if (functionElement.enclosingElement3 is! CompilationUnitElement) {
_hiddenElements!.declare(functionElement);
}
_withEnclosingExecutable(functionElement, () {
- SimpleIdentifier identifier = node.name;
TypeAnnotation? returnType = node.returnType;
if (node.isSetter) {
FunctionExpression functionExpression = node.functionExpression;
_checkForWrongNumberOfParametersForSetter(
- identifier, functionExpression.parameters);
+ node.name2, functionExpression.parameters);
_checkForNonVoidReturnTypeForSetter(returnType);
}
_checkForTypeAnnotationDeferredClass(returnType);
_returnTypeVerifier.verifyReturnType(returnType);
- _checkForImplicitDynamicReturn(node.name, node.declaredElement!);
- _checkForMainFunction(node.name);
+ _checkForImplicitDynamicReturn(node.name2, node.declaredElement!);
+ _checkForMainFunction1(node.name2, node.declaredElement!);
+ _checkForMainFunction2(node);
super.visitFunctionDeclaration(node);
});
}
@@ -807,10 +816,10 @@
@override
void visitFunctionTypeAlias(FunctionTypeAlias node) {
_checkForBuiltInIdentifierAsName(
- node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME);
- _checkForMainFunction(node.name);
+ node.name2, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME);
+ _checkForMainFunction1(node.name2, node.declaredElement!);
_checkForTypeAliasCannotReferenceItself(
- node.name, node.declaredElement as TypeAliasElementImpl);
+ node.name2, node.declaredElement as TypeAliasElementImpl);
super.visitFunctionTypeAlias(node);
}
@@ -828,8 +837,10 @@
DartType parameterType = node.declaredElement!.type;
if (parameterType is FunctionType &&
parameterType.returnType.isDynamic) {
- errorReporter.reportErrorForNode(LanguageCode.IMPLICIT_DYNAMIC_RETURN,
- node.identifier, [node.identifier.name]);
+ errorReporter.reportErrorForToken(
+ LanguageCode.IMPLICIT_DYNAMIC_RETURN,
+ node.name,
+ [node.name.lexeme]);
}
}
@@ -842,10 +853,10 @@
@override
void visitGenericTypeAlias(GenericTypeAlias node) {
_checkForBuiltInIdentifierAsName(
- node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME);
- _checkForMainFunction(node.name);
+ node.name2, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME);
+ _checkForMainFunction1(node.name2, node.declaredElement!);
_checkForTypeAliasCannotReferenceItself(
- node.name, node.declaredElement as TypeAliasElementImpl);
+ node.name2, node.declaredElement as TypeAliasElementImpl);
super.visitGenericTypeAlias(node);
}
@@ -859,7 +870,7 @@
void visitImportDirective(ImportDirective node) {
var importElement = node.element2;
if (node.prefix != null) {
- _checkForBuiltInIdentifierAsName(node.prefix!,
+ _checkForBuiltInIdentifierAsName(node.prefix!.token,
CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_PREFIX_NAME);
}
if (importElement != null) {
@@ -939,7 +950,7 @@
_withEnclosingExecutable(node.declaredElement!, () {
var returnType = node.returnType;
if (node.isSetter) {
- _checkForWrongNumberOfParametersForSetter(node.name, node.parameters);
+ _checkForWrongNumberOfParametersForSetter(node.name2, node.parameters);
_checkForNonVoidReturnTypeForSetter(returnType);
} else if (node.isOperator) {
var hasWrongNumberOfParameters =
@@ -954,7 +965,7 @@
_checkForExtensionDeclaresMemberOfObject(node);
_checkForTypeAnnotationDeferredClass(returnType);
_returnTypeVerifier.verifyReturnType(returnType);
- _checkForImplicitDynamicReturn(node, node.declaredElement!);
+ _checkForImplicitDynamicReturn(node.name2, node.declaredElement!);
_checkForWrongTypeParameterVarianceInMethod(node);
super.visitMethodDeclaration(node);
});
@@ -989,7 +1000,7 @@
List<ClassMember> members = node.members;
_duplicateDefinitionVerifier.checkMixin(node);
_checkForBuiltInIdentifierAsName(
- node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME);
+ node.name2, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME);
_checkForConflictingClassTypeVariableErrorCodes();
var onClause = node.onClause;
@@ -1002,7 +1013,7 @@
_checkForConflictingClassMembers();
_checkForFinalNotInitializedInClass(members);
- _checkForMainFunction(node.name);
+ _checkForMainFunction1(node.name2, node.declaredElement!);
_checkForWrongTypeParameterVarianceInSuperinterfaces();
// _checkForBadFunctionUse(node);
super.visitMixinDeclaration(node);
@@ -1138,7 +1149,8 @@
// - DefaultFormalParameter contains a simple one, so it gets here,
// - FieldFormalParameter error should be reported on the field,
// - FunctionTypedFormalParameter is a function type, not dynamic.
- _checkForImplicitDynamicIdentifier(node, node.identifier);
+ _checkForImplicitDynamicIdentifier(node, node.name,
+ variable: node.declaredElement!);
super.visitSimpleFormalParameter(node);
}
@@ -1196,23 +1208,23 @@
var superParameter = element.superConstructorParameter;
if (superParameter == null) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
node.isNamed
? CompileTimeErrorCode
.SUPER_FORMAL_PARAMETER_WITHOUT_ASSOCIATED_NAMED
: CompileTimeErrorCode
.SUPER_FORMAL_PARAMETER_WITHOUT_ASSOCIATED_POSITIONAL,
- node.identifier,
+ node.name,
);
return;
}
if (!_currentLibrary.typeSystem
.isSubtypeOf(element.type, superParameter.type)) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode
.SUPER_FORMAL_PARAMETER_TYPE_IS_NOT_SUBTYPE_OF_ASSOCIATED,
- node.identifier,
+ node.name,
[element.type, superParameter.type],
);
}
@@ -1261,8 +1273,8 @@
_checkForFinalNotInitialized(node.variables);
_checkForNotInitializedNonNullableVariable(node.variables, true);
- for (var declaration in node.variables.variables) {
- _checkForMainFunction(declaration.name);
+ for (var variable in node.variables.variables) {
+ _checkForMainFunction1(variable.name2, variable.declaredElement!);
}
super.visitTopLevelVariableDeclaration(node);
@@ -1279,7 +1291,7 @@
@override
void visitTypeParameter(TypeParameter node) {
- _checkForBuiltInIdentifierAsName(node.name,
+ _checkForBuiltInIdentifierAsName(node.name2,
CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME);
_checkForTypeAnnotationDeferredClass(node.bound);
_checkForImplicitDynamicType(node.bound);
@@ -1297,15 +1309,14 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
- SimpleIdentifier nameNode = node.name;
+ final nameToken = node.name2;
var initializerNode = node.initializer;
// do checks
- _checkForImplicitDynamicIdentifier(node, nameNode);
+ _checkForImplicitDynamicIdentifier(node, nameToken,
+ variable: node.declaredElement!);
_checkForAbstractOrExternalVariableInitializer(node);
- // visit name
- nameNode.accept(this);
// visit initializer
- String name = nameNode.name;
+ String name = nameToken.lexeme;
_namesForReferenceToDeclaredVariableInInitializer.add(name);
try {
if (initializerNode != null) {
@@ -1393,14 +1404,16 @@
}
void _checkForAbstractOrExternalFieldConstructorInitializer(
- AstNode node, FieldElement fieldElement) {
+ Token identifier, FieldElement fieldElement) {
if (fieldElement.isAbstract) {
- errorReporter.reportErrorForNode(
- CompileTimeErrorCode.ABSTRACT_FIELD_CONSTRUCTOR_INITIALIZER, node);
+ errorReporter.reportErrorForToken(
+ CompileTimeErrorCode.ABSTRACT_FIELD_CONSTRUCTOR_INITIALIZER,
+ identifier);
}
if (fieldElement.isExternal) {
- errorReporter.reportErrorForNode(
- CompileTimeErrorCode.EXTERNAL_FIELD_CONSTRUCTOR_INITIALIZER, node);
+ errorReporter.reportErrorForToken(
+ CompileTimeErrorCode.EXTERNAL_FIELD_CONSTRUCTOR_INITIALIZER,
+ identifier);
}
}
@@ -1410,17 +1423,17 @@
if (node.initializer != null) {
if (declaredElement is FieldElement) {
if (declaredElement.isAbstract) {
- errorReporter.reportErrorForNode(
- CompileTimeErrorCode.ABSTRACT_FIELD_INITIALIZER, node.name);
+ errorReporter.reportErrorForToken(
+ CompileTimeErrorCode.ABSTRACT_FIELD_INITIALIZER, node.name2);
}
if (declaredElement.isExternal) {
- errorReporter.reportErrorForNode(
- CompileTimeErrorCode.EXTERNAL_FIELD_INITIALIZER, node.name);
+ errorReporter.reportErrorForToken(
+ CompileTimeErrorCode.EXTERNAL_FIELD_INITIALIZER, node.name2);
}
} else if (declaredElement is TopLevelVariableElement) {
if (declaredElement.isExternal) {
- errorReporter.reportErrorForNode(
- CompileTimeErrorCode.EXTERNAL_VARIABLE_INITIALIZER, node.name);
+ errorReporter.reportErrorForToken(
+ CompileTimeErrorCode.EXTERNAL_VARIABLE_INITIALIZER, node.name2);
}
}
}
@@ -1624,7 +1637,7 @@
errorReporter.reportErrorForNode(
CompileTimeErrorCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
highlightedNode,
- [variable.name, variable.enclosingElement2.displayName],
+ [variable.name, variable.enclosingElement3.displayName],
);
} else {
errorReporter.reportErrorForNode(
@@ -1695,19 +1708,16 @@
}
}
- /// Verify that the given [identifier] is not a keyword, and generates the
+ /// Verify that the given [token] is not a keyword, and generates the
/// given [errorCode] on the identifier if it is a keyword.
///
/// See [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_EXTENSION_NAME],
/// [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME],
/// [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME], and
/// [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME].
- void _checkForBuiltInIdentifierAsName(
- SimpleIdentifier identifier, ErrorCode errorCode) {
- Token token = identifier.token;
+ void _checkForBuiltInIdentifierAsName(Token token, ErrorCode errorCode) {
if (token.type.isKeyword && token.keyword?.isPseudo != true) {
- errorReporter
- .reportErrorForNode(errorCode, identifier, [identifier.name]);
+ errorReporter.reportErrorForToken(errorCode, token, [token.lexeme]);
}
}
@@ -1797,14 +1807,14 @@
CompileTimeErrorCode.CONFLICTING_STATIC_AND_INSTANCE, method, [
_enclosingClass!.displayName,
name,
- inherited.enclosingElement2.displayName,
+ inherited.enclosingElement3.displayName,
]);
} else if (inherited is PropertyAccessorElement) {
errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_METHOD_AND_FIELD, method, [
_enclosingClass!.displayName,
name,
- inherited.enclosingElement2.displayName
+ inherited.enclosingElement3.displayName
]);
}
}
@@ -1824,14 +1834,14 @@
CompileTimeErrorCode.CONFLICTING_STATIC_AND_INSTANCE, accessor, [
_enclosingClass!.displayName,
name,
- inherited.enclosingElement2.displayName,
+ inherited.enclosingElement3.displayName,
]);
} else if (inherited is MethodElement) {
errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_FIELD_AND_METHOD, accessor, [
_enclosingClass!.displayName,
name,
- inherited.enclosingElement2.displayName
+ inherited.enclosingElement3.displayName
]);
}
}
@@ -1923,9 +1933,9 @@
for (var error in errors) {
if (error is IncompatibleInterfacesClassHierarchyError) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES,
- node.name,
+ node.name2,
[
_enclosingClass!.name,
error.first.getDisplayString(withNullability: true),
@@ -2089,11 +2099,11 @@
errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD,
constructor.returnType,
- ["'${field.enclosingElement2.name}.${field.name}'"]);
+ ["'${field.enclosingElement3.name}.${field.name}'"]);
return true;
} else if (instanceFields.length > 1) {
var fieldNames = instanceFields
- .map((field) => "'${field.enclosingElement2.name}.${field.name}'")
+ .map((field) => "'${field.enclosingElement3.name}.${field.name}'")
.join(', ');
errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELDS,
@@ -2117,7 +2127,7 @@
errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER,
initializer,
- [element.enclosingElement2.displayName]);
+ [element.enclosingElement3.displayName]);
return true;
}
}
@@ -2155,8 +2165,8 @@
return;
}
// check if there is non-final field
- ClassElement classElement = constructorElement.enclosingElement2;
- if (!classElement.hasNonFinalField) {
+ final classElement = constructorElement.enclosingElement3;
+ if (classElement is ClassElement && !classElement.hasNonFinalField) {
return;
}
errorReporter.reportErrorForName(
@@ -2346,7 +2356,7 @@
/// Return `true` if the caller should continue checking the rest of the
/// information in the for-each part.
- bool _checkForEachParts(ForEachParts node, SimpleIdentifier variable) {
+ bool _checkForEachParts(ForEachParts node, Element? variableElement) {
if (checkForUseOfVoidResult(node.iterable)) {
return false;
}
@@ -2382,7 +2392,6 @@
// The type of the loop variable.
DartType variableType;
- var variableElement = variable.staticElement;
if (variableElement is VariableElement) {
variableType = variableElement.type;
} else {
@@ -2485,9 +2494,9 @@
allowSuperBounded: true,
);
if (isWellBounded is NotWellBoundedTypeResult) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.ENUM_INSTANTIATED_TO_BOUNDS_IS_NOT_WELL_BOUNDED,
- node.name,
+ node.name2,
);
}
}
@@ -2630,15 +2639,15 @@
void _checkForExtensionDeclaresMemberOfObject(MethodDeclaration node) {
if (_enclosingExtension == null) return;
- var name = node.name.name;
+ var name = node.name2.lexeme;
if (name == '==' ||
name == 'hashCode' ||
name == 'toString' ||
name == 'runtimeType' ||
name == FunctionElement.NO_SUCH_METHOD_METHOD_NAME) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.EXTENSION_DECLARES_MEMBER_OF_OBJECT,
- node.name,
+ node.name2,
);
}
}
@@ -2705,10 +2714,10 @@
for (VariableDeclaration variable in variables) {
if (variable.initializer == null) {
if (isConst) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.CONST_NOT_INITIALIZED,
- variable.name,
- [variable.name.name]);
+ variable.name2,
+ [variable.name2.lexeme]);
} else {
var variableElement = variable.declaredElement;
if (variableElement is FieldElement &&
@@ -2718,10 +2727,10 @@
variableElement.isExternal) {
// External top level variables can't be initialized, so no error.
} else if (!_isNonNullableByDefault || !variable.isLate) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.FINAL_NOT_INITIALIZED,
- variable.name,
- [variable.name.name]);
+ variable.name2,
+ [variable.name2.lexeme]);
}
}
}
@@ -2819,14 +2828,18 @@
return foundError;
}
- void _checkForImplicitDynamicIdentifier(AstNode node, Identifier? id) {
+ void _checkForImplicitDynamicIdentifier(
+ AstNode node,
+ Token? id, {
+ required VariableElement variable,
+ }) {
+ if (id == null) {
+ return;
+ }
if (_options.implicitDynamic) {
return;
}
- var variable = getVariableElement(id);
- if (variable != null &&
- variable.hasImplicitType &&
- variable.type.isDynamic) {
+ if (variable.hasImplicitType && variable.type.isDynamic) {
ErrorCode errorCode;
if (variable is FieldElement) {
errorCode = LanguageCode.IMPLICIT_DYNAMIC_FIELD;
@@ -2837,12 +2850,12 @@
}
// Parameters associated with a variable always have a name, so we can
// safely rely on [id] being non-`null`.
- errorReporter.reportErrorForNode(errorCode, node, [id!.toSource()]);
+ errorReporter.reportErrorForNode(errorCode, node, [id.lexeme]);
}
}
void _checkForImplicitDynamicReturn(
- AstNode functionName, ExecutableElement element) {
+ Token functionName, ExecutableElement element) {
if (_options.implicitDynamic) {
return;
}
@@ -2850,7 +2863,7 @@
return;
}
if (element.hasImplicitReturnType && element.returnType.isDynamic) {
- errorReporter.reportErrorForNode(LanguageCode.IMPLICIT_DYNAMIC_RETURN,
+ errorReporter.reportErrorForToken(LanguageCode.IMPLICIT_DYNAMIC_RETURN,
functionName, [element.displayName]);
}
}
@@ -2921,7 +2934,7 @@
// OK, instance member
return;
}
- Element enclosingElement = element.enclosingElement2;
+ Element enclosingElement = element.enclosingElement3;
if (enclosingElement is ExtensionElement) {
if (target is ExtensionOverride) {
// OK, target is an extension override
@@ -3003,7 +3016,7 @@
var constructorElement = node.staticElement;
if (constructorElement != null &&
constructorElement.isGenerative &&
- constructorElement.enclosingElement2.isEnum) {
+ constructorElement.enclosingElement3 is EnumElement) {
if (_currentLibrary.featureSet.isEnabled(Feature.enhanced_enums)) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.INVALID_REFERENCE_TO_GENERATIVE_ENUM_CONSTRUCTOR,
@@ -3046,7 +3059,7 @@
return;
}
// not a class member
- Element enclosingElement = element.enclosingElement2;
+ Element enclosingElement = element.enclosingElement3;
if (enclosingElement is! ClassElement &&
enclosingElement is! ExtensionElement) {
return;
@@ -3174,48 +3187,62 @@
}
}
- void _checkForMainFunction(SimpleIdentifier nameNode) {
+ void _checkForMainFunction1(Token nameToken, Element declaredElement) {
if (!_currentLibrary.isNonNullableByDefault) {
return;
}
- var element = nameNode.staticElement!;
-
// We should only check exported declarations, i.e. top-level.
- if (element.enclosingElement2 is! CompilationUnitElement) {
+ if (declaredElement.enclosingElement3 is! CompilationUnitElement) {
return;
}
- if (element.displayName != 'main') {
+ if (declaredElement.displayName != 'main') {
return;
}
- if (element is! FunctionElement) {
- errorReporter.reportErrorForNode(
+ if (declaredElement is! FunctionElement) {
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.MAIN_IS_NOT_FUNCTION,
- nameNode,
+ nameToken,
);
+ }
+ }
+
+ void _checkForMainFunction2(FunctionDeclaration functionDeclaration) {
+ if (!_currentLibrary.isNonNullableByDefault) {
return;
}
- var functionDeclaration = nameNode.parent as FunctionDeclaration;
- var functionExpression = functionDeclaration.functionExpression;
- var parameters = functionExpression.parameters!.parameters;
+ if (functionDeclaration.name2.lexeme != 'main') {
+ return;
+ }
+
+ if (functionDeclaration.parent is! CompilationUnit) {
+ return;
+ }
+
+ final parameterList = functionDeclaration.functionExpression.parameters;
+ if (parameterList == null) {
+ return;
+ }
+
+ var parameters = parameterList.parameters;
var positional = parameters.where((e) => e.isPositional).toList();
var requiredPositional =
parameters.where((e) => e.isRequiredPositional).toList();
if (requiredPositional.length > 2) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS,
- nameNode,
+ functionDeclaration.name2,
);
}
if (parameters.any((e) => e.isRequiredNamed)) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.MAIN_HAS_REQUIRED_NAMED_PARAMETERS,
- nameNode,
+ functionDeclaration.name2,
);
}
@@ -3496,14 +3523,14 @@
);
if (inheritedMember != null) {
// Inherited members are always contained inside named elements, so we
- // can safely assume `inheritedMember.enclosingElement2.name` is
+ // can safely assume `inheritedMember.enclosingElement3.name` is
// non-`null`.
errorReporter.reportErrorForNode(
CompileTimeErrorCode.PRIVATE_COLLISION_IN_MIXIN_APPLICATION,
namedType, [
name,
namedType.name.name,
- inheritedMember.enclosingElement2.name!
+ inheritedMember.enclosingElement3.name!
]);
return true;
}
@@ -3613,9 +3640,9 @@
: superUnnamedConstructor;
if (superUnnamedConstructor != null) {
if (superUnnamedConstructor.isFactory) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.NON_GENERATIVE_IMPLICIT_CONSTRUCTOR,
- declaration.name, [
+ declaration.name2, [
superElement.name,
_enclosingClass!.name,
superUnnamedConstructor
@@ -3630,9 +3657,9 @@
if (!_typeProvider.isNonSubtypableClass(superType.element)) {
// Don't report this diagnostic for non-subtypable classes because the
// real problem was already reported.
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT,
- declaration.name,
+ declaration.name2,
[superType, _enclosingClass!.displayName]);
}
}
@@ -3718,9 +3745,9 @@
return;
}
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.NON_FINAL_FIELD_IN_ENUM,
- variableList.variables.first.name,
+ variableList.variables.first.name2,
);
}
@@ -3730,8 +3757,7 @@
/// See [CompileTimeErrorCode.NON_VOID_RETURN_FOR_OPERATOR].
void _checkForNonVoidReturnTypeForOperator(MethodDeclaration declaration) {
// check that []= operator
- SimpleIdentifier name = declaration.name;
- if (name.name != "[]=") {
+ if (declaration.name2.lexeme != "[]=") {
return;
}
// check return type
@@ -3784,7 +3810,7 @@
errorReporter.reportErrorForNode(
CompileTimeErrorCode.NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD,
field,
- [field.name.name],
+ [field.name2.lexeme],
);
}
}
@@ -3835,10 +3861,10 @@
for (var variable in node.variables) {
if (variable.initializer == null) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.NOT_INITIALIZED_NON_NULLABLE_VARIABLE,
- variable.name,
- [variable.name.name],
+ variable.name2,
+ [variable.name2.lexeme],
);
}
}
@@ -3952,12 +3978,12 @@
return;
}
// name should start with '_'
- var name = parameter.identifier;
- if (name == null || name.isSynthetic || !name.name.startsWith('_')) {
+ var name = parameter.name;
+ if (name == null || name.isSynthetic || !name.lexeme.startsWith('_')) {
return;
}
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER, name);
}
@@ -4020,10 +4046,10 @@
for (FormalParameter parameter in declaration.parameters.parameters) {
if (parameter is DefaultFormalParameter &&
parameter.defaultValue != null) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode
.DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR,
- parameter.identifier!);
+ parameter.name!);
}
}
var redirectedElement = redirectedConstructor.staticElement;
@@ -4032,15 +4058,15 @@
redirectedElement,
redirectedConstructor,
);
- var redirectedClass = redirectedElement?.enclosingElement2;
+ var redirectedClass = redirectedElement?.enclosingElement3;
if (redirectedClass is ClassElement &&
redirectedClass.isAbstract &&
redirectedElement != null &&
!redirectedElement.isFactory) {
String enclosingNamedType = _enclosingClass!.displayName;
String constructorStrName = enclosingNamedType;
- if (declaration.name != null) {
- constructorStrName += ".${declaration.name!.name}";
+ if (declaration.name2 != null) {
+ constructorStrName += ".${declaration.name2!.lexeme}";
}
errorReporter.reportErrorForNode(
CompileTimeErrorCode.REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR,
@@ -4258,13 +4284,13 @@
///
/// See [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF].
void _checkForTypeAliasCannotReferenceItself(
- SimpleIdentifier nameNode,
+ Token nameToken,
TypeAliasElementImpl element,
) {
if (element.hasSelfReference) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF,
- nameNode,
+ nameToken,
);
}
}
@@ -4307,9 +4333,9 @@
var element = parameter.declaredElement!;
// This error can only occur if there is a bound, so we can saefly
// assume `element.bound` is non-`null`.
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND,
- parameter.name,
+ parameter.name2,
[element.displayName, element.bound!],
);
break;
@@ -4323,7 +4349,7 @@
if (_enclosingExecutable.inStaticMethod || _isInStaticVariableDeclaration) {
var element = identifier.staticElement;
if (element is TypeParameterElement &&
- element.enclosingElement2 is ClassElement) {
+ element.enclosingElement3 is ClassElement) {
// The class's type parameters are not in scope for static methods.
// However all other type parameters are legal (e.g. the static method's
// type parameters, or a local function's type parameters).
@@ -4414,7 +4440,7 @@
void reportError(ErrorCode errorCode, List<Object> arguments) {
Identifier returnType = constructor.returnType;
- var name = constructor.name;
+ var name = constructor.name2;
int offset = returnType.offset;
int length = (name != null ? name.end : returnType.end) - offset;
errorReporter.reportErrorForOffset(errorCode, offset, length, arguments);
@@ -4565,7 +4591,7 @@
if (element == null || element is TypeParameterElement) {
return;
}
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (identical(enclosingElement, _enclosingClass)) {
return;
}
@@ -4607,7 +4633,7 @@
errorReporter.reportErrorForNode(
CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD,
parameter,
- [parameter.identifier.name]);
+ [parameter.name.lexeme]);
} else {
var parameterElement = parameter.declaredElement!;
if (parameterElement is FieldFormalParameterElementImpl) {
@@ -4617,12 +4643,12 @@
errorReporter.reportErrorForNode(
CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD,
parameter,
- [parameter.identifier.name]);
+ [parameter.name.lexeme]);
} else if (fieldElement.isStatic) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.INITIALIZER_FOR_STATIC_FIELD,
parameter,
- [parameter.identifier.name]);
+ [parameter.name.lexeme]);
} else if (!typeSystem.isSubtypeOf(declaredType, fieldType)) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE,
@@ -4634,12 +4660,12 @@
errorReporter.reportErrorForNode(
CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD,
parameter,
- [parameter.identifier.name]);
+ [parameter.name.lexeme]);
} else if (fieldElement.isStatic) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.INITIALIZER_FOR_STATIC_FIELD,
parameter,
- [parameter.identifier.name]);
+ [parameter.name.lexeme]);
}
}
}
@@ -4666,8 +4692,8 @@
}
int numParameters = parameterList.parameters.length;
// prepare operator name
- SimpleIdentifier nameNode = declaration.name;
- String name = nameNode.name;
+ final nameToken = declaration.name2;
+ final name = nameToken.lexeme;
// check for exact number of parameters
int expected = -1;
if ("[]=" == name) {
@@ -4694,15 +4720,15 @@
expected = 0;
}
if (expected != -1 && numParameters != expected) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR,
- nameNode,
+ nameToken,
[name, expected, numParameters]);
return true;
} else if ("-" == name && numParameters > 1) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS,
- nameNode,
+ nameToken,
[numParameters]);
return true;
}
@@ -4718,14 +4744,14 @@
///
/// See [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER].
void _checkForWrongNumberOfParametersForSetter(
- SimpleIdentifier setterName, FormalParameterList? parameterList) {
+ Token setterName, FormalParameterList? parameterList) {
if (parameterList == null) {
return;
}
NodeList<FormalParameter> parameters = parameterList.parameters;
if (parameters.length != 1 || !parameters[0].isRequiredPositional) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER,
setterName);
}
@@ -4739,7 +4765,7 @@
if (!(typeParameter as TypeParameterElementImpl).isLegacyCovariant) {
var fields = node.fields;
var fieldElement = fields.variables.first.declaredElement!;
- var fieldName = fields.variables.first.name;
+ var fieldName = fields.variables.first.name2;
Variance fieldVariance = Variance(typeParameter, fieldElement.type);
_checkForWrongVariancePosition(
@@ -4872,14 +4898,15 @@
///
/// Errors should only be reported in classes and mixins since those are the
/// only components that allow explicit variance modifiers.
- void _checkForWrongVariancePosition(
- Variance variance, TypeParameterElement typeParameter, AstNode node) {
+ void _checkForWrongVariancePosition(Variance variance,
+ TypeParameterElement typeParameter, SyntacticEntity errorTarget) {
TypeParameterElementImpl typeParameterImpl =
typeParameter as TypeParameterElementImpl;
if (!variance.greaterThanOrEqual(typeParameterImpl.variance)) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForOffset(
CompileTimeErrorCode.WRONG_TYPE_PARAMETER_VARIANCE_POSITION,
- node,
+ errorTarget.offset,
+ errorTarget.length,
[
typeParameterImpl.variance.toKeywordString(),
typeParameterImpl.name,
@@ -5040,10 +5067,11 @@
if (parameter is DefaultFormalParameter) {
if (parameter.isRequiredNamed) {
if (parameter.defaultValue != null) {
- var parameterName = _parameterName(parameter);
- errorReporter.reportErrorForNode(
+ final errorTarget = _parameterName(parameter) ?? parameter;
+ errorReporter.reportErrorForOffset(
CompileTimeErrorCode.DEFAULT_VALUE_ON_REQUIRED_PARAMETER,
- parameterName ?? parameter,
+ errorTarget.offset,
+ errorTarget.length,
);
}
} else if (defaultValuesAreExpected) {
@@ -5051,18 +5079,21 @@
if (!parameterElement.hasDefaultValue) {
var type = parameterElement.type;
if (typeSystem.isPotentiallyNonNullable(type)) {
- var parameterName = _parameterName(parameter);
+ final parameterName = _parameterName(parameter);
+ final errorTarget = parameterName ?? parameter;
if (parameterElement.hasRequired) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForOffset(
CompileTimeErrorCode
.MISSING_DEFAULT_VALUE_FOR_PARAMETER_WITH_ANNOTATION,
- parameterName ?? parameter,
+ errorTarget.offset,
+ errorTarget.length,
);
} else {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForOffset(
CompileTimeErrorCode.MISSING_DEFAULT_VALUE_FOR_PARAMETER,
- parameterName ?? parameter,
- [parameterName?.name ?? '?'],
+ errorTarget.offset,
+ errorTarget.length,
+ [parameterName?.lexeme ?? '?'],
);
}
}
@@ -5181,11 +5212,11 @@
/// Return the name of the [parameter], or `null` if the parameter does not
/// have a name.
- SimpleIdentifier? _parameterName(FormalParameter parameter) {
+ Token? _parameterName(FormalParameter parameter) {
if (parameter is NormalFormalParameter) {
- return parameter.identifier;
+ return parameter.name;
} else if (parameter is DefaultFormalParameter) {
- return parameter.parameter.identifier;
+ return parameter.parameter.name;
}
return null;
}
@@ -5260,8 +5291,8 @@
parameter = parameter.parameter;
}
if (parameter is FieldFormalParameter) {
- FieldFormalParameterElement element =
- parameter.identifier.staticElement as FieldFormalParameterElement;
+ final element =
+ parameter.declaredElement as FieldFormalParameterElement;
fields.remove(element.field);
}
}
diff --git a/pkg/analyzer/lib/src/generated/ffi_verifier.dart b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
index 57d16b5..8750f1f 100644
--- a/pkg/analyzer/lib/src/generated/ffi_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
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/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -86,8 +87,8 @@
inCompound = true;
compound = node;
if (node.declaredElement!.isEmptyStruct) {
- _errorReporter.reportErrorForNode(
- FfiCode.EMPTY_STRUCT, node.name, [node.name.name, className]);
+ _errorReporter.reportErrorForToken(FfiCode.EMPTY_STRUCT, node.name2,
+ [node.name2.lexeme, className]);
}
if (className == _structClassName) {
_validatePackedAnnotation(node.metadata);
@@ -95,21 +96,21 @@
} else if (className == _abiSpecificIntegerClassName) {
_validateAbiSpecificIntegerAnnotation(node);
_validateAbiSpecificIntegerMappingAnnotation(
- node.name, node.metadata);
+ node.name2, node.metadata);
} else if (className != _allocatorClassName &&
className != _opaqueClassName &&
className != _abiSpecificIntegerClassName) {
_errorReporter.reportErrorForNode(
FfiCode.SUBTYPE_OF_FFI_CLASS_IN_EXTENDS,
superclass.name,
- [node.name.name, superclass.name.name]);
+ [node.name2.lexeme, superclass.name.name]);
}
} else if (superclass.isCompoundSubtype ||
superclass.isAbiSpecificIntegerSubtype) {
_errorReporter.reportErrorForNode(
FfiCode.SUBTYPE_OF_STRUCT_CLASS_IN_EXTENDS,
superclass,
- [node.name.name, superclass.name.name]);
+ [node.name2.lexeme, superclass.name.name]);
}
}
@@ -123,11 +124,11 @@
}
if (typename.ffiClass != null) {
_errorReporter.reportErrorForNode(subtypeOfFfiCode, typename,
- [node.name.name, typename.name.toSource()]);
+ [node.name2.lexeme, typename.name.toSource()]);
} else if (typename.isCompoundSubtype ||
typename.isAbiSpecificIntegerSubtype) {
_errorReporter.reportErrorForNode(subtypeOfStructCode, typename,
- [node.name.name, typename.name.toSource()]);
+ [node.name2.lexeme, typename.name.toSource()]);
}
}
@@ -148,8 +149,8 @@
if (inCompound) {
if (node.declaredElement!.typeParameters.isNotEmpty) {
- _errorReporter.reportErrorForNode(
- FfiCode.GENERIC_STRUCT_SUBCLASS, node.name, [node.name.name]);
+ _errorReporter.reportErrorForToken(
+ FfiCode.GENERIC_STRUCT_SUBCLASS, node.name2, [node.name2.lexeme]);
}
final implementsClause = node.implementsClause;
if (implementsClause != null) {
@@ -159,10 +160,10 @@
final finalizableElement = ffiLibrary.getType(_finalizableClassName)!;
final finalizableType = finalizableElement.thisType;
if (typeSystem.isSubtypeOf(compoundType, finalizableType)) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
FfiCode.COMPOUND_IMPLEMENTS_FINALIZABLE,
- node.name,
- [node.name.name]);
+ node.name2,
+ [node.name2.lexeme]);
}
}
}
@@ -203,7 +204,7 @@
void visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
var element = node.staticElement;
if (element is MethodElement) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement.isAllocatorExtension &&
element.name == _allocateExtensionMethodName) {
_validateAllocate(node);
@@ -216,7 +217,7 @@
void visitIndexExpression(IndexExpression node) {
var element = node.staticElement;
if (element is MethodElement) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement.isNativeStructPointerExtension ||
enclosingElement.isNativeStructArrayExtension) {
if (element.name == '[]') {
@@ -229,7 +230,7 @@
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
var constructor = node.constructorName.staticElement;
- var class_ = constructor?.enclosingElement2;
+ var class_ = constructor?.enclosingElement3;
if (class_.isStructSubclass || class_.isUnionSubclass) {
_errorReporter.reportErrorForNode(
FfiCode.CREATION_OF_STRUCT_OR_UNION,
@@ -254,7 +255,7 @@
void visitMethodInvocation(MethodInvocation node) {
var element = node.methodName.staticElement;
if (element is MethodElement) {
- Element enclosingElement = element.enclosingElement2;
+ Element enclosingElement = element.enclosingElement3;
if (enclosingElement.isPointer) {
if (element.name == 'fromFunction') {
_validateFromFunction(node, element);
@@ -271,7 +272,7 @@
}
}
} else if (element is FunctionElement) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is CompilationUnitElement) {
if (element.library.name == 'dart.ffi') {
if (element.name == 'sizeOf') {
@@ -287,7 +288,7 @@
void visitPrefixedIdentifier(PrefixedIdentifier node) {
var element = node.staticElement;
if (element != null) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement.isNativeStructPointerExtension) {
if (element.name == 'ref') {
_validateRefPrefixedIdentifier(node);
@@ -301,7 +302,7 @@
void visitPropertyAccess(PropertyAccess node) {
var element = node.propertyName.staticElement;
if (element != null) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement.isNativeStructPointerExtension) {
if (element.name == 'ref') {
_validateRefPropertyAccess(node);
@@ -360,7 +361,7 @@
// Receiver can only be Pointer if the class extends
// NativeFieldWrapperClass1.
if (ffiSignature.normalParameterTypes[0].isPointer) {
- final cls = declarationElement.enclosingElement2 as ClassElement;
+ final cls = declarationElement.enclosingElement3 as ClassElement;
if (!_extendsNativeFieldWrapperClass1(cls.thisType)) {
_errorReporter.reportErrorForNode(
FfiCode
@@ -611,7 +612,7 @@
_PrimitiveDartType _typeForAnnotation(Annotation annotation) {
var element = annotation.element;
if (element is ConstructorElement) {
- String name = element.enclosingElement2.name;
+ String name = element.enclosingElement3.name;
if (_primitiveIntegerNativeTypes.contains(name)) {
return _PrimitiveDartType.int;
} else if (_primitiveDoubleNativeTypes.contains(name)) {
@@ -631,21 +632,21 @@
node.members.length != 1 ||
node.members.single is! ConstructorDeclaration ||
(node.members.single as ConstructorDeclaration).constKeyword == null) {
- _errorReporter.reportErrorForNode(
- FfiCode.ABI_SPECIFIC_INTEGER_INVALID, node.name);
+ _errorReporter.reportErrorForToken(
+ FfiCode.ABI_SPECIFIC_INTEGER_INVALID, node.name2);
}
}
/// Validate that the [annotations] include at most one mapping annotation.
void _validateAbiSpecificIntegerMappingAnnotation(
- AstNode errorNode, NodeList<Annotation> annotations) {
+ Token errorToken, NodeList<Annotation> annotations) {
final ffiPackedAnnotations = annotations
.where((annotation) => annotation.isAbiSpecificIntegerMapping)
.toList();
if (ffiPackedAnnotations.isEmpty) {
- _errorReporter.reportErrorForNode(
- FfiCode.ABI_SPECIFIC_INTEGER_MAPPING_MISSING, errorNode);
+ _errorReporter.reportErrorForToken(
+ FfiCode.ABI_SPECIFIC_INTEGER_MAPPING_MISSING, errorToken);
return;
}
@@ -724,7 +725,7 @@
List<Annotation> extraAnnotations = [];
for (Annotation annotation in annotations) {
if (annotation.element.ffiClass != null ||
- annotation.element?.enclosingElement2.isAbiSpecificIntegerSubclass ==
+ annotation.element?.enclosingElement3.isAbiSpecificIntegerSubclass ==
true) {
if (requiredFound) {
extraAnnotations.add(annotation);
@@ -963,17 +964,17 @@
if (typeSystem.isNonNullableByDefault) {
if (node.externalKeyword == null) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
FfiCode.FIELD_MUST_BE_EXTERNAL_IN_STRUCT,
- fields.variables[0].name,
+ fields.variables[0].name2,
);
}
}
var fieldType = fields.type;
if (fieldType == null) {
- _errorReporter.reportErrorForNode(
- FfiCode.MISSING_FIELD_TYPE_IN_STRUCT, fields.variables[0].name);
+ _errorReporter.reportErrorForToken(
+ FfiCode.MISSING_FIELD_TYPE_IN_STRUCT, fields.variables[0].name2);
} else {
DartType declaredType = fieldType.typeOrThrow;
if (declaredType.isDartCoreInt) {
@@ -1016,9 +1017,9 @@
if (!typeSystem.isNonNullableByDefault) {
for (VariableDeclaration field in fields.variables) {
if (field.initializer != null) {
- _errorReporter.reportErrorForNode(
+ _errorReporter.reportErrorForToken(
FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER,
- field.name,
+ field.name2,
);
}
}
@@ -1299,7 +1300,7 @@
final element = this.element;
return element is ConstructorElement &&
element.ffiClass != null &&
- element.enclosingElement2.name ==
+ element.enclosingElement3.name ==
FfiVerifier._abiSpecificIntegerMappingClassName;
}
@@ -1307,21 +1308,21 @@
final element = this.element;
return element is ConstructorElement &&
element.ffiClass != null &&
- element.enclosingElement2.name == 'Array';
+ element.enclosingElement3.name == 'Array';
}
bool get isFfiNative {
final element = this.element;
return element is ConstructorElement &&
element.ffiClass != null &&
- element.enclosingElement2.name == 'FfiNative';
+ element.enclosingElement3.name == 'FfiNative';
}
bool get isPacked {
final element = this.element;
return element is ConstructorElement &&
element.ffiClass != null &&
- element.enclosingElement2.name == 'Packed';
+ element.enclosingElement3.name == 'Packed';
}
}
@@ -1365,7 +1366,7 @@
final element = this.element;
return element is ConstructorElement &&
element.ffiClass != null &&
- element.enclosingElement2.name == 'Array';
+ element.enclosingElement3.name == 'Array';
// Note: this is 'Array' instead of '_ArraySize' because it finds the
// forwarding factory instead of the forwarded constructor.
}
@@ -1374,7 +1375,7 @@
final element = this.element;
return element is ConstructorElement &&
element.ffiClass != null &&
- element.enclosingElement2.name == 'Packed';
+ element.enclosingElement3.name == 'Packed';
}
int? get packedMemberAlignment {
@@ -1389,7 +1390,7 @@
ClassElement? get ffiClass {
var element = this;
if (element is ConstructorElement) {
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
if (element is ClassElement && element.isFfiClass) {
return element;
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 9123552..ce5307a 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -431,7 +431,7 @@
void checkForBodyMayCompleteNormally({
required FunctionBody body,
- required AstNode errorNode,
+ required SyntacticEntity errorNode,
}) {
if (!_isNonNullableByDefault) return;
if (!flowAnalysis.flow!.isReachable) {
@@ -499,8 +499,8 @@
errorNode.block.leftBracket,
[returnType],
);
- } else {
- errorReporter.reportErrorForNode(
+ } else if (errorNode is Token) {
+ errorReporter.reportErrorForToken(
errorCode,
errorNode,
[returnType],
@@ -1249,7 +1249,6 @@
node.documentationComment?.accept(this);
node.metadata.accept(this);
node.returnType.accept(this);
- node.name?.accept(this);
node.parameters.accept(this);
node.initializers.accept(this);
node.redirectedConstructor?.accept(this);
@@ -1409,9 +1408,12 @@
if (constructorElement != null) {
node.constructorElement = constructorElement;
if (!constructorElement.isConst && constructorElement.isFactory) {
- errorReporter.reportErrorForNode(
+ final errorTarget =
+ node.arguments?.constructorSelector?.name ?? node.name2;
+ errorReporter.reportErrorForOffset(
CompileTimeErrorCode.ENUM_CONSTANT_WITH_NON_CONST_CONSTRUCTOR,
- node.arguments?.constructorSelector?.name ?? node.name,
+ errorTarget.offset,
+ errorTarget.length,
);
}
} else {
@@ -1425,9 +1427,9 @@
[nameNode.name],
);
} else {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.UNDEFINED_ENUM_CONSTRUCTOR_UNNAMED,
- node.name,
+ node.name2,
);
}
}
@@ -1457,9 +1459,9 @@
.where((e) => e.isRequiredPositional)
.length;
if (requiredParameterCount != 0) {
- errorReporter.reportErrorForNode(
+ errorReporter.reportErrorForToken(
CompileTimeErrorCode.NOT_ENOUGH_POSITIONAL_ARGUMENTS,
- node.name,
+ node.name2,
[requiredParameterCount, 0],
);
}
@@ -1639,7 +1641,6 @@
node.documentationComment?.accept(this);
node.metadata.accept(this);
node.returnType?.accept(this);
- node.name.accept(this);
analyzeExpression(node.functionExpression, functionType);
elementResolver.visitFunctionDeclaration(node);
} finally {
@@ -1649,7 +1650,7 @@
if (!node.isSetter) {
checkForBodyMayCompleteNormally(
body: node.functionExpression.body,
- errorNode: node.name,
+ errorNode: node.name2,
);
}
flowAnalysis.executableDeclaration_exit(
@@ -1945,7 +1946,6 @@
node.documentationComment?.accept(this);
node.metadata.accept(this);
node.returnType?.accept(this);
- node.name.accept(this);
node.typeParameters?.accept(this);
node.parameters?.accept(this);
node.body.resolve(this, returnType.isDynamic ? null : returnType);
@@ -1958,7 +1958,7 @@
if (!node.isSetter) {
checkForBodyMayCompleteNormally(
body: node.body,
- errorNode: node.name,
+ errorNode: node.name2,
);
}
flowAnalysis.executableDeclaration_exit(node.body, false);
@@ -2573,8 +2573,8 @@
}
if (error.kind == TopLevelInferenceErrorKind.dependencyCycle) {
var argumentsText = error.arguments.join(', ');
- errorReporter.reportErrorForNode(CompileTimeErrorCode.TOP_LEVEL_CYCLE,
- node.name, [node.name.name, argumentsText]);
+ errorReporter.reportErrorForToken(CompileTimeErrorCode.TOP_LEVEL_CYCLE,
+ node.name2, [node.name2.lexeme, argumentsText]);
}
}
@@ -3036,7 +3036,6 @@
}
void visitClassDeclarationInScope(ClassDeclaration node) {
- node.name.accept(this);
node.typeParameters?.accept(this);
node.extendsClause?.accept(this);
node.withClause?.accept(this);
@@ -3070,7 +3069,6 @@
// alias's type parameter scope. It was already visited in
// [visitClassTypeAlias].
node.documentationComment?.accept(this);
- node.name.accept(this);
node.typeParameters?.accept(this);
node.superclass.accept(this);
node.withClause.accept(this);
@@ -3092,7 +3090,6 @@
node.metadata.accept(this);
node.returnType.accept(this);
- node.name?.accept(this);
node.parameters.accept(this);
try {
@@ -3171,7 +3168,6 @@
}
void visitEnumDeclarationInScope(EnumDeclaration node) {
- node.name.accept(this);
node.typeParameters?.accept(this);
node.withClause?.accept(this);
node.implementsClause?.accept(this);
@@ -3211,7 +3207,6 @@
}
void visitExtensionDeclarationInScope(ExtensionDeclaration node) {
- node.name?.accept(this);
node.typeParameters?.accept(this);
node.extendedType.accept(this);
}
@@ -3334,7 +3329,6 @@
// Note: we don't visit metadata because it's not inside the function's type
// parameter scope. It was already visited in [visitFunctionDeclaration].
node.returnType?.accept(this);
- node.name.accept(this);
node.functionExpression.accept(this);
}
@@ -3385,7 +3379,6 @@
// alias's type parameter scope. It was already visited in
// [visitFunctionTypeAlias].
node.returnType?.accept(this);
- node.name.accept(this);
node.typeParameters?.accept(this);
node.parameters.accept(this);
// Visiting the parameters added them to the scope as a side effect. So it
@@ -3416,7 +3409,6 @@
// [visitFunctionTypedFormalParameter].
node.documentationComment?.accept(this);
node.returnType?.accept(this);
- node.identifier.accept(this);
node.typeParameters?.accept(this);
node.parameters.accept(this);
}
@@ -3469,7 +3461,6 @@
// Note: we don't visit metadata because it's not inside the generic type
// alias's type parameter scope. It was already visited in
// [visitGenericTypeAlias].
- node.name.accept(this);
node.typeParameters?.accept(this);
node.type.accept(this);
}
@@ -3513,7 +3504,6 @@
// Note: we don't visit metadata because it's not inside the method's type
// parameter scope. It was already visited in [visitMethodDeclaration].
node.returnType?.accept(this);
- node.name.accept(this);
node.typeParameters?.accept(this);
node.parameters?.accept(this);
// Visiting the parameters added them to the scope as a side effect. So it
@@ -3555,7 +3545,6 @@
}
void visitMixinDeclarationInScope(MixinDeclaration node) {
- node.name.accept(this);
node.typeParameters?.accept(this);
node.onClause?.accept(this);
node.implementsClause?.accept(this);
@@ -3625,7 +3614,7 @@
if (node.inSetterContext()) {
_localVariableInfo.potentiallyMutatedInScope.add(element);
if (_enclosingClosure != null &&
- element.enclosingElement2 != _enclosingClosure) {
+ element.enclosingElement3 != _enclosingClosure) {
_localVariableInfo.potentiallyMutatedInClosure.add(element);
}
}
diff --git a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
index a5ee15d..28b3ace 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
@@ -169,23 +169,25 @@
{List<ClassMember> members = const [],
bool isMacro = false,
bool isAugmentation = false}) =>
- astFactory.classDeclaration(
- null,
- null,
- abstractKeyword == null
+ ClassDeclarationImpl(
+ comment: null,
+ metadata: null,
+ abstractKeyword: abstractKeyword == null
? null
: TokenFactory.tokenFromKeyword(abstractKeyword),
- isMacro ? TokenFactory.tokenFromString('macro') : null,
- isAugmentation ? TokenFactory.tokenFromString('augment') : null,
- TokenFactory.tokenFromKeyword(Keyword.CLASS),
- identifier3(name),
- typeParameters,
- extendsClause,
- withClause,
- implementsClause,
- TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
- members,
- TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+ macroKeyword: isMacro ? TokenFactory.tokenFromString('macro') : null,
+ augmentKeyword:
+ isAugmentation ? TokenFactory.tokenFromString('augment') : null,
+ classKeyword: TokenFactory.tokenFromKeyword(Keyword.CLASS),
+ name: identifier3(name),
+ typeParameters: typeParameters as TypeParameterListImpl?,
+ extendsClause: extendsClause as ExtendsClauseImpl?,
+ withClause: withClause as WithClauseImpl?,
+ implementsClause: implementsClause as ImplementsClauseImpl?,
+ leftBracket: TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ members: members,
+ rightBracket:
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
static ClassTypeAliasImpl classTypeAlias(
String name,
@@ -196,22 +198,24 @@
ImplementsClause? implementsClause,
{bool isMacro = false,
bool isAugmentation = false}) =>
- astFactory.classTypeAlias(
- null,
- null,
- TokenFactory.tokenFromKeyword(Keyword.CLASS),
- identifier3(name),
- typeParameters,
- TokenFactory.tokenFromType(TokenType.EQ),
- abstractKeyword == null
- ? null
- : TokenFactory.tokenFromKeyword(abstractKeyword),
- isMacro ? TokenFactory.tokenFromString('macro') : null,
- isAugmentation ? TokenFactory.tokenFromString('augment') : null,
- superclass,
- withClause,
- implementsClause,
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ ClassTypeAliasImpl(
+ comment: null,
+ metadata: null,
+ typedefKeyword: TokenFactory.tokenFromKeyword(Keyword.CLASS),
+ name: identifier3(name),
+ typeParameters: typeParameters as TypeParameterListImpl?,
+ equals: TokenFactory.tokenFromType(TokenType.EQ),
+ abstractKeyword: abstractKeyword == null
+ ? null
+ : TokenFactory.tokenFromKeyword(abstractKeyword),
+ macroKeyword: isMacro ? TokenFactory.tokenFromString('macro') : null,
+ augmentKeyword:
+ isAugmentation ? TokenFactory.tokenFromString('augment') : null,
+ superclass: superclass as NamedTypeImpl,
+ withClause: withClause as WithClauseImpl,
+ implementsClause: implementsClause as ImplementsClauseImpl?,
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static CompilationUnitImpl compilationUnit() =>
compilationUnit8(null, [], []);
@@ -281,22 +285,24 @@
String? name,
FormalParameterList parameters,
List<ConstructorInitializer> initializers) =>
- astFactory.constructorDeclaration(
- null,
- null,
- TokenFactory.tokenFromKeyword(Keyword.EXTERNAL),
- null,
- null,
- returnType,
- name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
- name == null ? null : identifier3(name),
- parameters,
- initializers.isEmpty
- ? null
- : TokenFactory.tokenFromType(TokenType.PERIOD),
- initializers,
- null,
- emptyFunctionBody());
+ ConstructorDeclarationImpl(
+ comment: null,
+ metadata: null,
+ externalKeyword: TokenFactory.tokenFromKeyword(Keyword.EXTERNAL),
+ constKeyword: null,
+ factoryKeyword: null,
+ returnType: returnType as IdentifierImpl,
+ period:
+ name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
+ name: name == null ? null : identifier3(name),
+ parameters: parameters as FormalParameterListImpl,
+ separator: initializers.isEmpty
+ ? null
+ : TokenFactory.tokenFromType(TokenType.PERIOD),
+ initializers: initializers,
+ redirectedConstructor: null,
+ body: emptyFunctionBody(),
+ );
static ConstructorDeclarationImpl constructorDeclaration2(
Keyword? constKeyword,
@@ -306,26 +312,28 @@
FormalParameterList parameters,
List<ConstructorInitializer> initializers,
FunctionBody body) =>
- astFactory.constructorDeclaration(
- null,
- null,
- null,
- constKeyword == null
- ? null
- : TokenFactory.tokenFromKeyword(constKeyword),
- factoryKeyword == null
- ? null
- : TokenFactory.tokenFromKeyword(factoryKeyword),
- returnType,
- name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
- name == null ? null : identifier3(name),
- parameters,
- initializers.isEmpty
- ? null
- : TokenFactory.tokenFromType(TokenType.PERIOD),
- initializers,
- null,
- body);
+ ConstructorDeclarationImpl(
+ comment: null,
+ metadata: null,
+ externalKeyword: null,
+ constKeyword: constKeyword == null
+ ? null
+ : TokenFactory.tokenFromKeyword(constKeyword),
+ factoryKeyword: factoryKeyword == null
+ ? null
+ : TokenFactory.tokenFromKeyword(factoryKeyword),
+ returnType: returnType as IdentifierImpl,
+ period:
+ name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
+ name: name == null ? null : identifier3(name),
+ parameters: parameters as FormalParameterListImpl,
+ separator: initializers.isEmpty
+ ? null
+ : TokenFactory.tokenFromType(TokenType.PERIOD),
+ initializers: initializers,
+ redirectedConstructor: null,
+ body: body as FunctionBodyImpl,
+ );
static ConstructorFieldInitializerImpl constructorFieldInitializer(
bool prefixedWithThis, String fieldName, Expression expression) =>
@@ -356,12 +364,14 @@
static DeclaredIdentifierImpl declaredIdentifier2(
Keyword? keyword, TypeAnnotation? type, String identifier) =>
- astFactory.declaredIdentifier(
- null,
- null,
- keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
- type,
- identifier3(identifier));
+ DeclaredIdentifierImpl(
+ comment: null,
+ metadata: null,
+ keyword:
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ type: type as TypeAnnotationImpl?,
+ identifier: identifier3(identifier),
+ );
static DeclaredIdentifierImpl declaredIdentifier3(String identifier) =>
declaredIdentifier2(Keyword.VAR, null, identifier);
@@ -397,14 +407,15 @@
static ExportDirectiveImpl exportDirective(
List<Annotation> metadata, String uri,
[List<Combinator> combinators = const []]) =>
- astFactory.exportDirective(
- null,
- metadata,
- TokenFactory.tokenFromKeyword(Keyword.EXPORT),
- string2(uri),
- null,
- combinators,
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ ExportDirectiveImpl(
+ comment: null,
+ metadata: metadata,
+ exportKeyword: TokenFactory.tokenFromKeyword(Keyword.EXPORT),
+ uri: string2(uri),
+ configurations: null,
+ combinators: combinators,
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static ExportDirectiveImpl exportDirective2(String uri,
[List<Combinator> combinators = const []]) =>
@@ -435,23 +446,23 @@
ShowClause? showClause,
HideClause? hideClause,
List<ClassMember> members = const []}) =>
- astFactory.extensionDeclaration(
- comment: null,
- metadata: null,
- extensionKeyword: TokenFactory.tokenFromKeyword(Keyword.EXTENSION),
- typeKeyword: isExtensionTypeDeclaration
- ? TokenFactory.tokenFromString('type')
- : null,
- name: identifier3(name),
- typeParameters: typeParameters,
- onKeyword: TokenFactory.tokenFromKeyword(Keyword.ON),
- extendedType: extendedType,
- showClause: showClause,
- hideClause: hideClause,
- leftBracket: TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
- members: members,
- rightBracket:
- TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+ ExtensionDeclarationImpl(
+ comment: null,
+ metadata: null,
+ extensionKeyword: TokenFactory.tokenFromKeyword(Keyword.EXTENSION),
+ typeKeyword: isExtensionTypeDeclaration
+ ? TokenFactory.tokenFromString('type')
+ : null,
+ name: identifier3(name),
+ typeParameters: typeParameters as TypeParameterListImpl?,
+ onKeyword: TokenFactory.tokenFromKeyword(Keyword.ON),
+ extendedType: extendedType as TypeAnnotationImpl,
+ showClause: showClause as ShowClauseImpl?,
+ hideClause: hideClause as HideClauseImpl?,
+ leftBracket: TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ members: members,
+ rightBracket: TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET),
+ );
static ExtensionOverrideImpl extensionOverride(
{required Identifier extensionName,
@@ -465,17 +476,20 @@
static FieldDeclarationImpl fieldDeclaration(bool isStatic, Keyword? keyword,
TypeAnnotation? type, List<VariableDeclaration> variables,
{bool isAbstract = false, bool isExternal = false}) =>
- astFactory.fieldDeclaration2(
- abstractKeyword: isAbstract
- ? TokenFactory.tokenFromKeyword(Keyword.ABSTRACT)
- : null,
- externalKeyword: isExternal
- ? TokenFactory.tokenFromKeyword(Keyword.EXTERNAL)
- : null,
- staticKeyword:
- isStatic ? TokenFactory.tokenFromKeyword(Keyword.STATIC) : null,
- fieldList: variableDeclarationList(keyword, type, variables),
- semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ FieldDeclarationImpl(
+ comment: null,
+ metadata: null,
+ augmentKeyword: null,
+ covariantKeyword: null,
+ abstractKeyword:
+ isAbstract ? TokenFactory.tokenFromKeyword(Keyword.ABSTRACT) : null,
+ externalKeyword:
+ isExternal ? TokenFactory.tokenFromKeyword(Keyword.EXTERNAL) : null,
+ staticKeyword:
+ isStatic ? TokenFactory.tokenFromKeyword(Keyword.STATIC) : null,
+ fieldList: variableDeclarationList(keyword, type, variables),
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static FieldDeclarationImpl fieldDeclaration2(bool isStatic, Keyword? keyword,
List<VariableDeclaration> variables) =>
@@ -567,15 +581,17 @@
Keyword? keyword,
String name,
FunctionExpression functionExpression) =>
- astFactory.functionDeclaration(
- null,
- null,
- null,
- null,
- type,
- keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
- identifier3(name),
- functionExpression);
+ FunctionDeclarationImpl(
+ comment: null,
+ metadata: null,
+ augmentKeyword: null,
+ externalKeyword: null,
+ returnType: type as TypeAnnotationImpl?,
+ propertyKeyword:
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ name: identifier3(name),
+ functionExpression: functionExpression as FunctionExpressionImpl,
+ );
static FunctionDeclarationStatementImpl functionDeclarationStatement(
TypeAnnotation? type,
@@ -628,15 +644,16 @@
static GenericTypeAliasImpl genericTypeAlias(String name,
TypeParameterList typeParameters, GenericFunctionType functionType) =>
- astFactory.genericTypeAlias(
- null,
- null,
- TokenFactory.tokenFromKeyword(Keyword.TYPEDEF),
- identifier3(name),
- typeParameters,
- TokenFactory.tokenFromType(TokenType.EQ),
- functionType,
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ GenericTypeAliasImpl(
+ comment: null,
+ metadata: null,
+ typedefKeyword: TokenFactory.tokenFromKeyword(Keyword.TYPEDEF),
+ name: identifier3(name),
+ typeParameters: typeParameters as TypeParameterListImpl,
+ equals: TokenFactory.tokenFromType(TokenType.EQ),
+ type: functionType as GenericFunctionTypeImpl,
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static HideClauseImpl hideClause(List<ShowHideClauseElement> elements) =>
astFactory.hideClause(
@@ -716,17 +733,21 @@
static ImportDirectiveImpl importDirective(List<Annotation> metadata,
String uri, bool isDeferred, String? prefix,
[List<Combinator> combinators = const []]) =>
- astFactory.importDirective(
- null,
- metadata,
- TokenFactory.tokenFromKeyword(Keyword.IMPORT),
- string2(uri),
- null,
- !isDeferred ? null : TokenFactory.tokenFromKeyword(Keyword.DEFERRED),
- prefix == null ? null : TokenFactory.tokenFromKeyword(Keyword.AS),
- prefix == null ? null : identifier3(prefix),
- combinators,
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ ImportDirectiveImpl(
+ comment: null,
+ metadata: metadata,
+ importKeyword: TokenFactory.tokenFromKeyword(Keyword.IMPORT),
+ uri: string2(uri),
+ configurations: null,
+ deferredKeyword: !isDeferred
+ ? null
+ : TokenFactory.tokenFromKeyword(Keyword.DEFERRED),
+ asKeyword:
+ prefix == null ? null : TokenFactory.tokenFromKeyword(Keyword.AS),
+ prefix: prefix == null ? null : identifier3(prefix),
+ combinators: combinators,
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static ImportDirectiveImpl importDirective2(
String uri, bool isDeferred, String prefix,
@@ -837,12 +858,13 @@
static LibraryDirectiveImpl libraryDirective(
List<Annotation> metadata, LibraryIdentifier libraryName) =>
- astFactory.libraryDirective(
- null,
- metadata,
- TokenFactory.tokenFromKeyword(Keyword.LIBRARY),
- libraryName,
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ LibraryDirectiveImpl(
+ comment: null,
+ metadata: metadata,
+ libraryKeyword: TokenFactory.tokenFromKeyword(Keyword.LIBRARY),
+ name: libraryName as LibraryIdentifierImpl,
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static LibraryDirectiveImpl libraryDirective2(String libraryName) =>
libraryDirective(<Annotation>[], libraryIdentifier2([libraryName]));
@@ -892,18 +914,22 @@
Keyword? operator,
SimpleIdentifier name,
FormalParameterList? parameters) =>
- astFactory.methodDeclaration(
- null,
- null,
- TokenFactory.tokenFromKeyword(Keyword.EXTERNAL),
- modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
- returnType,
- property == null ? null : TokenFactory.tokenFromKeyword(property),
- operator == null ? null : TokenFactory.tokenFromKeyword(operator),
- name,
- null,
- parameters,
- emptyFunctionBody());
+ MethodDeclarationImpl(
+ comment: null,
+ metadata: null,
+ externalKeyword: TokenFactory.tokenFromKeyword(Keyword.EXTERNAL),
+ modifierKeyword:
+ modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
+ returnType: returnType as TypeAnnotationImpl?,
+ propertyKeyword:
+ property == null ? null : TokenFactory.tokenFromKeyword(property),
+ operatorKeyword:
+ operator == null ? null : TokenFactory.tokenFromKeyword(operator),
+ name: name as SimpleIdentifierImpl,
+ typeParameters: null,
+ parameters: parameters as FormalParameterListImpl?,
+ body: emptyFunctionBody(),
+ );
static MethodDeclarationImpl methodDeclaration2(
Keyword? modifier,
@@ -913,18 +939,22 @@
SimpleIdentifier name,
FormalParameterList? parameters,
FunctionBody body) =>
- astFactory.methodDeclaration(
- null,
- null,
- null,
- modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
- returnType,
- property == null ? null : TokenFactory.tokenFromKeyword(property),
- operator == null ? null : TokenFactory.tokenFromKeyword(operator),
- name,
- null,
- parameters,
- body);
+ MethodDeclarationImpl(
+ comment: null,
+ metadata: null,
+ externalKeyword: null,
+ modifierKeyword:
+ modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
+ returnType: returnType as TypeAnnotationImpl?,
+ propertyKeyword:
+ property == null ? null : TokenFactory.tokenFromKeyword(property),
+ operatorKeyword:
+ operator == null ? null : TokenFactory.tokenFromKeyword(operator),
+ name: name as SimpleIdentifierImpl,
+ typeParameters: null,
+ parameters: parameters as FormalParameterListImpl?,
+ body: body as FunctionBodyImpl,
+ );
static MethodDeclarationImpl methodDeclaration3(
Keyword? modifier,
@@ -935,18 +965,22 @@
TypeParameterList? typeParameters,
FormalParameterList? parameters,
FunctionBody body) =>
- astFactory.methodDeclaration(
- null,
- null,
- null,
- modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
- returnType,
- property == null ? null : TokenFactory.tokenFromKeyword(property),
- operator == null ? null : TokenFactory.tokenFromKeyword(operator),
- name,
- typeParameters,
- parameters,
- body);
+ MethodDeclarationImpl(
+ comment: null,
+ metadata: null,
+ externalKeyword: null,
+ modifierKeyword:
+ modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
+ returnType: returnType as TypeAnnotationImpl?,
+ propertyKeyword:
+ property == null ? null : TokenFactory.tokenFromKeyword(property),
+ operatorKeyword:
+ operator == null ? null : TokenFactory.tokenFromKeyword(operator),
+ name: name as SimpleIdentifierImpl,
+ typeParameters: typeParameters as TypeParameterListImpl?,
+ parameters: parameters as FormalParameterListImpl?,
+ body: body as FunctionBodyImpl,
+ );
static MethodDeclarationImpl methodDeclaration4(
{bool external = false,
@@ -957,18 +991,23 @@
required String name,
FormalParameterList? parameters,
required FunctionBody body}) =>
- astFactory.methodDeclaration(
- null,
- null,
- external ? TokenFactory.tokenFromKeyword(Keyword.EXTERNAL) : null,
- modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
- returnType,
- property == null ? null : TokenFactory.tokenFromKeyword(property),
- operator ? TokenFactory.tokenFromKeyword(Keyword.OPERATOR) : null,
- identifier3(name),
- null,
- parameters,
- body);
+ MethodDeclarationImpl(
+ comment: null,
+ metadata: null,
+ externalKeyword:
+ external ? TokenFactory.tokenFromKeyword(Keyword.EXTERNAL) : null,
+ modifierKeyword:
+ modifier == null ? null : TokenFactory.tokenFromKeyword(modifier),
+ returnType: returnType as TypeAnnotationImpl?,
+ propertyKeyword:
+ property == null ? null : TokenFactory.tokenFromKeyword(property),
+ operatorKeyword:
+ operator ? TokenFactory.tokenFromKeyword(Keyword.OPERATOR) : null,
+ name: identifier3(name),
+ typeParameters: null,
+ parameters: parameters as FormalParameterListImpl?,
+ body: body as FunctionBodyImpl,
+ );
static MethodInvocationImpl methodInvocation(
Expression? target, String methodName,
@@ -1072,12 +1111,13 @@
static PartDirectiveImpl partDirective(
List<Annotation> metadata, String url) =>
- astFactory.partDirective(
- null,
- metadata,
- TokenFactory.tokenFromKeyword(Keyword.PART),
- string2(url),
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ PartDirectiveImpl(
+ comment: null,
+ metadata: metadata,
+ partKeyword: TokenFactory.tokenFromKeyword(Keyword.PART),
+ uri: string2(url),
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static PartDirectiveImpl partDirective2(String url) =>
partDirective(<Annotation>[], url);
@@ -1087,14 +1127,15 @@
static PartOfDirectiveImpl partOfDirective2(
List<Annotation> metadata, LibraryIdentifier libraryName) =>
- astFactory.partOfDirective(
- null,
- metadata,
- TokenFactory.tokenFromKeyword(Keyword.PART),
- TokenFactory.tokenFromString("of"),
- null,
- libraryName,
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ PartOfDirectiveImpl(
+ comment: null,
+ metadata: metadata,
+ partKeyword: TokenFactory.tokenFromKeyword(Keyword.PART),
+ ofKeyword: TokenFactory.tokenFromString("of"),
+ uri: null,
+ libraryName: libraryName as LibraryIdentifierImpl,
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static DefaultFormalParameterImpl positionalFormalParameter(
NormalFormalParameter parameter, Expression? expression) =>
@@ -1327,23 +1368,25 @@
Keyword? keyword,
TypeAnnotation? type,
List<VariableDeclaration> variables) =>
- astFactory.topLevelVariableDeclaration(
- null,
- null,
- variableDeclarationList(keyword, type, variables),
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ TopLevelVariableDeclarationImpl(
+ comment: null,
+ metadata: null,
+ externalKeyword: null,
+ variableList: variableDeclarationList(keyword, type, variables),
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static TopLevelVariableDeclarationImpl topLevelVariableDeclaration2(
Keyword? keyword, List<VariableDeclaration> variables,
{bool isExternal = false}) =>
- astFactory.topLevelVariableDeclaration(
- null,
- null,
- variableDeclarationList(keyword, null, variables),
- TokenFactory.tokenFromType(TokenType.SEMICOLON),
- externalKeyword: isExternal
- ? TokenFactory.tokenFromKeyword(Keyword.EXTERNAL)
- : null);
+ TopLevelVariableDeclarationImpl(
+ comment: null,
+ metadata: null,
+ variableList: variableDeclarationList(keyword, null, variables),
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ externalKeyword:
+ isExternal ? TokenFactory.tokenFromKeyword(Keyword.EXTERNAL) : null,
+ );
static TryStatementImpl tryStatement(Block body, Block finallyClause) =>
tryStatement3(body, <CatchClause>[], finallyClause);
@@ -1365,15 +1408,16 @@
static FunctionTypeAliasImpl typeAlias(TypeAnnotation returnType, String name,
TypeParameterList? typeParameters, FormalParameterList parameters) =>
- astFactory.functionTypeAlias(
- null,
- null,
- TokenFactory.tokenFromKeyword(Keyword.TYPEDEF),
- returnType,
- identifier3(name),
- typeParameters,
- parameters,
- TokenFactory.tokenFromType(TokenType.SEMICOLON));
+ FunctionTypeAliasImpl(
+ comment: null,
+ metadata: null,
+ typedefKeyword: TokenFactory.tokenFromKeyword(Keyword.TYPEDEF),
+ returnType: returnType as TypeAnnotationImpl,
+ name: identifier3(name),
+ typeParameters: typeParameters as TypeParameterListImpl?,
+ parameters: parameters as FormalParameterListImpl,
+ semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON),
+ );
static TypeArgumentList? typeArgumentList(List<TypeAnnotation>? types) {
if (types == null || types.isEmpty) {
@@ -1387,23 +1431,34 @@
types, TokenFactory.tokenFromType(TokenType.GT));
}
- static TypeParameterImpl typeParameter(String name) =>
- astFactory.typeParameter(null, null, identifier3(name), null, null);
+ static TypeParameterImpl typeParameter(String name) => TypeParameterImpl(
+ comment: null,
+ metadata: null,
+ name: identifier3(name),
+ extendsKeyword: null,
+ bound: null,
+ );
static TypeParameterImpl typeParameter2(String name, TypeAnnotation bound) =>
- astFactory.typeParameter(null, null, identifier3(name),
- TokenFactory.tokenFromKeyword(Keyword.EXTENDS), bound);
+ TypeParameterImpl(
+ comment: null,
+ metadata: null,
+ name: identifier3(name),
+ extendsKeyword: TokenFactory.tokenFromKeyword(Keyword.EXTENDS),
+ bound: bound as TypeAnnotationImpl,
+ );
static TypeParameterImpl typeParameter3(String name, String varianceLexeme) =>
// TODO (kallentu) : Clean up AstFactoryImpl casting once variance is
// added to the interface.
- astFactory.typeParameter2(
- comment: null,
- metadata: null,
- name: identifier3(name),
- extendsKeyword: null,
- bound: null,
- varianceKeyword: TokenFactory.tokenFromString(varianceLexeme));
+ TypeParameterImpl(
+ comment: null,
+ metadata: null,
+ name: identifier3(name),
+ extendsKeyword: null,
+ bound: null,
+ varianceKeyword: TokenFactory.tokenFromString(varianceLexeme),
+ );
static TypeParameterList? typeParameterList([List<String>? typeNames]) {
if (typeNames == null || typeNames.isEmpty) {
@@ -1425,21 +1480,31 @@
}
static VariableDeclarationImpl variableDeclaration(String name) =>
- astFactory.variableDeclaration(identifier3(name), null, null);
+ VariableDeclarationImpl(
+ name: identifier3(name),
+ equals: null,
+ initializer: null,
+ );
static VariableDeclarationImpl variableDeclaration2(
String name, Expression initializer) =>
- astFactory.variableDeclaration(identifier3(name),
- TokenFactory.tokenFromType(TokenType.EQ), initializer);
+ VariableDeclarationImpl(
+ name: identifier3(name),
+ equals: TokenFactory.tokenFromType(TokenType.EQ),
+ initializer: initializer as ExpressionImpl,
+ );
static VariableDeclarationListImpl variableDeclarationList(Keyword? keyword,
TypeAnnotation? type, List<VariableDeclaration> variables) =>
- astFactory.variableDeclarationList(
- null,
- null,
- keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
- type,
- variables);
+ VariableDeclarationListImpl(
+ comment: null,
+ metadata: null,
+ lateKeyword: null,
+ keyword:
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ type: type as TypeAnnotationImpl?,
+ variables: variables,
+ );
static VariableDeclarationListImpl variableDeclarationList2(
Keyword? keyword, List<VariableDeclaration> variables) =>
diff --git a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
index f6df998..9165f0d 100644
--- a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
+++ b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
@@ -225,9 +225,9 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- if (checkTripleShift && node.isOperator && node.name.name == '>>>') {
- _errorReporter.reportErrorForNode(
- HintCode.SDK_VERSION_GT_GT_GT_OPERATOR, node.name);
+ if (checkTripleShift && node.isOperator && node.name2.lexeme == '>>>') {
+ _errorReporter.reportErrorForToken(
+ HintCode.SDK_VERSION_GT_GT_GT_OPERATOR, node.name2);
}
super.visitMethodDeclaration(node);
}
diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart
index 1541169..1471a8b 100644
--- a/pkg/analyzer/lib/src/lint/linter.dart
+++ b/pkg/analyzer/lib/src/lint/linter.dart
@@ -338,8 +338,10 @@
bool canBeConstConstructor(covariant ConstructorDeclarationImpl node) {
var element = node.declaredElement!;
- ClassElement classElement = element.enclosingElement2;
- if (classElement.hasNonFinalField) return false;
+ final classElement = element.enclosingElement3;
+ if (classElement is ClassElement && classElement.hasNonFinalField) {
+ return false;
+ }
var oldKeyword = node.constKeyword;
try {
diff --git a/pkg/analyzer/lib/src/services/available_declarations.dart b/pkg/analyzer/lib/src/services/available_declarations.dart
index 8a744b5..4bac2f7 100644
--- a/pkg/analyzer/lib/src/services/available_declarations.dart
+++ b/pkg/analyzer/lib/src/services/available_declarations.dart
@@ -17,7 +17,6 @@
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/dart/analysis/session.dart';
-import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/token.dart';
import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
@@ -1400,7 +1399,7 @@
bool isFinal = false,
bool isStatic = false,
required DeclarationKind kind,
- required Identifier name,
+ required Token name,
String? parameters,
List<String>? parameterNames,
List<String>? parameterTypes,
@@ -1410,7 +1409,7 @@
String? returnType,
String? typeParameters,
}) {
- if (Identifier.isPrivateName(name.name)) {
+ if (Identifier.isPrivateName(name.lexeme)) {
return null;
}
@@ -1433,7 +1432,7 @@
lineInfo: lineInfo,
locationOffset: locationOffset,
locationPath: path,
- name: name.name,
+ name: name.lexeme,
locationStartColumn: lineLocation.columnNumber,
locationStartLine: lineLocation.lineNumber,
parameters: parameters,
@@ -1473,13 +1472,11 @@
var defaultArguments = _computeDefaultArguments(parameters);
var isConst = classMember.constKeyword != null;
- var constructorName = classMember.name;
- constructorName ??= SimpleIdentifierImpl(
- StringToken(
- TokenType.IDENTIFIER,
- '',
- classMember.returnType.offset,
- ),
+ var constructorName = classMember.name2;
+ constructorName ??= StringToken(
+ TokenType.IDENTIFIER,
+ '',
+ classMember.returnType.offset,
);
// TODO(brianwilkerson) Should we be passing in `isConst`?
@@ -1516,7 +1513,7 @@
isFinal: isFinal,
isStatic: isStatic,
kind: DeclarationKind.FIELD,
- name: field.name,
+ name: field.name2,
parent: parent,
relevanceTags: [
'ElementKind.FIELD',
@@ -1534,7 +1531,7 @@
isDeprecated: isDeprecated,
isStatic: isStatic,
kind: DeclarationKind.GETTER,
- name: classMember.name,
+ name: classMember.name2,
parent: parent,
relevanceTags: ['ElementKind.FIELD'],
returnType: _getTypeAnnotationString(classMember.returnType),
@@ -1544,7 +1541,7 @@
isDeprecated: isDeprecated,
isStatic: isStatic,
kind: DeclarationKind.SETTER,
- name: classMember.name,
+ name: classMember.name2,
parameters: parameters.toSource(),
parameterNames: _getFormalParameterNames(parameters),
parameterTypes: _getFormalParameterTypes(parameters),
@@ -1561,7 +1558,7 @@
isDeprecated: isDeprecated,
isStatic: isStatic,
kind: DeclarationKind.METHOD,
- name: classMember.name,
+ name: classMember.name2,
parameters: parameters.toSource(),
parameterNames: _getFormalParameterNames(parameters),
parameterTypes: _getFormalParameterTypes(parameters),
@@ -1582,7 +1579,7 @@
isAbstract: node.abstractKeyword != null,
isDeprecated: isDeprecated,
kind: DeclarationKind.CLASS,
- name: node.name,
+ name: node.name2,
relevanceTags: ['ElementKind.CLASS'],
);
if (classDeclaration == null) continue;
@@ -1617,7 +1614,7 @@
parent: classDeclaration,
relevanceTagsInFile: ['ElementKind.CONSTRUCTOR'],
requiredParameterCount: 0,
- returnType: node.name.name,
+ returnType: node.name2.lexeme,
typeParameters: null,
));
}
@@ -1625,14 +1622,14 @@
addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.CLASS_TYPE_ALIAS,
- name: node.name,
+ name: node.name2,
relevanceTags: ['ElementKind.CLASS'],
);
} else if (node is EnumDeclaration) {
var enumDeclaration = addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.ENUM,
- name: node.name,
+ name: node.name2,
relevanceTags: ['ElementKind.ENUM'],
);
if (enumDeclaration == null) continue;
@@ -1643,7 +1640,7 @@
addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.ENUM_CONSTANT,
- name: constant.name,
+ name: constant.name2,
parent: enumDeclaration,
relevanceTags: [
'ElementKind.ENUM_CONSTANT',
@@ -1652,7 +1649,7 @@
);
}
} else if (node is ExtensionDeclaration) {
- var name = node.name;
+ var name = node.name2;
if (name != null) {
addDeclaration(
isDeprecated: isDeprecated,
@@ -1670,7 +1667,7 @@
addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.GETTER,
- name: node.name,
+ name: node.name2,
relevanceTags: ['ElementKind.FUNCTION'],
returnType: _getTypeAnnotationString(node.returnType),
);
@@ -1678,7 +1675,7 @@
addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.SETTER,
- name: node.name,
+ name: node.name2,
parameters: parameters.toSource(),
parameterNames: _getFormalParameterNames(parameters),
parameterTypes: _getFormalParameterTypes(parameters),
@@ -1693,7 +1690,7 @@
defaultArgumentListTextRanges: defaultArguments?.ranges,
isDeprecated: isDeprecated,
kind: DeclarationKind.FUNCTION,
- name: node.name,
+ name: node.name2,
parameters: parameters.toSource(),
parameterNames: _getFormalParameterNames(parameters),
parameterTypes: _getFormalParameterTypes(parameters),
@@ -1712,7 +1709,7 @@
addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.FUNCTION_TYPE_ALIAS,
- name: node.name,
+ name: node.name2,
parameters: parameters.toSource(),
parameterNames: _getFormalParameterNames(parameters),
parameterTypes: _getFormalParameterTypes(parameters),
@@ -1726,7 +1723,7 @@
addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.TYPE_ALIAS,
- name: node.name,
+ name: node.name2,
relevanceTags: ['ElementKind.TYPE_ALIAS'],
);
}
@@ -1735,7 +1732,7 @@
addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.FUNCTION_TYPE_ALIAS,
- name: node.name,
+ name: node.name2,
parameters: parameters.toSource(),
parameterNames: _getFormalParameterNames(parameters),
parameterTypes: _getFormalParameterTypes(parameters),
@@ -1748,7 +1745,7 @@
var mixinDeclaration = addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.MIXIN,
- name: node.name,
+ name: node.name2,
relevanceTags: ['ElementKind.MIXIN'],
);
if (mixinDeclaration == null) continue;
@@ -1763,7 +1760,7 @@
isDeprecated: isDeprecated,
isFinal: isFinal,
kind: DeclarationKind.VARIABLE,
- name: variable.name,
+ name: variable.name2,
relevanceTags: [
'ElementKind.TOP_LEVEL_VARIABLE',
if (isConst) 'ElementKind.TOP_LEVEL_VARIABLE+const',
@@ -1896,12 +1893,12 @@
}
if (parameter.isNamed) {
- buffer.write(parameter.identifier!.name);
+ buffer.write(parameter.name!.lexeme);
buffer.write(': ');
}
var valueOffset = buffer.length;
- buffer.write(parameter.identifier!.name);
+ buffer.write(parameter.name!.lexeme);
var valueLength = buffer.length - valueOffset;
ranges.add(valueOffset);
ranges.add(valueLength);
@@ -1917,7 +1914,7 @@
var names = <String>[];
for (var parameter in parameters.parameters) {
- var name = parameter.identifier?.name ?? '';
+ var name = parameter.name?.lexeme ?? '';
names.add(name);
}
return names;
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 91ada35..9aa5440 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -370,13 +370,13 @@
DeclaredIdentifier _readDeclaredIdentifier() {
var flags = _readByte();
- var type = _readOptionalNode() as TypeAnnotation?;
+ var type = _readOptionalNode() as TypeAnnotationImpl?;
var identifier = _readDeclarationName();
var metadata = _readNodeList<Annotation>();
- return astFactory.declaredIdentifier(
- null,
- metadata,
- Tokens.choose(
+ return DeclaredIdentifierImpl(
+ comment: null,
+ metadata: metadata,
+ keyword: Tokens.choose(
AstBinaryFlags.isConst(flags),
Tokens.const_(),
AstBinaryFlags.isFinal(flags),
@@ -384,8 +384,8 @@
AstBinaryFlags.isVar(flags),
Tokens.var_(),
),
- type,
- identifier,
+ type: type,
+ identifier: identifier,
);
}
@@ -421,7 +421,7 @@
if (parameter is SimpleFormalParameterImpl) {
parameter.declaredElement = element;
}
- node.identifier?.staticElement = element;
+ node.declaredElement = element;
element.type = nonDefaultElement.type;
return node;
@@ -853,24 +853,24 @@
}
MixinDeclaration _readMixinDeclaration() {
- var typeParameters = _readOptionalNode() as TypeParameterList?;
- var onClause = _readOptionalNode() as OnClause?;
- var implementsClause = _readOptionalNode() as ImplementsClause?;
- var name = readNode() as SimpleIdentifier;
+ var typeParameters = _readOptionalNode() as TypeParameterListImpl?;
+ var onClause = _readOptionalNode() as OnClauseImpl?;
+ var implementsClause = _readOptionalNode() as ImplementsClauseImpl?;
+ var name = readNode() as SimpleIdentifierImpl;
var metadata = _readNodeList<Annotation>();
- var node = astFactory.mixinDeclaration(
- null,
- metadata,
- null,
- Tokens.mixin_(),
- name,
- typeParameters,
- onClause,
- implementsClause,
- Tokens.openCurlyBracket(),
- const <ClassMember>[],
- Tokens.closeCurlyBracket(),
+ var node = MixinDeclarationImpl(
+ comment: null,
+ metadata: metadata,
+ augmentKeyword: null,
+ mixinKeyword: Tokens.mixin_(),
+ name: name,
+ typeParameters: typeParameters,
+ onClause: onClause,
+ implementsClause: implementsClause,
+ leftBracket: Tokens.openCurlyBracket(),
+ members: const <ClassMember>[],
+ rightBracket: Tokens.closeCurlyBracket(),
);
return node;
@@ -1197,15 +1197,15 @@
TypeParameter _readTypeParameter() {
var name = _readDeclarationName();
- var bound = _readOptionalNode() as TypeAnnotation?;
+ var bound = _readOptionalNode() as TypeAnnotationImpl?;
var metadata = _readNodeList<Annotation>();
- var node = astFactory.typeParameter(
- null,
- metadata,
- name,
- bound != null ? Tokens.extends_() : null,
- bound,
+ var node = TypeParameterImpl(
+ comment: null,
+ metadata: metadata,
+ name: name,
+ extendsKeyword: bound != null ? Tokens.extends_() : null,
+ bound: bound,
);
return node;
@@ -1226,13 +1226,13 @@
VariableDeclaration _readVariableDeclaration() {
var flags = _readByte();
- var name = readNode() as SimpleIdentifier;
- var initializer = _readOptionalNode() as Expression?;
+ var name = readNode() as SimpleIdentifierImpl;
+ var initializer = _readOptionalNode() as ExpressionImpl?;
- var node = astFactory.variableDeclaration(
- name,
- Tokens.eq(),
- initializer,
+ var node = VariableDeclarationImpl(
+ name: name,
+ equals: Tokens.eq(),
+ initializer: initializer,
);
node.hasInitializer = AstBinaryFlags.hasInitializer(flags);
@@ -1242,11 +1242,11 @@
VariableDeclarationList _readVariableDeclarationList() {
var flags = _readByte();
- var type = _readOptionalNode() as TypeAnnotation?;
+ var type = _readOptionalNode() as TypeAnnotationImpl?;
var variables = _readNodeList<VariableDeclaration>();
var metadata = _readNodeList<Annotation>();
- return astFactory.variableDeclarationList2(
+ return VariableDeclarationListImpl(
comment: null,
keyword: Tokens.choose(
AstBinaryFlags.isConst(flags),
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
index 0c7dbe3..e4577c8 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
@@ -190,7 +190,7 @@
),
);
_writeOptionalNode(node.type);
- _writeDeclarationName(node.identifier);
+ _writeDeclarationName(node.name);
_storeDeclaration(node);
}
@@ -764,7 +764,7 @@
@override
void visitTypeParameter(TypeParameter node) {
_writeByte(Tag.TypeParameter);
- _writeDeclarationName(node.name);
+ _writeDeclarationName(node.name2);
_writeOptionalNode(node.bound);
_storeDeclaration(node);
}
@@ -836,7 +836,7 @@
}) {
_writeByte(
AstBinaryFlags.encode(
- hasName: node.identifier != null,
+ hasName: node.name != null,
hasQuestion: hasQuestion,
isConst: keyword?.type == Keyword.CONST,
isCovariant: node.covariantKeyword != null,
@@ -847,8 +847,8 @@
);
_writeNodeList(node.metadata);
- if (node.identifier != null) {
- _writeDeclarationName(node.identifier!);
+ if (node.name != null) {
+ _writeDeclarationName(node.name!);
}
_storeFormalParameter(node);
}
@@ -875,8 +875,8 @@
_sink.addByte(byte);
}
- void _writeDeclarationName(SimpleIdentifier node) {
- _writeStringReference(node.name);
+ void _writeDeclarationName(Token token) {
+ _writeStringReference(token.lexeme);
}
_writeDouble(double value) {
diff --git a/pkg/analyzer/lib/src/summary2/ast_text_printer.dart b/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
index 73d60a8..c1c63e0 100644
--- a/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
@@ -152,7 +152,7 @@
_token(node.abstractKeyword);
_token(node.macroKeyword);
_token(node.classKeyword);
- node.name.accept(this);
+ _token(node.name2);
node.typeParameters?.accept(this);
node.extendsClause?.accept(this);
node.withClause?.accept(this);
@@ -169,7 +169,7 @@
_token(node.abstractKeyword);
_token(node.macroKeyword);
_token(node.typedefKeyword);
- node.name.accept(this);
+ _token(node.name2);
node.typeParameters?.accept(this);
_token(node.equals);
node.superclass.accept(this);
@@ -217,7 +217,7 @@
_token(node.factoryKeyword);
node.returnType.accept(this);
_token(node.period);
- node.name?.accept(this);
+ _token(node.name2);
node.parameters.accept(this);
_token(node.separator);
_nodeList(node.initializers, node.body.beginToken);
@@ -264,7 +264,7 @@
_declaration(node);
_token(node.keyword);
node.type?.accept(this);
- node.identifier.accept(this);
+ _token(node.name);
}
@override
@@ -316,7 +316,7 @@
@override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
_declaration(node);
- node.name.accept(this);
+ _token(node.name2);
node.arguments?.accept(this);
}
@@ -324,7 +324,7 @@
void visitEnumDeclaration(EnumDeclaration node) {
_compilationUnitMember(node);
_token(node.enumKeyword);
- node.name.accept(this);
+ _token(node.name2);
node.typeParameters?.accept(this);
node.withClause?.accept(this);
node.implementsClause?.accept(this);
@@ -370,7 +370,7 @@
_compilationUnitMember(node);
_token(node.extensionKeyword);
_token(node.typeKeyword);
- node.name?.accept(this);
+ _token(node.name2);
node.typeParameters?.accept(this);
_token(node.onKeyword);
node.extendedType.accept(this);
@@ -406,7 +406,7 @@
node.type?.accept(this);
_token(node.thisKeyword);
_token(node.period);
- node.identifier.accept(this);
+ _token(node.name);
node.typeParameters?.accept(this);
node.parameters?.accept(this);
}
@@ -495,7 +495,7 @@
_token(node.externalKeyword);
node.returnType?.accept(this);
_token(node.propertyKeyword);
- node.name.accept(this);
+ _token(node.name2);
node.functionExpression.accept(this);
}
@@ -529,7 +529,7 @@
_compilationUnitMember(node);
_token(node.typedefKeyword);
node.returnType?.accept(this);
- node.name.accept(this);
+ _token(node.name2);
node.typeParameters?.accept(this);
node.parameters.accept(this);
_token(node.semicolon);
@@ -539,7 +539,7 @@
void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
_normalFormalParameter(node);
node.returnType?.accept(this);
- node.identifier.accept(this);
+ _token(node.name);
node.typeParameters?.accept(this);
node.parameters.accept(this);
_token(node.question);
@@ -558,7 +558,7 @@
void visitGenericTypeAlias(GenericTypeAlias node) {
_compilationUnitMember(node);
_token(node.typedefKeyword);
- node.name.accept(this);
+ _token(node.name2);
node.typeParameters?.accept(this);
_token(node.equals);
node.type.accept(this);
@@ -702,7 +702,7 @@
node.returnType?.accept(this);
_token(node.propertyKeyword);
_token(node.operatorKeyword);
- node.name.accept(this);
+ _token(node.name2);
node.typeParameters?.accept(this);
node.parameters?.accept(this);
node.body.accept(this);
@@ -721,7 +721,7 @@
void visitMixinDeclaration(MixinDeclaration node) {
_compilationUnitMember(node);
_token(node.mixinKeyword);
- node.name.accept(this);
+ _token(node.name2);
node.typeParameters?.accept(this);
node.onClause?.accept(this);
node.implementsClause?.accept(this);
@@ -863,7 +863,7 @@
_normalFormalParameter(node);
_token(node.keyword);
node.type?.accept(this);
- node.identifier?.accept(this);
+ _token(node.name);
}
@override
@@ -907,7 +907,7 @@
node.type?.accept(this);
_token(node.superKeyword);
_token(node.period);
- node.identifier.accept(this);
+ _token(node.name);
node.typeParameters?.accept(this);
node.parameters?.accept(this);
}
@@ -994,7 +994,7 @@
// TODO (kallentu) : Clean up TypeParameterImpl casting once variance is
// added to the interface.
_token((node as TypeParameterImpl).varianceKeyword);
- node.name.accept(this);
+ _token(node.name2);
_token(node.extendsKeyword);
node.bound?.accept(this);
}
@@ -1009,7 +1009,7 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
_annotatedNode(node);
- node.name.accept(this);
+ _token(node.name2);
_token(node.equals);
node.initializer?.accept(this);
}
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index 626dd40..402d18c 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -200,7 +200,7 @@
ResolutionReader reader,
ElementImpl element,
) {
- var enclosing = element.enclosingElement2;
+ var enclosing = element.enclosingElement3;
if (enclosing is ClassElement) {
reader._addTypeParameters(enclosing.typeParameters);
} else if (enclosing is CompilationUnitElement) {
@@ -268,7 +268,7 @@
@override
void _read(element, reader) {
element.metadata = reader._readAnnotationList(
- unitElement: element.enclosingElement2,
+ unitElement: element.enclosingElement3,
);
_readTypeParameters(reader, element.typeParameters);
element.supertype = reader._readOptionalInterfaceType();
@@ -292,7 +292,7 @@
@override
void _read(element, reader) {
element.metadata = reader._readAnnotationList(
- unitElement: element.enclosingElement2,
+ unitElement: element.enclosingElement3,
);
_readTypeParameters(reader, element.typeParameters);
element.extendedType = reader.readRequiredType();
@@ -1288,34 +1288,36 @@
var name = accessor.displayName;
var isGetter = accessor.isGetter;
- var reference = containerRef.getChild(name);
-
- PropertyInducingElementImpl property;
- if (enclosingElement is CompilationUnitElementImpl) {
- var existing = reference.element;
- if (existing is TopLevelVariableElementImpl) {
- property = existing;
- } else {
- var field = TopLevelVariableElementImpl(name, -1);
- property = field;
- }
- } else {
- var existing = reference.element;
- if (existing is FieldElementImpl) {
- property = existing;
- } else {
- var field = FieldElementImpl(name, -1);
- field.isStatic = accessor.isStatic;
- property = field;
- }
+ bool canUseExisting(PropertyInducingElement property) {
+ return property.isSynthetic ||
+ accessor.isSetter && property.setter == null;
}
- if (reference.element == null) {
- reference.element = property;
- properties.add(property);
-
- property.enclosingElement = enclosingElement;
- property.isSynthetic = true;
+ final PropertyInducingElementImpl property;
+ final reference = containerRef.getChild(name);
+ final existing = reference.element;
+ if (enclosingElement is CompilationUnitElementImpl) {
+ if (existing is TopLevelVariableElementImpl &&
+ canUseExisting(existing)) {
+ property = existing;
+ } else {
+ property = TopLevelVariableElementImpl(name, -1)
+ ..enclosingElement = enclosingElement
+ ..isSynthetic = true;
+ reference.element ??= property;
+ properties.add(property);
+ }
+ } else {
+ if (existing is FieldElementImpl && canUseExisting(existing)) {
+ property = existing;
+ } else {
+ property = FieldElementImpl(name, -1)
+ ..enclosingElement = enclosingElement
+ ..isStatic = accessor.isStatic
+ ..isSynthetic = true;
+ reference.element ??= property;
+ properties.add(property);
+ }
}
accessor.variable = property;
@@ -1550,7 +1552,7 @@
@override
void _read(element, reader) {
element.metadata = reader._readAnnotationList(
- unitElement: element.enclosingElement2,
+ unitElement: element.enclosingElement3,
);
_readTypeParameters(reader, element.typeParameters);
element.superclassConstraints = reader._readInterfaceTypeList();
@@ -1634,7 +1636,7 @@
// TODO(scheglov) why to check for empty? If we have this flags.
if (arguments.isNotEmpty) {
var typeParameters =
- (element.enclosingElement2 as TypeParameterizedElement)
+ (element.enclosingElement3 as TypeParameterizedElement)
.typeParameters;
var substitution = Substitution.fromPairs(typeParameters, arguments);
element =
diff --git a/pkg/analyzer/lib/src/summary2/bundle_writer.dart b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
index d3d4cc2..833951d 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
@@ -847,7 +847,7 @@
return const [];
}
- var enclosing = declaration.enclosingElement2;
+ var enclosing = declaration.enclosingElement3;
if (enclosing is TypeParameterizedElement) {
if (enclosing is! ClassElement && enclosing is! ExtensionElement) {
return const <DartType>[];
diff --git a/pkg/analyzer/lib/src/summary2/default_types_builder.dart b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
index ec3ff9a..4ddea78 100644
--- a/pkg/analyzer/lib/src/summary2/default_types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
@@ -119,7 +119,7 @@
if (typeParametersByName == null) {
typeParametersByName = {};
for (var parameterNode in typeParameters) {
- var name = parameterNode.name.name;
+ var name = parameterNode.name2.lexeme;
typeParametersByName[name] = parameterNode;
}
}
diff --git a/pkg/analyzer/lib/src/summary2/element_builder.dart b/pkg/analyzer/lib/src/summary2/element_builder.dart
index 08751df..446b4d1 100644
--- a/pkg/analyzer/lib/src/summary2/element_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/element_builder.dart
@@ -88,17 +88,17 @@
@override
void visitClassDeclaration(covariant ClassDeclarationImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
- var element = ClassElementImpl(name, nameNode.offset);
+ var element = ClassElementImpl(name, nameToken.offset);
element.isAbstract = node.abstractKeyword != null;
element.isMacro = node.macroKeyword != null;
element.metadata = _buildAnnotations(node.metadata);
_setCodeRange(element, node);
_setDocumentation(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_linker.elementNodes[element] = node;
var reference = _enclosingContext.addClass(name, element);
@@ -121,10 +121,10 @@
@override
void visitClassTypeAlias(covariant ClassTypeAliasImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
- var element = ClassElementImpl(name, nameNode.offset);
+ var element = ClassElementImpl(name, nameToken.offset);
element.isAbstract = node.abstractKeyword != null;
element.isMacro = node.macroKeyword != null;
element.isMixinApplication = true;
@@ -132,7 +132,7 @@
_setCodeRange(element, node);
_setDocumentation(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_linker.elementNodes[element] = node;
var reference = _enclosingContext.addClass(name, element);
@@ -156,8 +156,8 @@
void visitConstructorDeclaration(
covariant ConstructorDeclarationImpl node,
) {
- var nameNode = node.name ?? node.returnType;
- var name = node.name?.name ?? '';
+ var nameNode = node.name2 ?? node.returnType;
+ var name = node.name2?.lexeme ?? '';
if (name == 'new') {
// A constructor declared as `C.new` is unnamed, and is modeled as such.
name = '';
@@ -196,8 +196,8 @@
@override
void visitEnumDeclaration(covariant EnumDeclarationImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameNode = node.name2;
+ var name = nameNode.lexeme;
var nameOffset = nameNode.offset;
var element = EnumElementImpl(name, nameOffset);
@@ -205,7 +205,7 @@
_setCodeRange(element, node);
_setDocumentation(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_linker.elementNodes[element] = node;
var reference = _enclosingContext.addEnum(name, element);
@@ -222,8 +222,8 @@
var valuesElements = <Expression>[];
for (var i = 0; i < constants.length; ++i) {
var constant = constants[i];
- var name = constant.name.name;
- var field = ConstFieldElementImpl(name, constant.name.offset)
+ var name = constant.name2.lexeme;
+ var field = ConstFieldElementImpl(name, constant.name2.offset)
..hasImplicitType = true
..hasInitializer = true
..isConst = true
@@ -265,14 +265,19 @@
),
);
- var variableDeclaration = astFactory.variableDeclaration(
- astFactory.simpleIdentifier(
+ var variableDeclaration = VariableDeclarationImpl(
+ name: astFactory.simpleIdentifier(
StringToken(TokenType.STRING, name, -1),
),
- Tokens.eq(),
- initializer,
+ equals: Tokens.eq(),
+ initializer: initializer,
);
- astFactory.variableDeclarationList2(
+ VariableDeclarationListImpl(
+ comment: null,
+ metadata: null,
+ lateKeyword: null,
+ keyword: null,
+ type: null,
variables: [variableDeclaration],
);
_linker.elementNodes[field] = variableDeclaration;
@@ -303,12 +308,12 @@
);
valuesField.constantInitializer = initializer;
- var variableDeclaration = astFactory.variableDeclaration(
- astFactory.simpleIdentifier(
+ var variableDeclaration = VariableDeclarationImpl(
+ name: astFactory.simpleIdentifier(
StringToken(TokenType.STRING, 'values', -1),
),
- Tokens.eq(),
- initializer,
+ equals: Tokens.eq(),
+ initializer: initializer,
);
valuesTypeNode = astFactory.namedType(
name: astFactory.simpleIdentifier(
@@ -326,7 +331,10 @@
Tokens.gt(),
),
);
- astFactory.variableDeclarationList2(
+ VariableDeclarationListImpl(
+ comment: null,
+ metadata: null,
+ lateKeyword: null,
keyword: Tokens.const_(),
variables: [variableDeclaration],
type: valuesTypeNode,
@@ -389,9 +397,9 @@
@override
void visitExtensionDeclaration(covariant ExtensionDeclarationImpl node) {
- var nodeName = node.name;
- var name = nodeName?.name;
- var nameOffset = nodeName?.offset ?? -1;
+ var nameToken = node.name2;
+ var name = nameToken?.lexeme;
+ var nameOffset = nameToken?.offset ?? -1;
var element = ExtensionElementImpl(name, nameOffset);
element.metadata = _buildAnnotations(node.metadata);
@@ -437,9 +445,10 @@
) {
var metadata = _buildAnnotations(node.metadata);
for (var variable in node.fields.variables) {
- var nameNode = variable.name as SimpleIdentifierImpl;
- var name = nameNode.name;
- var nameOffset = nameNode.offset;
+ variable as VariableDeclarationImpl;
+ var nameToken = variable.name2;
+ var name = nameToken.lexeme;
+ var nameOffset = nameToken.offset;
FieldElementImpl element;
if (_shouldBeConstField(node)) {
@@ -469,7 +478,7 @@
_enclosingContext.addNonSyntheticField(element);
_linker.elementNodes[element] = variable;
- nameNode.staticElement = element;
+ variable.declaredElement = element;
}
_buildType(node.fields.type);
}
@@ -478,9 +487,9 @@
void visitFieldFormalParameter(
covariant FieldFormalParameterImpl node,
) {
- var nameNode = node.identifier;
- var name = nameNode.name;
- var nameOffset = nameNode.offset;
+ var nameToken = node.name;
+ var name = nameToken.lexeme;
+ var nameOffset = nameToken.offset;
ParameterElementImpl element;
var parent = node.parent;
@@ -505,7 +514,7 @@
element.metadata = _buildAnnotations(node.metadata);
_setCodeRange(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
// TODO(scheglov) check that we don't set reference for parameters
var fakeReference = Reference.root();
@@ -534,9 +543,9 @@
@override
void visitFunctionDeclaration(covariant FunctionDeclarationImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
- var nameOffset = nameNode.offset;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
+ var nameOffset = nameToken.offset;
var functionExpression = node.functionExpression;
var body = functionExpression.body;
@@ -576,7 +585,7 @@
_setCodeRange(executableElement, node);
_setDocumentation(executableElement, node);
- nameNode.staticElement = executableElement;
+ node.declaredElement = executableElement;
_linker.elementNodes[executableElement] = node;
_buildExecutableElementChildren(
@@ -597,16 +606,16 @@
@override
void visitFunctionTypeAlias(covariant FunctionTypeAliasImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
- var element = TypeAliasElementImpl(name, nameNode.offset);
+ var element = TypeAliasElementImpl(name, nameToken.offset);
element.isFunctionTypeAliasBased = true;
element.metadata = _buildAnnotations(node.metadata);
_setCodeRange(element, node);
_setDocumentation(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_linker.elementNodes[element] = node;
var reference = _enclosingContext.addTypeAlias(name, element);
@@ -620,7 +629,7 @@
});
var aliasedElement = GenericFunctionTypeElementImpl.forOffset(
- node.name.offset,
+ nameToken.offset,
);
aliasedElement.parameters = holder.parameters;
@@ -632,9 +641,9 @@
void visitFunctionTypedFormalParameter(
covariant FunctionTypedFormalParameterImpl node,
) {
- var nameNode = node.identifier;
- var name = nameNode.name;
- var nameOffset = nameNode.offset;
+ var nameToken = node.name;
+ var name = nameToken.lexeme;
+ var nameOffset = nameToken.offset;
ParameterElementImpl element;
var parent = node.parent;
@@ -658,7 +667,7 @@
element.metadata = _buildAnnotations(node.metadata);
_setCodeRange(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_linker.elementNodes[element] = node;
_enclosingContext.addParameter(name, element);
@@ -706,15 +715,15 @@
@override
void visitGenericTypeAlias(covariant GenericTypeAliasImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
- var element = TypeAliasElementImpl(name, nameNode.offset);
+ var element = TypeAliasElementImpl(name, nameToken.offset);
element.metadata = _buildAnnotations(node.metadata);
_setCodeRange(element, node);
_setDocumentation(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_linker.elementNodes[element] = node;
var reference = _enclosingContext.addTypeAlias(name, element);
@@ -768,9 +777,9 @@
@override
void visitMethodDeclaration(covariant MethodDeclarationImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
- var nameOffset = nameNode.offset;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
+ var nameOffset = nameToken.offset;
Reference reference;
ExecutableElementImpl executableElement;
@@ -827,7 +836,7 @@
_setCodeRange(executableElement, node);
_setDocumentation(executableElement, node);
- nameNode.staticElement = executableElement;
+ node.declaredElement = executableElement;
_linker.elementNodes[executableElement] = node;
_buildExecutableElementChildren(
@@ -842,15 +851,15 @@
@override
void visitMixinDeclaration(covariant MixinDeclarationImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
- var element = MixinElementImpl(name, nameNode.offset);
+ var element = MixinElementImpl(name, nameToken.offset);
element.metadata = _buildAnnotations(node.metadata);
_setCodeRange(element, node);
_setDocumentation(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_linker.elementNodes[element] = node;
var reference = _enclosingContext.addMixin(name, element);
@@ -903,9 +912,9 @@
void visitSimpleFormalParameter(
covariant SimpleFormalParameterImpl node,
) {
- var nameNode = node.identifier;
- var name = nameNode?.name ?? '';
- var nameOffset = nameNode?.offset ?? -1;
+ var nameToken = node.name;
+ var name = nameToken?.lexeme ?? '';
+ var nameOffset = nameToken?.offset ?? -1;
ParameterElementImpl element;
var parent = node.parent;
@@ -934,7 +943,6 @@
_setCodeRange(element, node);
node.declaredElement = element;
- nameNode?.staticElement = element;
_buildType(node.type);
}
@@ -943,9 +951,9 @@
void visitSuperFormalParameter(
covariant SuperFormalParameterImpl node,
) {
- var nameNode = node.identifier;
- var name = nameNode.name;
- var nameOffset = nameNode.offset;
+ var nameToken = node.name;
+ var name = nameToken.lexeme;
+ var nameOffset = nameToken.offset;
SuperFormalParameterElementImpl element;
var parent = node.parent;
@@ -970,7 +978,7 @@
element.metadata = _buildAnnotations(node.metadata);
_setCodeRange(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
// TODO(scheglov) check that we don't set reference for parameters
var fakeReference = Reference.root();
@@ -1000,9 +1008,10 @@
var metadata = _buildAnnotations(node.metadata);
for (var variable in node.variables.variables) {
- var nameNode = variable.name as SimpleIdentifierImpl;
- var name = nameNode.name;
- var nameOffset = nameNode.offset;
+ variable as VariableDeclarationImpl;
+ var nameToken = variable.name2;
+ var name = nameToken.lexeme;
+ var nameOffset = nameToken.offset;
TopLevelVariableElementImpl element;
if (node.variables.isConst) {
@@ -1029,7 +1038,7 @@
_linker.elementNodes[element] = variable;
_enclosingContext.addTopLevelVariable(name, element);
- nameNode.staticElement = element;
+ variable.declaredElement = element;
var getter = element.getter;
if (getter is PropertyAccessorElementImpl) {
@@ -1054,14 +1063,14 @@
@override
void visitTypeParameter(covariant TypeParameterImpl node) {
- var nameNode = node.name;
- var name = nameNode.name;
+ var nameToken = node.name2;
+ var name = nameToken.lexeme;
- var element = TypeParameterElementImpl(name, nameNode.offset);
+ var element = TypeParameterElementImpl(name, nameToken.offset);
element.metadata = _buildAnnotations(node.metadata);
_setCodeRange(element, node);
- nameNode.staticElement = element;
+ node.declaredElement = element;
_linker.elementNodes[element] = node;
_enclosingContext.addTypeParameter(name, element);
@@ -1134,27 +1143,32 @@
var enclosingRef = _enclosingContext.reference;
var enclosingElement = _enclosingContext.element;
- PropertyInducingElementImpl? property;
+ bool canUseExisting(PropertyInducingElement property) {
+ return property.isSynthetic ||
+ accessorElement.isSetter && property.setter == null;
+ }
+
+ final PropertyInducingElementImpl property;
if (enclosingElement is CompilationUnitElement) {
- var containerRef = enclosingRef.getChild('@variable');
- var propertyRef = containerRef.getChild(name);
- property = propertyRef.element as PropertyInducingElementImpl?;
- if (property == null) {
- var variable = TopLevelVariableElementImpl(name, -1);
- variable.isSynthetic = true;
+ final reference = enclosingRef.getChild('@variable').getChild(name);
+ final existing = reference.element;
+ if (existing is TopLevelVariableElementImpl && canUseExisting(existing)) {
+ property = existing;
+ } else {
+ final variable = property = TopLevelVariableElementImpl(name, -1)
+ ..isSynthetic = true;
_enclosingContext.addTopLevelVariable(name, variable);
- property = variable;
}
} else {
- var containerRef = enclosingRef.getChild('@field');
- var propertyRef = containerRef.getChild(name);
- property = propertyRef.element as PropertyInducingElementImpl?;
- if (property == null) {
- var field = FieldElementImpl(name, -1);
- field.isSynthetic = true;
- field.isStatic = accessorElement.isStatic;
+ final reference = enclosingRef.getChild('@field').getChild(name);
+ final existing = reference.element;
+ if (existing is FieldElementImpl && canUseExisting(existing)) {
+ property = existing;
+ } else {
+ final field = property = FieldElementImpl(name, -1)
+ ..isStatic = accessorElement.isStatic
+ ..isSynthetic = true;
_enclosingContext.addField(name, field);
- property = field;
}
}
diff --git a/pkg/analyzer/lib/src/summary2/function_type_builder.dart b/pkg/analyzer/lib/src/summary2/function_type_builder.dart
index 4ab0f6a..8ecabb3 100644
--- a/pkg/analyzer/lib/src/summary2/function_type_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/function_type_builder.dart
@@ -150,7 +150,7 @@
) {
return node.parameters.asImpl.map((parameter) {
return ParameterElementImpl.synthetic(
- parameter.identifier?.name ?? '',
+ parameter.name?.lexeme ?? '',
_getParameterType(isNNBD, parameter),
parameter.kind,
);
diff --git a/pkg/analyzer/lib/src/summary2/informative_data.dart b/pkg/analyzer/lib/src/summary2/informative_data.dart
index 5b53526..482012f 100644
--- a/pkg/analyzer/lib/src/summary2/informative_data.dart
+++ b/pkg/analyzer/lib/src/summary2/informative_data.dart
@@ -78,7 +78,7 @@
var unitReader = SummaryDataReader(unitInfoBytes);
var unitInfo = _InfoUnit(unitReader);
- final enclosing = unitElement.enclosingElement2;
+ final enclosing = unitElement.enclosingElement3;
if (enclosing is LibraryElementImpl) {
if (identical(enclosing.definingCompilationUnit, unitElement)) {
_applyToLibrary(enclosing, unitInfo);
@@ -1116,7 +1116,7 @@
sink.writeList2<ClassDeclaration>(unit.declarations, (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
_writeConstructors(node.members);
@@ -1132,7 +1132,7 @@
sink.writeList2<ClassTypeAlias>(unit.declarations, (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
_writeOffsets(
@@ -1144,7 +1144,7 @@
sink.writeList2<EnumDeclaration>(unit.declarations, (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
_writeConstructors(node.members);
@@ -1161,7 +1161,7 @@
sink.writeList2<ExtensionDeclaration>(unit.declarations, (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(1 + (node.name?.offset ?? -1));
+ sink.writeUInt30(1 + (node.name2?.offset ?? -1));
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
_writeConstructors(node.members);
@@ -1182,7 +1182,7 @@
(node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.functionExpression.typeParameters);
_writeFormalParameters(node.functionExpression.parameters);
@@ -1201,7 +1201,7 @@
.toList(), (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.functionExpression.typeParameters);
_writeFormalParameters(node.functionExpression.parameters);
@@ -1215,7 +1215,7 @@
sink.writeList2<FunctionTypeAlias>(unit.declarations, (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
_writeFormalParameters(node.parameters);
@@ -1230,7 +1230,7 @@
var aliasedType = node.type;
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
if (aliasedType is GenericFunctionType) {
@@ -1250,7 +1250,7 @@
sink.writeList2<MixinDeclaration>(unit.declarations, (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
_writeConstructors(node.members);
@@ -1293,7 +1293,7 @@
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
sink.writeOptionalUInt30(node.period?.offset);
- var nameNode = node.name ?? node.returnType;
+ var nameNode = node.name2 ?? node.returnType;
sink.writeUInt30(nameNode.offset);
sink.writeUInt30(nameNode.end);
_writeDocumentationComment(node);
@@ -1331,7 +1331,7 @@
var codeOffset = node.offset;
sink.writeUInt30(codeOffset);
sink.writeUInt30(node.end - codeOffset);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeOffsets(
metadata: node.metadata,
@@ -1348,7 +1348,7 @@
var codeOffset = _codeOffsetForVariable(node);
sink.writeUInt30(codeOffset);
sink.writeUInt30(node.end - codeOffset);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
// TODO(scheglov) Replace with some kind of double-iterating list.
@@ -1375,7 +1375,7 @@
sink.writeList<FormalParameter>(parameters, (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(1 + (node.identifier?.offset ?? -1));
+ sink.writeUInt30(1 + (node.name?.offset ?? -1));
var notDefault = node.notDefault;
if (notDefault is FieldFormalParameter) {
@@ -1403,7 +1403,7 @@
(node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
_writeFormalParameters(node.parameters);
@@ -1449,7 +1449,7 @@
(node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
_writeTypeParameters(node.typeParameters);
_writeFormalParameters(node.parameters);
@@ -1537,7 +1537,7 @@
var codeOffset = _codeOffsetForVariable(node);
sink.writeUInt30(codeOffset);
sink.writeUInt30(node.end - codeOffset);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
_writeDocumentationComment(node);
// TODO(scheglov) Replace with some kind of double-iterating list.
@@ -1554,7 +1554,7 @@
sink.writeList<TypeParameter>(parameters, (node) {
sink.writeUInt30(node.offset);
sink.writeUInt30(node.length);
- sink.writeUInt30(node.name.offset);
+ sink.writeUInt30(node.name2.offset);
});
}
}
@@ -1794,7 +1794,7 @@
super.visitSimpleFormalParameter(node);
var element = node.declaredElement;
- var identifier = node.identifier;
+ var identifier = node.name;
if (element is ParameterElementImpl && identifier != null) {
element.nameOffset = identifier.offset;
}
diff --git a/pkg/analyzer/lib/src/summary2/macro_declarations.dart b/pkg/analyzer/lib/src/summary2/macro_declarations.dart
index 8a7f6e6..079a09a 100644
--- a/pkg/analyzer/lib/src/summary2/macro_declarations.dart
+++ b/pkg/analyzer/lib/src/summary2/macro_declarations.dart
@@ -7,6 +7,7 @@
import 'package:_fe_analyzer_shared/src/macros/executor/remote_instance.dart'
as macro;
import 'package:analyzer/dart/ast/ast.dart' as ast;
+import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -37,13 +38,18 @@
/// mixins, etc.
void transferToElements() {
// TODO(scheglov) Make sure that these are only declarations?
- for (final entry in fromNode._identifierMap.entries) {
+ for (final entry in fromNode._referencedIdentifierMap.entries) {
final element = entry.key.staticElement;
if (element != null) {
final declaration = entry.value;
fromElement._identifierMap[element] = declaration;
}
}
+ for (final entry in fromNode._declaredIdentifierMap.entries) {
+ final element = entry.key;
+ final declaration = entry.value;
+ fromElement._identifierMap[element] = declaration;
+ }
for (final entry in fromNode._classMap.entries) {
final element = entry.key.declaredElement as ClassElement;
@@ -110,7 +116,7 @@
FieldDeclarationImpl _fieldElement(FieldElement element) {
assert(!_fieldMap.containsKey(element));
- final enclosingClass = element.enclosingElement2 as ClassElement;
+ final enclosingClass = element.enclosingElement3 as ClassElement;
return FieldDeclarationImpl(
id: macro.RemoteInstance.uniqueId,
identifier: identifier(element),
@@ -157,9 +163,11 @@
}
class DeclarationBuilderFromNode {
- final Map<ast.SimpleIdentifier, IdentifierImpl> _identifierMap =
+ final Map<ast.SimpleIdentifier, IdentifierImpl> _referencedIdentifierMap =
Map.identity();
+ final Map<Element, IdentifierImpl> _declaredIdentifierMap = Map.identity();
+
final Map<ast.ClassDeclaration, IntrospectableClassDeclarationImpl>
_classMap = Map.identity();
@@ -169,6 +177,14 @@
return _classMap[node] ??= _introspectableClassDeclaration(node);
}
+ macro.IdentifierImpl _declaredIdentifier(Token name, Element element) {
+ return _declaredIdentifierMap[element] ??= _DeclaredIdentifierImpl(
+ id: macro.RemoteInstance.uniqueId,
+ name: name.lexeme,
+ element: element,
+ );
+ }
+
macro.FunctionTypeParameterImpl _formalParameter(
ast.FormalParameter node,
) {
@@ -187,32 +203,18 @@
id: macro.RemoteInstance.uniqueId,
isNamed: node.isNamed,
isRequired: node.isRequired,
- name: node.identifier?.name,
+ name: node.name?.lexeme,
type: typeAnnotation,
);
}
- macro.IdentifierImpl _identifier(ast.Identifier node) {
- final ast.SimpleIdentifier simpleIdentifier;
- if (node is ast.SimpleIdentifier) {
- simpleIdentifier = node;
- } else {
- simpleIdentifier = (node as ast.PrefixedIdentifier).identifier;
- }
- return _identifierMap[simpleIdentifier] ??= IdentifierImplFromNode(
- id: macro.RemoteInstance.uniqueId,
- name: simpleIdentifier.name,
- node: simpleIdentifier,
- );
- }
-
IntrospectableClassDeclarationImpl _introspectableClassDeclaration(
ast.ClassDeclaration node,
) {
assert(!_classMap.containsKey(node));
return IntrospectableClassDeclarationImpl._(
id: macro.RemoteInstance.uniqueId,
- identifier: _identifier(node.name),
+ identifier: _declaredIdentifier(node.name2, node.declaredElement!),
typeParameters: _typeParameters(node.typeParameters),
interfaces: _typeAnnotations(node.implementsClause?.interfaces),
isAbstract: node.abstractKeyword != null,
@@ -224,6 +226,21 @@
);
}
+ macro.IdentifierImpl _referencedIdentifier(ast.Identifier node) {
+ final ast.SimpleIdentifier simpleIdentifier;
+ if (node is ast.SimpleIdentifier) {
+ simpleIdentifier = node;
+ } else {
+ simpleIdentifier = (node as ast.PrefixedIdentifier).identifier;
+ }
+ return _referencedIdentifierMap[simpleIdentifier] ??=
+ _ReferencedIdentifierImpl(
+ id: macro.RemoteInstance.uniqueId,
+ name: simpleIdentifier.name,
+ node: simpleIdentifier,
+ );
+ }
+
T _typeAnnotation<T extends macro.TypeAnnotationImpl>(
ast.TypeAnnotation? node) {
if (node == null) {
@@ -248,7 +265,7 @@
} else if (node is ast.NamedType) {
return macro.NamedTypeAnnotationImpl(
id: macro.RemoteInstance.uniqueId,
- identifier: _identifier(node.name),
+ identifier: _referencedIdentifier(node.name),
isNullable: node.question != null,
typeArguments: _typeAnnotations(node.typeArguments?.arguments),
) as T;
@@ -273,7 +290,7 @@
) {
return macro.TypeParameterDeclarationImpl(
id: macro.RemoteInstance.uniqueId,
- identifier: _identifier(node.name),
+ identifier: _declaredIdentifier(node.name2, node.declaredElement!),
bound: node.bound.mapOrNull(_typeAnnotation),
);
}
@@ -322,19 +339,6 @@
});
}
-class IdentifierImplFromNode extends IdentifierImpl {
- final ast.SimpleIdentifier node;
-
- IdentifierImplFromNode({
- required super.id,
- required super.name,
- required this.node,
- });
-
- @override
- Element? get element => node.staticElement;
-}
-
class IntrospectableClassDeclarationImpl
extends macro.IntrospectableClassDeclarationImpl {
late final ClassElement element;
@@ -351,6 +355,30 @@
});
}
+class _DeclaredIdentifierImpl extends IdentifierImpl {
+ @override
+ final Element element;
+
+ _DeclaredIdentifierImpl({
+ required super.id,
+ required super.name,
+ required this.element,
+ });
+}
+
+class _ReferencedIdentifierImpl extends IdentifierImpl {
+ final ast.SimpleIdentifier node;
+
+ _ReferencedIdentifierImpl({
+ required super.id,
+ required super.name,
+ required this.node,
+ });
+
+ @override
+ Element? get element => node.staticElement;
+}
+
extension<T> on T? {
R? mapOrNull<R>(R Function(T) mapper) {
final self = this;
diff --git a/pkg/analyzer/lib/src/summary2/named_type_builder.dart b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
index 9b4f698..184476e 100644
--- a/pkg/analyzer/lib/src/summary2/named_type_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
@@ -247,7 +247,7 @@
List<ParameterElementImpl> _formalParameters(FormalParameterList node) {
return node.parameters.asImpl.map((parameter) {
return ParameterElementImpl.synthetic(
- parameter.identifier?.name ?? '',
+ parameter.name?.lexeme ?? '',
_buildFormalParameterType(parameter),
parameter.kind,
);
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index dd7cae3..1b096ae 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -47,7 +47,7 @@
unit.extensions.forEach(_resolveExtensionFields);
unit.mixins.forEach(_resolveClassFields);
- _scope = unit.enclosingElement2.scope;
+ _scope = unit.enclosingElement3.scope;
unit.topLevelVariables.forEach(_resolveVariable);
}
}
@@ -174,8 +174,8 @@
}
}
- var classElement = _constructor.enclosingElement2;
- if (classElement.isMixinApplication) {
+ var classElement = _constructor.enclosingElement3;
+ if (classElement is ClassElement && classElement.isMixinApplication) {
var superType = classElement.supertype;
if (superType != null) {
var index = classElement.constructors.indexOf(_constructor);
@@ -285,7 +285,7 @@
_set.add(element);
- if (element.enclosingElement2.typeParameters.isNotEmpty) {
+ if (element.enclosingElement3.typeParameters.isNotEmpty) {
node.argumentList.accept(this);
}
}
@@ -356,7 +356,7 @@
unit.extensions.forEach(_addExtensionElementFields);
unit.mixins.forEach(_addClassElementFields);
- _scope = unit.enclosingElement2.scope;
+ _scope = unit.enclosingElement3.scope;
for (var element in unit.topLevelVariables) {
_addVariableNode(element);
}
@@ -455,7 +455,7 @@
@override
String get displayName {
- return _node.name.name;
+ return _node.name2.lexeme;
}
@override
@@ -526,7 +526,7 @@
}
void _resolveInitializer({required bool forDependencies}) {
- var enclosingElement = _element.enclosingElement2;
+ var enclosingElement = _element.enclosingElement3;
var enclosingClassElement =
enclosingElement is ClassElement ? enclosingElement : null;
var astResolver = AstResolver(_walker._linker, _unitElement, _scope,
diff --git a/pkg/analyzer/lib/src/summary2/types_builder.dart b/pkg/analyzer/lib/src/summary2/types_builder.dart
index 64d6087..28bb1b2 100644
--- a/pkg/analyzer/lib/src/summary2/types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/types_builder.dart
@@ -194,7 +194,7 @@
if (returnType == null) {
if (node.isSetter) {
returnType = _voidType;
- } else if (node.isOperator && node.name.name == '[]=') {
+ } else if (node.isOperator && node.name2.lexeme == '[]=') {
returnType = _voidType;
} else {
returnType = _dynamicType;
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index 8c0dcc9..df8f7f7 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
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/element/element.dart';
@@ -16,7 +17,7 @@
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart' show CompileTimeErrorCode;
-Element? _getKnownElement(Expression expression) {
+Element? _getKnownElement(SyntacticEntity expression) {
if (expression is ParenthesizedExpression) {
return _getKnownElement(expression.expression);
} else if (expression is NamedExpression) {
@@ -199,13 +200,21 @@
@override
void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
- _visitForEachParts(node, node.loopVariable.identifier);
+ _visitForEachParts(
+ node,
+ node.loopVariable.name,
+ node.loopVariable.declaredElement,
+ );
node.visitChildren(this);
}
@override
void visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
- _visitForEachParts(node, node.identifier);
+ _visitForEachParts(
+ node,
+ node.identifier.token,
+ node.identifier.staticElement,
+ );
node.visitChildren(this);
}
@@ -477,14 +486,16 @@
///
/// If [expr] does not require an implicit cast because it is not related to
/// [to] or is already a subtype of it, does nothing.
- void _checkImplicitCast(Expression expr,
+ void _checkImplicitCast(SyntacticEntity expr,
{required DartType to,
required DartType from,
bool opAssign = false,
bool forSpread = false,
bool forSpreadKey = false,
bool forSpreadValue = false}) {
- expr = expr.unParenthesized;
+ if (expr is Expression) {
+ expr = expr.unParenthesized;
+ }
if (_needsImplicitCast(expr, to: to, from: from) == true) {
_recordImplicitCast(expr, to,
from: from,
@@ -635,7 +646,7 @@
/// downcast implicitly).
///
/// If [from] is omitted, uses the static type of [expr]
- bool? _needsImplicitCast(Expression expr,
+ bool? _needsImplicitCast(SyntacticEntity expr,
{required DartType from, required DartType to}) {
// Void is considered Top, but may only be *explicitly* cast.
if (from.isVoid) return null;
@@ -674,7 +685,7 @@
///
/// This will emit the appropriate error/warning/hint message as well as mark
/// the AST node.
- void _recordImplicitCast(Expression expr, DartType to,
+ void _recordImplicitCast(SyntacticEntity expr, DartType to,
{required DartType from,
bool opAssign = false,
bool forSpread = false,
@@ -748,7 +759,7 @@
}
void _recordMessage(
- AstNode node, ErrorCode errorCode, List<Object> arguments) {
+ SyntacticEntity node, ErrorCode errorCode, List<Object> arguments) {
var argumentStrings = [
for (var argument in arguments)
if (argument is DartType)
@@ -761,16 +772,18 @@
? node.firstTokenAfterCommentAndMetadata.offset
: node.offset;
int length = node.end - begin;
- var source = (node.root as CompilationUnit).declaredElement!.source;
- _errorReporter.reportError(
- AnalysisError(source, begin, length, errorCode, argumentStrings));
+ _errorReporter.reportErrorForOffset(
+ errorCode, begin, length, argumentStrings);
}
- void _visitForEachParts(ForEachParts node, SimpleIdentifier loopVariable) {
- if (loopVariable.staticElement is! VariableElement) {
+ void _visitForEachParts(
+ ForEachParts node,
+ Token loopVariable,
+ Element? loopVariableElement,
+ ) {
+ if (loopVariableElement is! VariableElement) {
return;
}
- var loopVariableElement = loopVariable.staticElement as VariableElement;
// Safely handle malformed statements.
Token? awaitKeyword;
diff --git a/pkg/analyzer/lib/src/task/strong_mode.dart b/pkg/analyzer/lib/src/task/strong_mode.dart
index 038c167..d0b5ca2 100644
--- a/pkg/analyzer/lib/src/task/strong_mode.dart
+++ b/pkg/analyzer/lib/src/task/strong_mode.dart
@@ -424,7 +424,7 @@
var conflict = conflicts.single;
if (conflict is CandidatesConflict) {
conflictExplanation = conflict.candidates.map((candidate) {
- var className = candidate.enclosingElement2.name;
+ var className = candidate.enclosingElement3.name;
var typeStr = candidate.type.getDisplayString(
withNullability: typeSystem.isNonNullableByDefault,
);
@@ -540,7 +540,7 @@
overridden = overridden.declaration;
// Skip Object itself.
- var enclosingElement = overridden.enclosingElement2;
+ var enclosingElement = overridden.enclosingElement3;
if (enclosingElement is ClassElement &&
enclosingElement.isDartCoreObject) {
continue;
diff --git a/pkg/analyzer/lib/src/test_utilities/find_node.dart b/pkg/analyzer/lib/src/test_utilities/find_node.dart
index 5ffa874..6638cab 100644
--- a/pkg/analyzer/lib/src/test_utilities/find_node.dart
+++ b/pkg/analyzer/lib/src/test_utilities/find_node.dart
@@ -509,7 +509,7 @@
for (var declaration in unit.declarations) {
if (declaration is TopLevelVariableDeclaration) {
for (var variable in declaration.variables.variables) {
- if (variable.name.name == name) {
+ if (variable.name2.lexeme == name) {
return variable;
}
}
diff --git a/pkg/analyzer/lib/src/util/ast_data_extractor.dart b/pkg/analyzer/lib/src/util/ast_data_extractor.dart
index 6574c92..199f082 100644
--- a/pkg/analyzer/lib/src/util/ast_data_extractor.dart
+++ b/pkg/analyzer/lib/src/util/ast_data_extractor.dart
@@ -8,7 +8,7 @@
import 'package:analyzer/dart/element/element.dart';
MemberId computeMemberId(Element element) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is CompilationUnitElement) {
var memberName = element.name!;
if (element is PropertyAccessorElement && element.isSetter) {
diff --git a/pkg/analyzer/test/dart/ast/ast_test.dart b/pkg/analyzer/test/dart/ast/ast_test.dart
index f70c0a3..a569500 100644
--- a/pkg/analyzer/test/dart/ast/ast_test.dart
+++ b/pkg/analyzer/test/dart/ast/ast_test.dart
@@ -235,7 +235,7 @@
void test_endToken_noParameters() {
FieldFormalParameter parameter =
AstTestFactory.fieldFormalParameter2('field');
- expect(parameter.endToken, parameter.identifier.endToken);
+ expect(parameter.endToken, parameter.name);
}
void test_endToken_parameters() {
@@ -1493,6 +1493,7 @@
expect(identifier.inGetterContext(), isFalse);
}
+ @deprecated
void test_inGetterContext_fieldFormalParameter() {
FieldFormalParameter parameter =
AstTestFactory.fieldFormalParameter2('test');
@@ -1509,12 +1510,6 @@
expect(identifier.inGetterContext(), isFalse);
}
- void test_inGetterContext_variableDeclaration() {
- VariableDeclaration variable = AstTestFactory.variableDeclaration('test');
- SimpleIdentifier identifier = variable.name;
- expect(identifier.inGetterContext(), isFalse);
- }
-
void test_inReferenceContext() {
SimpleIdentifier identifier = AstTestFactory.identifier3("id");
AstTestFactory.namedExpression(
@@ -2110,7 +2105,7 @@
void test_endToken_noParameters() {
SuperFormalParameter parameter =
AstTestFactory.superFormalParameter2('field');
- expect(parameter.endToken, parameter.identifier.endToken);
+ expect(parameter.endToken, parameter.name);
}
void test_endToken_parameters() {
diff --git a/pkg/analyzer/test/error/error_test.dart b/pkg/analyzer/test/error/error_test.dart
index bc0e269..d766e0e 100644
--- a/pkg/analyzer/test/error/error_test.dart
+++ b/pkg/analyzer/test/error/error_test.dart
@@ -38,13 +38,13 @@
var extendsClause = declaration.extendsClause;
if (extendsClause != null &&
extendsClause.superclass.name.name == 'ErrorCode') {
- String className = declaration.name.name;
+ String className = declaration.name2.lexeme;
for (ClassMember member in declaration.members) {
if (member is FieldDeclaration && member.isStatic) {
var fields = member.fields;
if ((fields.type == null ? bad() : true) &&
fields.type!.toSource() == className) {
- String fieldName = fields.variables[0].name.name;
+ String fieldName = fields.variables[0].name2.lexeme;
declaredCodes.add('$className.$fieldName');
}
}
@@ -61,7 +61,7 @@
TopLevelVariableDeclaration declaration = listingUnit.declarations
.whereType<TopLevelVariableDeclaration>()
.firstWhere((member) =>
- member.variables.variables[0].name.name == 'errorCodeValues');
+ member.variables.variables[0].name2.lexeme == 'errorCodeValues');
var listLiteral =
declaration.variables.variables[0].initializer as ListLiteral;
for (var element in listLiteral.elements.cast<PrefixedIdentifier>()) {
diff --git a/pkg/analyzer/test/generated/class_member_parser_test.dart b/pkg/analyzer/test/generated/class_member_parser_test.dart
index 7b39f70..7d55bed 100644
--- a/pkg/analyzer/test/generated/class_member_parser_test.dart
+++ b/pkg/analyzer/test/generated/class_member_parser_test.dart
@@ -39,7 +39,7 @@
expect(constructor.externalKeyword, isNull);
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.period, isNull);
expect(constructor.returnType, isNotNull);
@@ -96,7 +96,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name.name, 'late');
+ expect(method.name2.lexeme, 'late');
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -295,7 +295,7 @@
expect(constructor.externalKeyword, isNull);
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.period, isNull);
expect(constructor.returnType, isNotNull);
@@ -389,7 +389,7 @@
expect(constructor.externalKeyword, isNull);
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.period, isNull);
expect(constructor.returnType, isNotNull);
@@ -417,7 +417,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseClassMember_field_generic() {
@@ -452,7 +452,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseClassMember_field_gftType_gftReturnType() {
@@ -499,8 +499,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
- _assertIsDeclarationName(variable.name);
+ expect(variable.name2, isNotNull);
}
void test_parseClassMember_field_namedGet() {
@@ -525,7 +524,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseClassMember_field_namedOperator() {
@@ -550,7 +549,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseClassMember_field_namedOperator_withAssignment() {
@@ -575,7 +574,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
expect(variable.initializer, isNotNull);
}
@@ -601,7 +600,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseClassMember_field_nameKeyword() {
@@ -651,7 +650,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseClassMember_finalAndCovariantLateWithInitializer() {
@@ -677,7 +676,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNotNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.body, isNotNull);
expect(method.parameters, isNull);
@@ -695,8 +694,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNotNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
- _assertIsDeclarationName(method.name);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.body, isNotNull);
expect(method.parameters, isNull);
@@ -712,8 +710,7 @@
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNotNull);
expect(method.modifierKeyword, isNull);
- expect(method.name, isNotNull);
- _assertIsDeclarationName(method.name);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -737,7 +734,7 @@
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNotNull);
expect(method.modifierKeyword, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -757,7 +754,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
expect(method.parameters, isNotNull);
@@ -776,7 +773,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
@@ -802,7 +799,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
expect(method.parameters, isNotNull);
@@ -821,11 +818,11 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect((method.returnType as NamedType).name.name, 'T');
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
TypeParameter tp = method.typeParameters!.typeParameters[0];
- expect(tp.name.name, 'T');
+ expect(tp.name2.lexeme, 'T');
expect(tp.extendsKeyword, isNotNull);
expect((tp.bound as NamedType).name.name, 'num');
expect(method.parameters, isNotNull);
@@ -855,7 +852,7 @@
expect((typeArguments[1] as NamedType).name.name, 'T');
}
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
expect(method.parameters, isNotNull);
@@ -875,7 +872,7 @@
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
expect((method.returnType as NamedType).name.name, 'T');
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
expect(method.parameters, isNotNull);
@@ -894,7 +891,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
expect(method.parameters, isNotNull);
@@ -913,7 +910,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -934,7 +931,7 @@
expect(method.modifierKeyword, isNotNull);
expect(method.propertyKeyword, isNotNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNull);
@@ -953,7 +950,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -972,7 +969,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1065,7 +1062,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1084,7 +1081,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1103,7 +1100,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1122,8 +1119,8 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
- expect(method.name.name, 'm');
+ expect(method.name2, isNotNull);
+ expect(method.name2.lexeme, 'm');
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1142,7 +1139,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1161,7 +1158,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1182,7 +1179,7 @@
expect(method.modifierKeyword, isNotNull);
expect(method.propertyKeyword, isNotNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1201,7 +1198,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1220,7 +1217,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1237,7 +1234,7 @@
expect(method.modifierKeyword, isNotNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1253,7 +1250,7 @@
expect(method.modifierKeyword, isNotNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1272,7 +1269,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1291,7 +1288,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isGenericFunctionType);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNotNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1314,7 +1311,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name.name, '>>>');
+ expect(method.name2.lexeme, '>>>');
expect(method.operatorKeyword, isNotNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1351,7 +1348,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNotNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1370,7 +1367,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNotNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1389,7 +1386,7 @@
expect(method.modifierKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name.name, '<');
+ expect(method.name2.lexeme, '<');
expect(method.operatorKeyword, isNotNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -1406,8 +1403,7 @@
expect(constructor.factoryKeyword!.keyword, Keyword.FACTORY);
expect(constructor.returnType.name, 'C');
expect(constructor.period, isNull);
- expect(constructor.name, isNull);
- _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator!.type, TokenType.EQ);
@@ -1429,7 +1425,7 @@
expect(constructor.factoryKeyword!.keyword, Keyword.FACTORY);
expect(constructor.returnType.name, 'C');
expect(constructor.period, isNull);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator, isNull);
@@ -1455,9 +1451,8 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword!.keyword, Keyword.FACTORY);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.period, isNull);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator!.type, TokenType.EQ);
@@ -1504,10 +1499,8 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNotNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.period!.type, TokenType.PERIOD);
- expect(constructor.name!.name, 'foo');
- _assertIsDeclarationName(constructor.name!);
+ expect(constructor.name2!.lexeme, 'foo');
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator, isNull);
@@ -1560,10 +1553,8 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.period!.type, TokenType.PERIOD);
- expect(constructor.name!.name, 'foo');
- _assertIsDeclarationName(constructor.name!);
+ expect(constructor.name2!.lexeme, 'foo');
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator, isNull);
@@ -1614,8 +1605,7 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator!.lexeme, ':');
@@ -1638,8 +1628,7 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator!.lexeme, ':');
@@ -1660,9 +1649,8 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.period, isNull);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator, isNull);
@@ -1795,7 +1783,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseField_external() {
@@ -1878,7 +1866,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseField_late() {
@@ -1902,7 +1890,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseField_late_const() {
@@ -1928,7 +1916,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseField_late_final() {
@@ -1952,7 +1940,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseField_late_var() {
@@ -1975,7 +1963,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseField_non_abstract() {
@@ -2021,7 +2009,7 @@
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
- expect(variable.name, isNotNull);
+ expect(variable.name2, isNotNull);
}
void test_parseGetter_identifier_colon_issue_36961() {
@@ -2038,7 +2026,7 @@
expect(constructor.body, isNotNull);
expect(constructor.documentationComment, isNull);
expect(constructor.externalKeyword, isNull);
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.returnType, isNotNull);
}
@@ -2052,7 +2040,7 @@
expectCommentText(method.documentationComment, '/// Doc');
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.parameters, isNull);
expect(method.propertyKeyword, isNotNull);
@@ -2068,7 +2056,7 @@
expectCommentText(method.documentationComment, '/// Doc');
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword!.lexeme, 'static');
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNull);
@@ -2115,7 +2103,7 @@
expectCommentText(method.documentationComment, '/// Doc');
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNotNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -2132,7 +2120,7 @@
expectCommentText(method.documentationComment, '/// Doc');
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -2149,7 +2137,7 @@
expectCommentText(method.documentationComment, '/// Doc');
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword!.lexeme, 'static');
- expect(method.name, isNotNull);
+ expect(method.name2, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
@@ -2169,11 +2157,6 @@
expectCommentText(parameter.documentationComment, '/// Doc');
}
- /// Assert that the given [name] is in declaration context.
- void _assertIsDeclarationName(SimpleIdentifier name, [bool expected = true]) {
- expect(name.inDeclarationContext(), expected);
- }
-
void _parseClassMember_method_native() {
createParser('m() native "str";');
var method = parser.parseClassMember('C') as MethodDeclaration;
diff --git a/pkg/analyzer/test/generated/collection_literal_parser_test.dart b/pkg/analyzer/test/generated/collection_literal_parser_test.dart
index 7e39201..3c171bb 100644
--- a/pkg/analyzer/test/generated/collection_literal_parser_test.dart
+++ b/pkg/analyzer/test/generated/collection_literal_parser_test.dart
@@ -48,7 +48,7 @@
expect(second.rightParenthesis.lexeme, ')');
var forLoopParts = second.forLoopParts as ForEachPartsWithDeclaration;
DeclaredIdentifier forLoopVar = forLoopParts.loopVariable;
- expect(forLoopVar.identifier.name, 'x');
+ expect(forLoopVar.name.lexeme, 'x');
expect(forLoopParts.inKeyword, isNotNull);
var iterable = forLoopParts.iterable as SimpleIdentifier;
expect(iterable.name, 'list');
@@ -70,7 +70,7 @@
expect(second.rightParenthesis.lexeme, ')');
var forLoopParts = second.forLoopParts as ForEachPartsWithDeclaration;
DeclaredIdentifier forLoopVar = forLoopParts.loopVariable;
- expect(forLoopVar.identifier.name, 'x');
+ expect(forLoopVar.name.lexeme, 'x');
expect(forLoopParts.inKeyword, isNotNull);
var iterable = forLoopParts.iterable as SimpleIdentifier;
expect(iterable.name, 'list');
@@ -97,7 +97,7 @@
expect(second.rightParenthesis.lexeme, ')');
var forLoopParts = second.forLoopParts as ForPartsWithDeclarations;
VariableDeclaration forLoopVar = forLoopParts.variables.variables[0];
- expect(forLoopVar.name.name, 'x');
+ expect(forLoopVar.name2.lexeme, 'x');
var condition = forLoopParts.condition as BinaryExpression;
var rightOperand = condition.rightOperand as IntegerLiteral;
expect(rightOperand.value, 10);
diff --git a/pkg/analyzer/test/generated/element_resolver_test.dart b/pkg/analyzer/test/generated/element_resolver_test.dart
index ae995c2..0642108 100644
--- a/pkg/analyzer/test/generated/element_resolver_test.dart
+++ b/pkg/analyzer/test/generated/element_resolver_test.dart
@@ -35,7 +35,7 @@
expect(name3, isNull);
if (annotationElement is ConstructorElement) {
expect(annotationElement, same(name2.staticElement));
- expect(annotationElement.enclosingElement2, name1.staticElement);
+ expect(annotationElement.enclosingElement3, name1.staticElement);
expect(annotationElement.displayName, 'A.named');
expect(annotationElement.parameters, isEmpty);
} else {
@@ -61,7 +61,7 @@
expect(name3.staticElement!.displayName, 'A.named');
if (annotationElement is ConstructorElement) {
expect(annotationElement, same(name3.staticElement));
- expect(annotationElement.enclosingElement2, name2.staticElement);
+ expect(annotationElement.enclosingElement3, name2.staticElement);
expect(annotationElement.displayName, 'A.named');
expect(annotationElement.parameters, isEmpty);
} else {
@@ -87,7 +87,7 @@
expect(name3.staticElement!.displayName, 'V');
if (annotationElement is PropertyAccessorElement) {
expect(annotationElement, same(name3.staticElement));
- expect(annotationElement.enclosingElement2, name2.staticElement);
+ expect(annotationElement.enclosingElement3, name2.staticElement);
expect(annotationElement.displayName, 'V');
} else {
fail('Expected "annotationElement" is PropertyAccessorElement, '
@@ -110,7 +110,7 @@
expect(name2.staticElement!.displayName, 'A');
expect(name3, isNull);
if (annotationElement is ConstructorElement) {
- expect(annotationElement.enclosingElement2, name2.staticElement);
+ expect(annotationElement.enclosingElement3, name2.staticElement);
expect(annotationElement.displayName, 'A');
expect(annotationElement.parameters, isEmpty);
} else {
@@ -135,7 +135,7 @@
expect(name3, isNull);
if (annotationElement is PropertyAccessorElement) {
expect(annotationElement, same(name2.staticElement));
- expect(annotationElement.enclosingElement2, name1.staticElement);
+ expect(annotationElement.enclosingElement3, name1.staticElement);
expect(annotationElement.displayName, 'V');
} else {
fail('Expected "annotationElement" is PropertyAccessorElement, '
@@ -157,7 +157,7 @@
expect(name2, isNull);
expect(name3, isNull);
if (annotationElement is ConstructorElement) {
- expect(annotationElement.enclosingElement2, name1.staticElement);
+ expect(annotationElement.enclosingElement3, name1.staticElement);
expect(annotationElement.displayName, 'A');
expect(annotationElement.parameters, isEmpty);
} else {
@@ -179,7 +179,7 @@
expect(name3, isNull);
if (annotationElement is PropertyAccessorElement) {
expect(annotationElement, same(name1.staticElement));
- expect(annotationElement.enclosingElement2, isCompilationUnitElement);
+ expect(annotationElement.enclosingElement3, isCompilationUnitElement);
expect(annotationElement.displayName, 'V');
} else {
fail('Expected "annotationElement" is PropertyAccessorElement, '
@@ -201,7 +201,7 @@
expect(name3, isNull);
if (annotationElement is PropertyAccessorElement) {
expect(annotationElement, same(name2.staticElement));
- expect(annotationElement.enclosingElement2, isCompilationUnitElement);
+ expect(annotationElement.enclosingElement3, isCompilationUnitElement);
expect(annotationElement.displayName, 'V');
} else {
fail('Expected "annotationElement" is PropertyAccessorElement, '
diff --git a/pkg/analyzer/test/generated/error_parser_test.dart b/pkg/analyzer/test/generated/error_parser_test.dart
index a8779b3..da49dd5 100644
--- a/pkg/analyzer/test/generated/error_parser_test.dart
+++ b/pkg/analyzer/test/generated/error_parser_test.dart
@@ -852,7 +852,7 @@
expect(semicolon, isNotNull);
expect(semicolon.isSynthetic, isTrue);
ClassDeclaration clazz = unit.declarations[0] as ClassDeclaration;
- expect(clazz.name.name, 'A');
+ expect(clazz.name2.lexeme, 'A');
}
void test_expectedToken_semicolonMissingAfterExpression() {
@@ -888,7 +888,7 @@
expect(semicolon, isNotNull);
expect(semicolon.isSynthetic, isTrue);
ClassDeclaration clazz = unit.declarations[0] as ClassDeclaration;
- expect(clazz.name.name, 'A');
+ expect(clazz.name2.lexeme, 'A');
}
void test_expectedToken_whileMissingInDoStatement() {
@@ -2147,7 +2147,7 @@
expectedError(ParserErrorCode.MISSING_IDENTIFIER, 6, 1),
expectedError(ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, 6, 1)
]);
- expect(parameter.identifier, isNotNull);
+ expect(parameter.name, isNotNull);
}
void test_missingNameForNamedParameter_equals() {
@@ -2159,7 +2159,7 @@
expectedError(ParserErrorCode.MISSING_IDENTIFIER, 6, 1),
expectedError(ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, 6, 1)
]);
- expect(parameter.identifier, isNotNull);
+ expect(parameter.name, isNotNull);
}
void test_missingNameForNamedParameter_noDefault() {
@@ -2169,7 +2169,7 @@
expectNotNullIfNoErrors(parameter);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_IDENTIFIER, 5, 1)]);
- expect(parameter.identifier, isNotNull);
+ expect(parameter.name, isNotNull);
}
void test_missingNameInLibraryDirective() {
diff --git a/pkg/analyzer/test/generated/extension_methods_parser_test.dart b/pkg/analyzer/test/generated/extension_methods_parser_test.dart
index 5c2a5c1..3407fe0 100644
--- a/pkg/analyzer/test/generated/extension_methods_parser_test.dart
+++ b/pkg/analyzer/test/generated/extension_methods_parser_test.dart
@@ -29,7 +29,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'extends');
expect((extension.extendedType as NamedType).name.name, 'A');
expect(extension.members, hasLength(0));
@@ -42,7 +42,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'implements');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -52,7 +52,7 @@
var unit = parseCompilationUnit('extension E on C<T> { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'on');
var namedType = extension.extendedType as NamedType;
expect(namedType.name.name, 'C');
@@ -64,7 +64,7 @@
var unit = parseCompilationUnit('extension E<T> on C<T> { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'on');
var namedType = extension.extendedType as NamedType;
expect(namedType.name.name, 'C');
@@ -76,7 +76,7 @@
var unit = parseCompilationUnit('extension<T> on C<T> { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name, isNull);
+ expect(extension.name2, isNull);
expect(extension.onKeyword.lexeme, 'on');
var namedType = extension.extendedType as NamedType;
expect(namedType.name.name, 'C');
@@ -120,7 +120,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, '');
expect(extension.members, hasLength(0));
@@ -133,7 +133,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, '');
expect(extension.members, hasLength(0));
@@ -145,7 +145,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -159,7 +159,7 @@
expect(method.externalKeyword, isNull);
expect(method.propertyKeyword, isNull);
expect(method.returnType, isNotNull);
- expect(method.name.name, 'late');
+ expect(method.name2.lexeme, 'late');
expect(method.functionExpression, isNotNull);
var body = method.functionExpression.body as BlockFunctionBody;
@@ -173,7 +173,7 @@
var unit = parseCompilationUnit('extension E on C { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, 'C');
var namedType = extension.extendedType as NamedType;
@@ -188,7 +188,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'extends');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -200,7 +200,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'implements');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -210,7 +210,7 @@
var unit = parseCompilationUnit('extension on C { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name, isNull);
+ expect(extension.name2, isNull);
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, 'C');
var namedType = extension.extendedType as NamedType;
@@ -236,7 +236,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'with');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -246,7 +246,7 @@
var unit = parseCompilationUnit('extension E on void { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name!.name, 'E');
+ expect(extension.name2!.lexeme, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, 'void');
expect(extension.members, hasLength(0));
diff --git a/pkg/analyzer/test/generated/formal_parameter_parser_test.dart b/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
index 64b9988..613e8fc 100644
--- a/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
+++ b/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
@@ -50,7 +50,7 @@
expect(parameter, isFieldFormalParameter);
var functionParameter = parameter as FieldFormalParameter;
expect(functionParameter.type, isNotNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNotNull);
@@ -65,7 +65,7 @@
defaultParameter.parameter as FunctionTypedFormalParameter;
assertNoErrors();
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.isNamed, isTrue);
@@ -84,7 +84,7 @@
var functionParameter =
defaultParameter.parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.isNamed, isTrue);
@@ -103,7 +103,7 @@
var functionParameter =
defaultParameter.parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.isOptionalPositional, isTrue);
@@ -120,7 +120,7 @@
errorCodes: [ParserErrorCode.EXPERIMENT_NOT_ENABLED])
as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.isRequiredPositional, isTrue);
@@ -163,7 +163,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isNamed, isTrue);
@@ -181,7 +181,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isRequired, isTrue);
@@ -199,7 +199,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -220,7 +220,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isNamed, isTrue);
@@ -239,7 +239,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isRequired, isTrue);
@@ -257,7 +257,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -278,7 +278,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isNamed, isTrue);
@@ -297,7 +297,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isGenericFunctionType);
expect(simpleParameter.isRequired, isTrue);
@@ -315,7 +315,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isNamed, isTrue);
@@ -334,7 +334,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isRequired, isTrue);
@@ -352,7 +352,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -373,7 +373,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isNamed, isTrue);
@@ -391,7 +391,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isRequired, isTrue);
@@ -409,7 +409,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -435,7 +435,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isNamed, isTrue);
@@ -453,7 +453,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isRequired, isTrue);
@@ -470,7 +470,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -491,7 +491,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isNamed, isTrue);
@@ -511,7 +511,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isNamed, isTrue);
@@ -529,7 +529,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isRequired, isTrue);
@@ -546,7 +546,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -566,7 +566,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isNamed, isTrue);
@@ -586,7 +586,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isNamed, isTrue);
@@ -606,7 +606,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isNamed, isTrue);
@@ -626,7 +626,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isNamed, isTrue);
@@ -645,7 +645,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isGenericFunctionType);
expect(simpleParameter.isRequired, isTrue);
@@ -662,7 +662,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isNamed, isTrue);
@@ -682,7 +682,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isNamed, isTrue);
@@ -700,7 +700,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isRequired, isTrue);
@@ -717,7 +717,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -737,7 +737,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -757,7 +757,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isNamed, isTrue);
@@ -775,7 +775,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isRequired, isTrue);
@@ -792,7 +792,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isOptionalPositional, isTrue);
@@ -813,7 +813,7 @@
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.isNamed, isTrue);
@@ -903,13 +903,13 @@
expect(parameters[0], isSimpleFormalParameter);
var required = parameters[0] as SimpleFormalParameter;
- expect(required.identifier, isNull);
+ expect(required.name, isNull);
expect(required.type, isNamedType);
expect((required.type as NamedType).name.name, 'A');
expect(parameters[1], isDefaultFormalParameter);
var named = parameters[1] as DefaultFormalParameter;
- expect(named.identifier, isNotNull);
+ expect(named.name, isNotNull);
expect(named.parameter, isSimpleFormalParameter);
var simple = named.parameter as SimpleFormalParameter;
expect(simple.type, isNamedType);
@@ -1016,7 +1016,7 @@
// TODO(danrubel): Investigate and improve recovery of parameter type/name.
var parameter = list.parameters[0] as SimpleFormalParameter;
expect(parameter.toSource(), 'io.File ');
- expect(parameter.identifier!.token.isSynthetic, isTrue);
+ expect(parameter.name!.isSynthetic, isTrue);
var type = parameter.type as NamedType;
var typeName = type.name as PrefixedIdentifier;
expect(typeName.prefix.token.isSynthetic, isFalse);
@@ -1037,7 +1037,7 @@
// TODO(danrubel): Investigate and improve recovery of parameter type/name.
var parameter = list.parameters[0] as SimpleFormalParameter;
expect(parameter.toSource(), 'io. ');
- expect(parameter.identifier!.token.isSynthetic, isTrue);
+ expect(parameter.name!.isSynthetic, isTrue);
var type = parameter.type as NamedType;
var typeName = type.name as PrefixedIdentifier;
expect(typeName.prefix.token.isSynthetic, isFalse);
@@ -1069,7 +1069,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
expect(fieldParameter.parameters, isNull);
}
@@ -1082,7 +1082,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNotNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
expect(fieldParameter.parameters, isNull);
}
@@ -1095,7 +1095,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
expect(fieldParameter.parameters, isNull);
}
@@ -1108,7 +1108,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNotNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
expect(fieldParameter.parameters, isNull);
}
@@ -1120,7 +1120,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNull);
expect(fieldParameter.type, isNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
FormalParameterList parameterList = fieldParameter.parameters!;
expect(parameterList, isNotNull);
expect(parameterList.parameters, hasLength(1));
@@ -1134,7 +1134,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNull);
expect(fieldParameter.type, isNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
FormalParameterList parameterList = fieldParameter.parameters!;
expect(parameterList, isNotNull);
expect(parameterList.parameters, hasLength(0));
@@ -1153,7 +1153,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNull);
expect(fieldParameter.type, isNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
expect(fieldParameter.parameters, isNull);
}
@@ -1165,7 +1165,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNull);
expect(fieldParameter.type, isNotNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
expect(fieldParameter.parameters, isNull);
}
@@ -1177,7 +1177,7 @@
var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNull);
- expect(fieldParameter.identifier, isNotNull);
+ expect(fieldParameter.name, isNotNull);
expect(fieldParameter.parameters, isNull);
}
@@ -1194,7 +1194,7 @@
defaultParameter.parameter as FunctionTypedFormalParameter;
assertNoErrors();
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.isNamed, isTrue);
@@ -1211,7 +1211,7 @@
expect(parameter, isFunctionTypedFormalParameter);
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNull);
@@ -1226,7 +1226,7 @@
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.covariantKeyword, isNotNull);
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNull);
@@ -1240,7 +1240,7 @@
expect(parameter, isFunctionTypedFormalParameter);
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNotNull);
@@ -1254,7 +1254,7 @@
expect(parameter, isFunctionTypedFormalParameter);
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNotNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNull);
@@ -1267,7 +1267,7 @@
expect(parameter, isFunctionTypedFormalParameter);
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNotNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNull);
@@ -1280,7 +1280,7 @@
expect(parameter, isFunctionTypedFormalParameter);
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNotNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNotNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNull);
@@ -1295,7 +1295,7 @@
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.covariantKeyword, isNotNull);
expect(functionParameter.returnType, isNotNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNull);
@@ -1308,7 +1308,7 @@
expect(parameter, isFunctionTypedFormalParameter);
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNotNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNull);
@@ -1321,7 +1321,7 @@
expect(parameter, isFunctionTypedFormalParameter);
var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNotNull);
- expect(functionParameter.identifier, isNotNull);
+ expect(functionParameter.name, isNotNull);
expect(functionParameter.typeParameters, isNotNull);
expect(functionParameter.parameters, isNotNull);
expect(functionParameter.question, isNull);
@@ -1342,7 +1342,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
}
void test_parseNormalFormalParameter_simple_const_type() {
@@ -1353,7 +1353,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
}
void test_parseNormalFormalParameter_simple_final_noType() {
@@ -1364,7 +1364,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
}
void test_parseNormalFormalParameter_simple_final_type() {
@@ -1375,7 +1375,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
}
void test_parseNormalFormalParameter_simple_noName() {
@@ -1387,7 +1387,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
- expect(simpleParameter.identifier, isNull);
+ expect(simpleParameter.name, isNull);
}
void test_parseNormalFormalParameter_simple_noType() {
@@ -1398,7 +1398,7 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
}
void test_parseNormalFormalParameter_simple_noType_namedCovariant() {
@@ -1410,7 +1410,7 @@
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
}
void test_parseNormalFormalParameter_simple_type() {
@@ -1421,6 +1421,6 @@
var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
- expect(simpleParameter.identifier, isNotNull);
+ expect(simpleParameter.name, isNotNull);
}
}
diff --git a/pkg/analyzer/test/generated/new_as_identifier_parser_test.dart b/pkg/analyzer/test/generated/new_as_identifier_parser_test.dart
index 7beae7f..e50a3a7 100644
--- a/pkg/analyzer/test/generated/new_as_identifier_parser_test.dart
+++ b/pkg/analyzer/test/generated/new_as_identifier_parser_test.dart
@@ -194,7 +194,7 @@
var classDeclaration = unit.declarations.single as ClassDeclaration;
var constructorDeclaration =
classDeclaration.members.single as ConstructorDeclaration;
- expect(constructorDeclaration.name!.name, 'new');
+ expect(constructorDeclaration.name2!.lexeme, 'new');
}
void test_constructor_name_factory() {
@@ -207,7 +207,7 @@
var classDeclaration = unit.declarations.single as ClassDeclaration;
var constructorDeclaration =
classDeclaration.members[0] as ConstructorDeclaration;
- expect(constructorDeclaration.name!.name, 'new');
+ expect(constructorDeclaration.name2!.lexeme, 'new');
}
void test_constructor_tearoff() {
@@ -320,7 +320,7 @@
var classDeclaration = unit.declarations.single as ClassDeclaration;
var constructorDeclaration =
classDeclaration.members.single as ConstructorDeclaration;
- expect(constructorDeclaration.name!.name, 'new');
+ expect(constructorDeclaration.name2!.lexeme, 'new');
}
void test_factory_redirection() {
diff --git a/pkg/analyzer/test/generated/nnbd_parser_test.dart b/pkg/analyzer/test/generated/nnbd_parser_test.dart
index 54f27bc..8cf5d0a 100644
--- a/pkg/analyzer/test/generated/nnbd_parser_test.dart
+++ b/pkg/analyzer/test/generated/nnbd_parser_test.dart
@@ -395,7 +395,7 @@
// Object? o
var parameter =
constructor.parameters.parameters.single as SimpleFormalParameter;
- expect(parameter.identifier!.name, 'o');
+ expect(parameter.name!.lexeme, 'o');
var type = parameter.type as NamedType;
expect(type.question!.lexeme, '?');
expect(type.name.name, 'Object');
@@ -441,7 +441,7 @@
// Object? o
var parameter =
constructor.parameters.parameters.single as SimpleFormalParameter;
- expect(parameter.identifier!.name, 'o');
+ expect(parameter.name!.lexeme, 'o');
var type = parameter.type as NamedType;
expect(type.question!.lexeme, '?');
expect(type.name.name, 'Object');
@@ -494,7 +494,7 @@
// Object? o
var parameter =
constructor.parameters.parameters.single as SimpleFormalParameter;
- expect(parameter.identifier!.name, 'o');
+ expect(parameter.name!.lexeme, 'o');
var type = parameter.type as NamedType;
expect(type.question!.lexeme, '?');
expect(type.name.name, 'Object');
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index 21ddaaf..28a7fb5 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -1458,7 +1458,7 @@
''');
var x = findNode.namedExpression('arg: true');
var y = x.staticParameterElement!;
- expect(y.enclosingElement2, isNotNull);
+ expect(y.enclosingElement3, isNotNull);
expect(y.declaration, findElement.parameter('arg'));
}
@@ -1471,7 +1471,7 @@
''');
var x = findNode.namedExpression('arg: true');
var y = x.staticParameterElement!;
- expect(y.enclosingElement2, isNotNull);
+ expect(y.enclosingElement3, isNotNull);
expect(y.declaration, findElement.parameter('arg'));
}
diff --git a/pkg/analyzer/test/generated/parser_test_base.dart b/pkg/analyzer/test/generated/parser_test_base.dart
index ef2d196..ccb7205 100644
--- a/pkg/analyzer/test/generated/parser_test_base.dart
+++ b/pkg/analyzer/test/generated/parser_test_base.dart
@@ -14,7 +14,8 @@
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
-import 'package:analyzer/src/dart/ast/ast.dart' show CompilationUnitImpl;
+import 'package:analyzer/src/dart/ast/ast.dart'
+ show ClassDeclarationImpl, CompilationUnitImpl;
import 'package:analyzer/src/dart/ast/ast_factory.dart';
import 'package:analyzer/src/dart/ast/token.dart';
import 'package:analyzer/src/dart/scanner/scanner.dart';
@@ -800,22 +801,22 @@
ClassMember? parseClassMemberOrNull(String className) {
return _run('ClassOrMixinBody', () {
- astBuilder.classDeclaration = astFactory.classDeclaration(
- null,
- null,
- null,
- null,
- null,
- Token(Keyword.CLASS, 0),
- astFactory.simpleIdentifier(fasta.StringTokenImpl.fromString(
+ astBuilder.classDeclaration = ClassDeclarationImpl(
+ comment: null,
+ metadata: null,
+ abstractKeyword: null,
+ macroKeyword: null,
+ augmentKeyword: null,
+ classKeyword: Token(Keyword.CLASS, 0),
+ name: astFactory.simpleIdentifier(fasta.StringTokenImpl.fromString(
TokenType.IDENTIFIER, className, 6)),
- null,
- null,
- null,
- null,
- Tokens.openCurlyBracket() /* leftBracket */,
- <ClassMember>[],
- Tokens.closeCurlyBracket() /* rightBracket */,
+ typeParameters: null,
+ extendsClause: null,
+ withClause: null,
+ implementsClause: null,
+ leftBracket: Tokens.openCurlyBracket(),
+ members: <ClassMember>[],
+ rightBracket: Tokens.closeCurlyBracket(),
);
// TODO(danrubel): disambiguate between class and mixin
currentToken = fastaParser.parseClassMember(currentToken, className);
diff --git a/pkg/analyzer/test/generated/recovery_parser_test.dart b/pkg/analyzer/test/generated/recovery_parser_test.dart
index 196e3ca..fc3f193 100644
--- a/pkg/analyzer/test/generated/recovery_parser_test.dart
+++ b/pkg/analyzer/test/generated/recovery_parser_test.dart
@@ -389,7 +389,7 @@
expect(unit.declarations, hasLength(1));
var classDecl = unit.childEntities.first as ClassDeclaration;
expect(classDecl, isNotNull);
- expect(classDecl.name.name, 'foo');
+ expect(classDecl.name2.lexeme, 'foo');
}
void test_equalityExpression_missing_LHS() {
@@ -500,7 +500,7 @@
NodeList<VariableDeclaration> vars =
(fieldDecl as FieldDeclaration).fields.variables;
expect(vars, hasLength(1));
- expect(vars[0].name.name, "v");
+ expect(vars[0].name2.lexeme, "v");
}
void test_functionExpression_named() {
@@ -660,7 +660,7 @@
NodeList<VariableDeclaration> variables =
(member as TopLevelVariableDeclaration).variables.variables;
expect(variables, hasLength(1));
- SimpleIdentifier name = variables[0].name;
+ final name = variables[0].name2;
expect(name.isSynthetic, isFalse);
}
@@ -676,7 +676,7 @@
NodeList<VariableDeclaration> variables =
(member as TopLevelVariableDeclaration).variables.variables;
expect(variables, hasLength(1));
- SimpleIdentifier name = variables[0].name;
+ final name = variables[0].name2;
expect(name.isSynthetic, isTrue);
}
@@ -692,7 +692,7 @@
NodeList<VariableDeclaration> variables =
(member as TopLevelVariableDeclaration).variables.variables;
expect(variables, hasLength(1));
- SimpleIdentifier name = variables[0].name;
+ final name = variables[0].name2;
expect(name.isSynthetic, isTrue);
}
@@ -708,7 +708,7 @@
NodeList<VariableDeclaration> variables =
(member as TopLevelVariableDeclaration).variables.variables;
expect(variables, hasLength(1));
- SimpleIdentifier name = variables[0].name;
+ final name = variables[0].name2;
expect(name.isSynthetic, isTrue);
}
@@ -734,7 +734,7 @@
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
- expect(field.name.isSynthetic, isTrue);
+ expect(field.name2.isSynthetic, isTrue);
}
void test_incompleteField_final() {
@@ -759,7 +759,7 @@
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
- expect(field.name.isSynthetic, isTrue);
+ expect(field.name2.isSynthetic, isTrue);
}
void test_incompleteField_static() {
@@ -785,7 +785,7 @@
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
- expect(field.name.isSynthetic, isFalse);
+ expect(field.name2.isSynthetic, isFalse);
}
void test_incompleteField_static2() {
@@ -808,7 +808,7 @@
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
- expect(field.name.isSynthetic, isFalse);
+ expect(field.name2.isSynthetic, isFalse);
}
void test_incompleteField_type() {
@@ -834,7 +834,7 @@
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
expect(type, isNull);
- expect(field.name.name, 'A');
+ expect(field.name2.lexeme, 'A');
}
void test_incompleteField_var() {
@@ -859,7 +859,7 @@
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
- expect(field.name.isSynthetic, isTrue);
+ expect(field.name2.isSynthetic, isTrue);
}
void test_incompleteForEach() {
@@ -964,7 +964,7 @@
List<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
- expect(field.name.name, 'f');
+ expect(field.name2.lexeme, 'f');
// validate the type
var typeArguments = (fieldList.type as NamedType).typeArguments!;
expect(typeArguments.arguments, hasLength(1));
@@ -1056,7 +1056,7 @@
var fields = classDecl.members.first as FieldDeclaration;
expect(fields.fields.variables, hasLength(1));
VariableDeclaration field = fields.fields.variables.first;
- expect(field.name.name, 'g');
+ expect(field.name2.lexeme, 'g');
}
void test_invalidTypeParameters_super() {
@@ -1099,7 +1099,7 @@
]);
var declaration = unit.declarations[0] as ClassDeclaration;
var method = declaration.members[0] as ConstructorDeclaration;
- expect(method.name!.name, 'named');
+ expect(method.name2!.lexeme, 'named');
expect(method.parameters, isNotNull);
}
@@ -1110,7 +1110,7 @@
]);
var declaration = unit.declarations[0] as ClassDeclaration;
var constructor = declaration.members[0] as ConstructorDeclaration;
- expect(constructor.name!.name, 'named');
+ expect(constructor.name2!.lexeme, 'named');
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, hasLength(0));
}
@@ -1121,7 +1121,7 @@
]);
var declaration = unit.declarations[0] as ClassDeclaration;
var constructor = declaration.members[0] as ConstructorDeclaration;
- expect(constructor.name, isNull);
+ expect(constructor.name2, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, hasLength(0));
}
@@ -1132,7 +1132,7 @@
]);
var declaration = unit.declarations[0] as ClassDeclaration;
var constructor = declaration.members[0] as ConstructorDeclaration;
- expect(constructor.name!.name, 'named');
+ expect(constructor.name2!.lexeme, 'named');
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, hasLength(0));
}
@@ -1145,7 +1145,7 @@
]);
var declaration = unit.declarations[0] as ClassDeclaration;
var method = declaration.members[0] as ConstructorDeclaration;
- expect(method.name!.name, 'named');
+ expect(method.name2!.lexeme, 'named');
expect(method.parameters, isNotNull);
expect(method.parameters.parameters, hasLength(0));
}
@@ -1284,7 +1284,7 @@
expect(members[0], isMethodDeclaration);
ClassMember member = members[1];
expect(member, isMethodDeclaration);
- expect((member as MethodDeclaration).name.name, "foo");
+ expect((member as MethodDeclaration).name2.lexeme, "foo");
}
void test_missingIdentifier_afterAnnotation() {
@@ -1309,7 +1309,7 @@
expect(variables, hasLength(1));
VariableDeclaration variable = variables[0];
expect(variableList.type.toString(), expectedTypeName);
- expect(variable.name.name, expectedName);
+ expect(variable.name2.lexeme, expectedName);
if (expectedSemicolon.isEmpty) {
expect(declaration.semicolon.isSynthetic, isTrue);
} else {
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index 86cbe1c..1f4018b 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -74,7 +74,7 @@
var constructor = findElement.unnamedConstructor('C');
var x = findElement.localFunction('x');
- expect(x.enclosingElement2, constructor);
+ expect(x.enclosingElement3, constructor);
}
}
diff --git a/pkg/analyzer/test/generated/resolver_test_case.dart b/pkg/analyzer/test/generated/resolver_test_case.dart
index b382aee..6205e1d 100644
--- a/pkg/analyzer/test/generated/resolver_test_case.dart
+++ b/pkg/analyzer/test/generated/resolver_test_case.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:test/test.dart';
import '../src/dart/resolution/context_collection_resolution.dart';
@@ -212,6 +213,10 @@
return;
}
+ if (node is DeclaredSimpleIdentifier) {
+ return;
+ }
+
var staticType = node.staticType;
if (staticType != null &&
staticType.isDynamic &&
diff --git a/pkg/analyzer/test/generated/simple_parser_test.dart b/pkg/analyzer/test/generated/simple_parser_test.dart
index a8ba8f8..01b61ea 100644
--- a/pkg/analyzer/test/generated/simple_parser_test.dart
+++ b/pkg/analyzer/test/generated/simple_parser_test.dart
@@ -108,10 +108,10 @@
class C<@Foo.bar(const [], const [1], const{"":r""}, 0xFF + 2, .3, 4.5) T> {}
''');
var clazz = unit.declarations[0] as ClassDeclaration;
- expect(clazz.name.name, 'C');
+ expect(clazz.name2.lexeme, 'C');
expect(clazz.typeParameters!.typeParameters, hasLength(1));
TypeParameter typeParameter = clazz.typeParameters!.typeParameters[0];
- expect(typeParameter.name.name, 'T');
+ expect(typeParameter.name2.lexeme, 'T');
expect(typeParameter.metadata, hasLength(1));
Annotation metadata = typeParameter.metadata[0];
expect(metadata.name.name, 'Foo.bar');
@@ -154,7 +154,7 @@
expect(method.parameters!.parameters, hasLength(1));
var parameter =
method.parameters!.parameters[0] as FunctionTypedFormalParameter;
- expect(parameter.identifier, isNotNull);
+ expect(parameter.name, isNotNull);
}
void test_parseAnnotation_n1() {
@@ -1578,13 +1578,13 @@
expect(parameters[0], isSimpleFormalParameter);
var parameter = parameters[0] as SimpleFormalParameter;
- expect(parameter.identifier, isNull);
+ expect(parameter.name, isNull);
expect(parameter.type, isNamedType);
expect((parameter.type as NamedType).name.name, 'int');
expect(parameters[1], isSimpleFormalParameter);
parameter = parameters[1] as SimpleFormalParameter;
- expect(parameter.identifier, isNull);
+ expect(parameter.name, isNull);
expect(parameter.type, isNamedType);
expect((parameter.type as NamedType).name.name, 'int');
}
@@ -1663,15 +1663,15 @@
expect(parameters[0], isSimpleFormalParameter);
var parameter = parameters[0] as SimpleFormalParameter;
- expect(parameter.identifier, isNotNull);
- expect(parameter.identifier!.name, 's');
+ expect(parameter.name, isNotNull);
+ expect(parameter.name!.lexeme, 's');
expect(parameter.type, isNamedType);
expect((parameter.type as NamedType).name.name, 'String');
expect(parameters[1], isSimpleFormalParameter);
parameter = parameters[1] as SimpleFormalParameter;
- expect(parameter.identifier, isNotNull);
- expect(parameter.identifier!.name, 'i');
+ expect(parameter.name, isNotNull);
+ expect(parameter.name!.lexeme, 'i');
expect(parameter.type, isNamedType);
expect((parameter.type as NamedType).name.name, 'int');
}
@@ -1849,7 +1849,7 @@
assertNoErrors();
expect(parameter.bound, isGenericFunctionType);
expect(parameter.extendsKeyword, isNotNull);
- expect(parameter.name, isNotNull);
+ expect(parameter.name2, isNotNull);
}
void test_parseTypeParameter_bounded_functionType_return() {
@@ -1859,7 +1859,7 @@
assertNoErrors();
expect(parameter.bound, isGenericFunctionType);
expect(parameter.extendsKeyword, isNotNull);
- expect(parameter.name, isNotNull);
+ expect(parameter.name2, isNotNull);
}
void test_parseTypeParameter_bounded_generic() {
@@ -1869,7 +1869,7 @@
assertNoErrors();
expect(parameter.bound, isNamedType);
expect(parameter.extendsKeyword, isNotNull);
- expect(parameter.name, isNotNull);
+ expect(parameter.name2, isNotNull);
}
void test_parseTypeParameter_bounded_simple() {
@@ -1879,7 +1879,7 @@
assertNoErrors();
expect(parameter.bound, isNamedType);
expect(parameter.extendsKeyword, isNotNull);
- expect(parameter.name, isNotNull);
+ expect(parameter.name2, isNotNull);
}
void test_parseTypeParameter_simple() {
@@ -1889,7 +1889,7 @@
assertNoErrors();
expect(parameter.bound, isNull);
expect(parameter.extendsKeyword, isNull);
- expect(parameter.name, isNotNull);
+ expect(parameter.name2, isNotNull);
}
void test_parseTypeParameterList_multiple() {
@@ -1921,7 +1921,7 @@
expect(parameterList.rightBracket, isNotNull);
expect(parameterList.typeParameters, hasLength(1));
TypeParameter typeParameter = parameterList.typeParameters[0];
- expect(typeParameter.name.name, 'A');
+ expect(typeParameter.name2.lexeme, 'A');
var bound = typeParameter.bound as NamedType;
expect(bound.name.name, 'B');
var typeArguments = bound.typeArguments!;
@@ -1955,7 +1955,7 @@
VariableDeclaration declaration = parseVariableDeclaration('var a = b;');
expectNotNullIfNoErrors(declaration);
assertNoErrors();
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.equals, isNotNull);
expect(declaration.initializer, isNotNull);
}
@@ -2040,7 +2040,7 @@
VariableDeclaration declaration = parseVariableDeclaration('var a;');
expectNotNullIfNoErrors(declaration);
assertNoErrors();
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.equals, isNull);
expect(declaration.initializer, isNull);
}
@@ -2072,11 +2072,11 @@
expectedError(ScannerErrorCode.EXPECTED_TOKEN, 23, 1),
]);
var typeAlias = unit.declarations[0] as GenericTypeAlias;
- expect(typeAlias.name.toSource(), 'K');
+ expect(typeAlias.name2.lexeme, 'K');
var functionType = typeAlias.functionType!;
expect(functionType.parameters.parameters, hasLength(1));
var parameter = functionType.parameters.parameters[0];
- expect(parameter.identifier, isNotNull);
+ expect(parameter.name, isNotNull);
}
void test_typeAlias_parameter_missingIdentifier_37733() {
@@ -2086,10 +2086,10 @@
expectedError(ParserErrorCode.MISSING_IDENTIFIER, 19, 1),
]);
var typeAlias = unit.declarations[0] as GenericTypeAlias;
- expect(typeAlias.name.toSource(), 'T');
+ expect(typeAlias.name2.lexeme, 'T');
var functionType = typeAlias.functionType!;
expect(functionType.parameters.parameters, hasLength(1));
var parameter = functionType.parameters.parameters[0];
- expect(parameter.identifier, isNotNull);
+ expect(parameter.name, isNotNull);
}
}
diff --git a/pkg/analyzer/test/generated/statement_parser_test.dart b/pkg/analyzer/test/generated/statement_parser_test.dart
index ec1236b..f358b2a 100644
--- a/pkg/analyzer/test/generated/statement_parser_test.dart
+++ b/pkg/analyzer/test/generated/statement_parser_test.dart
@@ -278,7 +278,7 @@
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
var forLoopParts = forStatement.forLoopParts as ForEachPartsWithDeclaration;
- expect(forLoopParts.loopVariable.identifier.name, 'external');
+ expect(forLoopParts.loopVariable.name.lexeme, 'external');
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
expect(forStatement.rightParenthesis, isNotNull);
@@ -294,7 +294,7 @@
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
var forLoopParts = forStatement.forLoopParts as ForEachPartsWithDeclaration;
- expect(forLoopParts.loopVariable.identifier.name, 'required');
+ expect(forLoopParts.loopVariable.name.lexeme, 'required');
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
expect(forStatement.rightParenthesis, isNotNull);
@@ -1072,7 +1072,7 @@
assertNoErrors();
List<VariableDeclaration> variables = statement.variables.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'Function');
+ expect(variables[0].name2.lexeme, 'Function');
}
void test_parseNonLabeledStatement_variableDeclaration_gftType() {
@@ -1082,7 +1082,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
expect(variableList.type, isGenericFunctionType);
}
@@ -1095,7 +1095,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
expect(variableList.type, isGenericFunctionType);
}
@@ -1107,7 +1107,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
expect(variableList.type, isGenericFunctionType);
}
@@ -1119,7 +1119,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
expect(variableList.type, isGenericFunctionType);
}
@@ -1131,7 +1131,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
expect(variableList.type, isGenericFunctionType);
}
@@ -1142,7 +1142,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
expect(variableList.type, isGenericFunctionType);
}
@@ -1154,7 +1154,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
expect(variableList.type, isGenericFunctionType);
}
@@ -1164,7 +1164,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
var typeName = variableList.type as NamedType;
expect(typeName.name.name, 'C');
expect(typeName.typeArguments!.arguments, hasLength(1));
@@ -1179,7 +1179,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
var typeName = variableList.type as NamedType;
expect(typeName.name.name, 'C');
expect(typeName.typeArguments!.arguments, hasLength(1));
@@ -1194,7 +1194,7 @@
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
- expect(variables[0].name.name, 'v');
+ expect(variables[0].name2.lexeme, 'v');
var typeName = variableList.type as NamedType;
expect(typeName.name.name, 'C');
expect(typeName.typeArguments!.arguments, hasLength(1));
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index 8bf7ab3..c9978a9 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/ast/extensions.dart';
-import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -2670,17 +2669,103 @@
test_genericFunction() async {
await assertNoErrorsInCode(r'T f<T>(T x) => null;');
- expectFunctionType('f', 'T Function<T>(T)', typeFormals: '[T]');
- SimpleIdentifier f = findNode.simple('f');
- var e = f.staticElement as FunctionElementImpl;
- FunctionType ft = e.type.instantiate([typeProvider.stringType]);
- assertType(ft, 'String Function(String)');
+
+ final node = findNode.functionDeclaration('f<T>');
+ assertResolvedNodeText(node, r'''
+FunctionDeclaration
+ returnType: NamedType
+ name: SimpleIdentifier
+ token: T
+ staticElement: T@4
+ staticType: null
+ type: T*
+ name: f
+ functionExpression: FunctionExpression
+ typeParameters: TypeParameterList
+ leftBracket: <
+ typeParameters
+ TypeParameter
+ name: T
+ declaredElement: T@4
+ rightBracket: >
+ parameters: FormalParameterList
+ leftParenthesis: (
+ parameter: SimpleFormalParameter
+ type: NamedType
+ name: SimpleIdentifier
+ token: T
+ staticElement: T@4
+ staticType: null
+ type: T*
+ name: x
+ declaredElement: self::@function::f::@parameter::x
+ declaredElementType: T*
+ rightParenthesis: )
+ body: ExpressionFunctionBody
+ functionDefinition: =>
+ expression: NullLiteral
+ literal: null
+ staticType: Null*
+ semicolon: ;
+ declaredElement: self::@function::f
+ staticType: T* Function<T>(T*)*
+ declaredElement: self::@function::f
+ declaredElementType: T* Function<T>(T*)*
+''');
}
test_genericFunction_bounds() async {
await assertNoErrorsInCode(r'T f<T extends num>(T x) => null;');
- expectFunctionType('f', 'T Function<T extends num>(T)',
- typeFormals: '[T extends num]');
+
+ final node = findNode.functionDeclaration('f<T');
+ assertResolvedNodeText(node, r'''
+FunctionDeclaration
+ returnType: NamedType
+ name: SimpleIdentifier
+ token: T
+ staticElement: T@4
+ staticType: null
+ type: T*
+ name: f
+ functionExpression: FunctionExpression
+ typeParameters: TypeParameterList
+ leftBracket: <
+ typeParameters
+ TypeParameter
+ name: T
+ extendsKeyword: extends
+ bound: NamedType
+ name: SimpleIdentifier
+ token: num
+ staticElement: dart:core::@class::num
+ staticType: null
+ type: num*
+ declaredElement: T@4
+ rightBracket: >
+ parameters: FormalParameterList
+ leftParenthesis: (
+ parameter: SimpleFormalParameter
+ type: NamedType
+ name: SimpleIdentifier
+ token: T
+ staticElement: T@4
+ staticType: null
+ type: T*
+ name: x
+ declaredElement: self::@function::f::@parameter::x
+ declaredElementType: T*
+ rightParenthesis: )
+ body: ExpressionFunctionBody
+ functionDefinition: =>
+ expression: NullLiteral
+ literal: null
+ staticType: Null*
+ semicolon: ;
+ declaredElement: self::@function::f
+ staticType: T* Function<T extends num*>(T*)*
+ declaredElement: self::@function::f
+ declaredElementType: T* Function<T extends num*>(T*)*
+''');
}
test_genericFunction_parameter() async {
@@ -2698,11 +2783,40 @@
static T f<T>(T x) => null;
}
''');
- expectFunctionType('f', 'T Function<T>(T)', typeFormals: '[T]');
- SimpleIdentifier f = findNode.simple('f');
- var e = f.staticElement as MethodElementImpl;
- FunctionType ft = e.type.instantiate([typeProvider.stringType]);
- assertType(ft, 'String Function(String)');
+
+ final node = findNode.methodDeclaration('f<T>');
+ assertResolvedNodeText(node, r'''
+MethodDeclaration
+ modifierKeyword: static
+ returnType: NamedType
+ name: SimpleIdentifier
+ token: T
+ staticElement: T@26
+ staticType: null
+ type: T*
+ name: f
+ parameters: FormalParameterList
+ leftParenthesis: (
+ parameter: SimpleFormalParameter
+ type: NamedType
+ name: SimpleIdentifier
+ token: T
+ staticElement: T@26
+ staticType: null
+ type: T*
+ name: x
+ declaredElement: self::@class::C::@method::f::@parameter::x
+ declaredElementType: T*
+ rightParenthesis: )
+ body: ExpressionFunctionBody
+ functionDefinition: =>
+ expression: NullLiteral
+ literal: null
+ staticType: Null*
+ semicolon: ;
+ declaredElement: self::@class::C::@method::f
+ declaredElementType: T* Function<T>(T*)*
+''');
}
test_genericFunction_typedef() async {
@@ -3201,15 +3315,42 @@
T f<T>(T x) => null;
}
class D extends C {
- T f<T>(T x) => null; // from D
+ T f<T>(T y) => null;
}
''');
- expectFunctionType('f<T>(T x) => null; // from D', 'T Function<T>(T)',
- typeFormals: '[T]');
- SimpleIdentifier f = findNode.simple('f<T>(T x) => null; // from D');
- var e = f.staticElement as MethodElementImpl;
- FunctionType ft = e.type.instantiate([typeProvider.stringType]);
- assertType(ft, 'String Function(String)');
+
+ final node = findNode.methodDeclaration('f<T>(T y)');
+ assertResolvedNodeText(node, r'''
+MethodDeclaration
+ returnType: NamedType
+ name: SimpleIdentifier
+ token: T
+ staticElement: T@61
+ staticType: null
+ type: T*
+ name: f
+ parameters: FormalParameterList
+ leftParenthesis: (
+ parameter: SimpleFormalParameter
+ type: NamedType
+ name: SimpleIdentifier
+ token: T
+ staticElement: T@61
+ staticType: null
+ type: T*
+ name: y
+ declaredElement: self::@class::D::@method::f::@parameter::y
+ declaredElementType: T*
+ rightParenthesis: )
+ body: ExpressionFunctionBody
+ functionDefinition: =>
+ expression: NullLiteral
+ literal: null
+ staticType: Null*
+ semicolon: ;
+ declaredElement: self::@class::D::@method::f
+ declaredElementType: T* Function<T>(T*)*
+''');
}
test_genericMethod_override_bounds() async {
diff --git a/pkg/analyzer/test/generated/top_level_parser_test.dart b/pkg/analyzer/test/generated/top_level_parser_test.dart
index f20c303..a628cb6 100644
--- a/pkg/analyzer/test/generated/top_level_parser_test.dart
+++ b/pkg/analyzer/test/generated/top_level_parser_test.dart
@@ -119,7 +119,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.classKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -138,8 +138,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.classKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
- _assertIsDeclarationName(declaration.name);
+ expect(declaration.name2, isNotNull);
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -158,7 +157,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.classKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -177,7 +176,7 @@
expect(declaration.implementsClause, isNotNull);
expect(declaration.classKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -193,7 +192,7 @@
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.classKeyword, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.typeParameters, isNull);
expect(declaration.extendsClause, isNotNull);
expect(declaration.withClause, isNotNull);
@@ -213,7 +212,7 @@
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.classKeyword, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.typeParameters, isNull);
expect(declaration.extendsClause, isNotNull);
expect(declaration.withClause, isNotNull);
@@ -236,7 +235,7 @@
expect(declaration.implementsClause, isNotNull);
expect(declaration.classKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -378,7 +377,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.classKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.members, hasLength(1));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -392,8 +391,7 @@
expect(member, isClassTypeAlias);
var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
- _assertIsDeclarationName(typeAlias.name);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.withClause, isNotNull);
expect(typeAlias.implementsClause, isNotNull);
@@ -410,7 +408,7 @@
expect(member, isClassTypeAlias);
var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.withClause, isNotNull);
expect(typeAlias.withClause.withKeyword, isNotNull);
@@ -432,14 +430,11 @@
expect(declaration.implementsClause, isNull);
expect(declaration.classKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
- _assertIsDeclarationName(declaration.name);
+ expect(declaration.name2, isNotNull);
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNotNull);
expect(declaration.typeParameters!.typeParameters, hasLength(1));
- _assertIsDeclarationName(
- declaration.typeParameters!.typeParameters[0].name);
}
void test_parseClassDeclaration_typeParameters_extends_void() {
@@ -657,7 +652,7 @@
assertNoErrors();
expect(member, isClassDeclaration);
var declaration = member as ClassDeclaration;
- expect(declaration.name.name, "A");
+ expect(declaration.name2.lexeme, "A");
expect(declaration.members, hasLength(0));
}
@@ -668,7 +663,7 @@
assertNoErrors();
expect(member, isClassTypeAlias);
var declaration = member as ClassTypeAlias;
- expect(declaration.name.name, "A");
+ expect(declaration.name2.lexeme, "A");
expect(declaration.abstractKeyword, isNotNull);
}
@@ -682,7 +677,6 @@
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
expect(declaration.variables.keyword!.lexeme, 'const');
- _assertIsDeclarationName(declaration.variables.variables[0].name);
}
void test_parseCompilationUnitMember_expressionFunctionBody_tokens() {
@@ -691,7 +685,6 @@
var body = f.functionExpression.body as ExpressionFunctionBody;
expect(body.functionDefinition.lexeme, '=>');
expect(body.semicolon!.lexeme, ';');
- _assertIsDeclarationName(f.name);
}
void test_parseCompilationUnitMember_finalVariable() {
@@ -837,7 +830,6 @@
expect(declaration.externalKeyword, isNotNull);
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
- _assertIsDeclarationName(declaration.name);
}
void test_parseCompilationUnitMember_getter_external_type() {
@@ -907,7 +899,6 @@
var declaration = member as FunctionDeclaration;
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
- _assertIsDeclarationName(declaration.name);
}
void test_parseCompilationUnitMember_setter_type() {
@@ -930,8 +921,7 @@
expect(member, isClassTypeAlias);
var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name.name, "C");
- _assertIsDeclarationName(typeAlias.name);
+ expect(typeAlias.name2.lexeme, "C");
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.equals, isNotNull);
expect(typeAlias.abstractKeyword, isNotNull);
@@ -949,7 +939,7 @@
expect(member, isClassTypeAlias);
var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name.name, "C");
+ expect(typeAlias.name2.lexeme, "C");
expect(typeAlias.typeParameters!.typeParameters, hasLength(1));
expect(typeAlias.equals, isNotNull);
expect(typeAlias.abstractKeyword, isNull);
@@ -967,7 +957,7 @@
expect(member, isClassTypeAlias);
var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name.name, "C");
+ expect(typeAlias.name2.lexeme, "C");
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.equals, isNotNull);
expect(typeAlias.abstractKeyword, isNull);
@@ -985,7 +975,7 @@
expect(member, isClassTypeAlias);
var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name.name, "C");
+ expect(typeAlias.name2.lexeme, "C");
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.equals, isNotNull);
expect(typeAlias.abstractKeyword, isNull);
@@ -1002,9 +992,8 @@
assertNoErrors();
expect(member, TypeMatcher<FunctionTypeAlias>());
var typeAlias = member as FunctionTypeAlias;
- expect(typeAlias.name.name, "F");
+ expect(typeAlias.name2.lexeme, "F");
expect(typeAlias.parameters.parameters, hasLength(0));
- _assertIsDeclarationName(typeAlias.name);
}
void test_parseCompilationUnitMember_typedef_withDocComment() {
@@ -1024,7 +1013,6 @@
expect(declaration.variables, isNotNull);
expect(declaration.variables.type, isNotNull);
expect(declaration.variables.keyword, isNull);
- _assertIsDeclarationName(declaration.variables.variables[0].name);
}
void test_parseCompilationUnitMember_variable() {
@@ -1317,7 +1305,7 @@
expect(declaration.documentationComment, isNull);
expect(declaration.enumKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.constants, hasLength(1));
expect(declaration.rightBracket, isNotNull);
}
@@ -1330,7 +1318,7 @@
expect(declaration.documentationComment, isNull);
expect(declaration.enumKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.constants, hasLength(1));
expect(declaration.rightBracket, isNotNull);
}
@@ -1343,7 +1331,7 @@
expect(declaration.documentationComment, isNull);
expect(declaration.enumKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
expect(declaration.constants, hasLength(2));
expect(declaration.rightBracket, isNotNull);
}
@@ -1468,7 +1456,7 @@
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
expect((declaration.returnType as NamedType).name.name, 'T');
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
FunctionExpression expression = declaration.functionExpression;
expect(expression, isNotNull);
expect(expression.body, isNotNull);
@@ -1484,7 +1472,7 @@
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
expect((declaration.returnType as NamedType).name.name, 'T');
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
FunctionExpression expression = declaration.functionExpression;
expect(expression, isNotNull);
expect(expression.body, isNotNull);
@@ -1500,7 +1488,7 @@
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
expect((declaration.returnType as NamedType).name.name, 'T');
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
FunctionExpression expression = declaration.functionExpression;
expect(expression, isNotNull);
expect(expression.body, isNotNull);
@@ -1517,7 +1505,7 @@
assertNoErrors();
expect(declaration.documentationComment, isNull);
expect((declaration.returnType as NamedType).name.name, 'T');
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
FunctionExpression expression = declaration.functionExpression;
expect(expression, isNotNull);
expect(expression.body, isNotNull);
@@ -1578,7 +1566,7 @@
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
expect((declaration.returnType as NamedType).name.name, 'T');
- expect(declaration.name, isNotNull);
+ expect(declaration.name2, isNotNull);
FunctionExpression expression = declaration.functionExpression;
expect(expression, isNotNull);
expect(expression.body, isNotNull);
@@ -1592,8 +1580,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters, isNull);
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
@@ -1605,8 +1593,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters!.typeParameters, hasLength(1));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
@@ -1620,8 +1608,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters!.typeParameters, hasLength(1));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
@@ -1633,8 +1621,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters!.typeParameters, hasLength(3));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
@@ -1648,8 +1636,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters!.typeParameters, hasLength(3));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
@@ -1661,8 +1649,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters!.typeParameters, hasLength(3));
TypeParameter typeParam = alias.typeParameters!.typeParameters[2];
var type = typeParam.bound as NamedType;
@@ -1678,8 +1666,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters!.typeParameters, hasLength(3));
TypeParameter typeParam = alias.typeParameters!.typeParameters[2];
var type = typeParam.bound as NamedType;
@@ -1696,8 +1684,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters!.typeParameters, hasLength(3));
TypeParameter typeParam = alias.typeParameters!.typeParameters[2];
var type = typeParam.bound as NamedType;
@@ -1714,8 +1702,8 @@
var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters!.typeParameters, hasLength(3));
TypeParameter typeParam = alias.typeParameters!.typeParameters[2];
var type = typeParam.bound as NamedType;
@@ -1733,11 +1721,11 @@
assertErrors(errors: [
expectedError(ParserErrorCode.MISSING_IDENTIFIER, 11, 1),
]);
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters, isNotNull);
expect(alias.typeParameters!.typeParameters.length, 1);
- expect(alias.typeParameters!.typeParameters.single.name.name, '');
+ expect(alias.typeParameters!.typeParameters.single.name2.lexeme, '');
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1751,12 +1739,11 @@
assertErrors(errors: [
expectedError(ParserErrorCode.MISSING_IDENTIFIER, 10, 2),
]);
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters, isNotNull);
expect(alias.typeParameters!.typeParameters.length, 1);
- expect(alias.typeParameters!.typeParameters.single.name.name, '');
+ expect(alias.typeParameters!.typeParameters.single.name2.lexeme, '');
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1770,12 +1757,11 @@
assertErrors(errors: [
expectedError(ParserErrorCode.MISSING_IDENTIFIER, 10, 1),
]);
- expect(alias.name, isNotNull);
- expect(alias.name.name, 'F');
- expect(alias.name.name, 'F');
+ expect(alias.name2, isNotNull);
+ expect(alias.name2.lexeme, 'F');
expect(alias.typeParameters, isNotNull);
expect(alias.typeParameters!.typeParameters.length, 1);
- expect(alias.typeParameters!.typeParameters.single.name.name, '');
+ expect(alias.typeParameters!.typeParameters.single.name2.lexeme, '');
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1933,7 +1919,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name.name, 'A');
+ expect(declaration.name2.lexeme, 'A');
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -1955,7 +1941,7 @@
expect(interfaces[0].typeArguments, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name.name, 'A');
+ expect(declaration.name2.lexeme, 'A');
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -1979,7 +1965,7 @@
expect(interfaces[1].typeArguments, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name.name, 'A');
+ expect(declaration.name2.lexeme, 'A');
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -1998,7 +1984,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name.name, 'A');
+ expect(declaration.name2.lexeme, 'A');
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -2020,7 +2006,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name.name, 'A');
+ expect(declaration.name2.lexeme, 'A');
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -2044,7 +2030,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name.name, 'A');
+ expect(declaration.name2.lexeme, 'A');
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -2071,7 +2057,7 @@
expect(interfaces[0].typeArguments, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name.name, 'A');
+ expect(declaration.name2.lexeme, 'A');
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -2094,7 +2080,7 @@
expect(declaration.implementsClause, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
- expect(declaration.name.name, 'A');
+ expect(declaration.name2.lexeme, 'A');
expect(declaration.members, hasLength(4));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNull);
@@ -2223,7 +2209,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.parameters, isNotNull);
expect(typeAlias.returnType, isNotNull);
expect(typeAlias.semicolon, isNotNull);
@@ -2236,7 +2222,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.parameters, isNotNull);
expect(typeAlias.returnType, isNull);
expect(typeAlias.semicolon, isNotNull);
@@ -2249,7 +2235,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.parameters, isNotNull);
expect(typeAlias.returnType, isNotNull);
expect(typeAlias.semicolon, isNotNull);
@@ -2262,7 +2248,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.parameters, isNotNull);
expect(typeAlias.returnType, isNotNull);
expect(typeAlias.semicolon, isNotNull);
@@ -2275,7 +2261,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.parameters, isNotNull);
expect(typeAlias.returnType, isNotNull);
expect(typeAlias.semicolon, isNotNull);
@@ -2288,7 +2274,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.parameters, isNotNull);
expect(typeAlias.returnType, isNotNull);
expect(typeAlias.semicolon, isNotNull);
@@ -2301,7 +2287,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2317,7 +2303,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2333,7 +2319,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2349,7 +2335,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2365,7 +2351,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2381,7 +2367,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2397,7 +2383,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2414,7 +2400,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2430,7 +2416,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2446,7 +2432,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2462,7 +2448,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2478,7 +2464,7 @@
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
- expect(typeAlias.name, isNotNull);
+ expect(typeAlias.name2, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
var functionType = typeAlias.functionType as GenericFunctionType;
@@ -2504,9 +2490,4 @@
var typeVariable = classDeclaration.typeParameters!.typeParameters[0];
expectCommentText(typeVariable.documentationComment, '/// Doc');
}
-
- /// Assert that the given [name] is in declaration context.
- void _assertIsDeclarationName(SimpleIdentifier name) {
- expect(name.inDeclarationContext(), isTrue);
- }
}
diff --git a/pkg/analyzer/test/generated/utilities_test.dart b/pkg/analyzer/test/generated/utilities_test.dart
index 183e638..13d6e07 100644
--- a/pkg/analyzer/test/generated/utilities_test.dart
+++ b/pkg/analyzer/test/generated/utilities_test.dart
@@ -450,7 +450,6 @@
(node) => node.documentationComment!,
(node) => node.extendsClause!,
(node) => node.implementsClause!,
- (node) => node.name,
(node) => node.typeParameters!,
(node) => node.withClause!,
],
@@ -477,7 +476,6 @@
(node) => node.documentationComment!,
(node) => node.superclass,
(node) => node.implementsClause!,
- (node) => node.name,
(node) => node.typeParameters!,
(node) => node.withClause,
],
@@ -566,7 +564,6 @@
source: findNode.constructor('B.named'),
childAccessors: [
(node) => node.body,
- (node) => node.name!,
(node) => node.parameters,
(node) => node.returnType,
],
@@ -657,7 +654,6 @@
destination: findNode.declaredIdentifier('i in'),
source: findNode.declaredIdentifier('j in'),
childAccessors: [
- (node) => node.identifier,
(node) => node.type!,
],
);
@@ -703,13 +699,6 @@
_assertAnnotatedNode(
findNode.enumConstantDeclaration('aaa'),
);
- _assertReplacementForChildren<EnumConstantDeclaration>(
- destination: findNode.enumConstantDeclaration('aaa'),
- source: findNode.enumConstantDeclaration('bbb'),
- childAccessors: [
- (node) => node.name,
- ],
- );
}
void test_enumDeclaration() {
@@ -721,7 +710,6 @@
destination: findNode.enumDeclaration('enum E1'),
source: findNode.enumDeclaration('enum E2'),
childAccessors: [
- (node) => node.name,
(node) => node.typeParameters!,
(node) => node.withClause!,
(node) => node.implementsClause!,
@@ -859,7 +847,6 @@
destination: findNode.fieldFormalParameter('foo'),
source: findNode.fieldFormalParameter('bar'),
childAccessors: [
- (node) => node.identifier,
(node) => node.parameters!,
(node) => node.type!,
(node) => node.typeParameters!,
@@ -990,7 +977,6 @@
source: findNode.functionDeclaration('g()'),
childAccessors: [
(node) => node.functionExpression,
- (node) => node.name,
(node) => node.returnType!,
],
);
@@ -1064,7 +1050,6 @@
destination: findNode.functionTypeAlias('int F'),
source: findNode.functionTypeAlias('double G'),
childAccessors: [
- (node) => node.name,
(node) => node.parameters,
(node) => node.returnType!,
(node) => node.typeParameters!,
@@ -1088,7 +1073,6 @@
source: findNode.functionTypedFormalParameter('b<U>'),
childAccessors: [
(node) => node.returnType!,
- (node) => node.identifier,
(node) => node.typeParameters!,
(node) => node.parameters,
],
@@ -1355,7 +1339,6 @@
source: findNode.methodDeclaration('bar'),
childAccessors: [
(node) => node.returnType!,
- (node) => node.name,
(node) => node.typeParameters!,
(node) => node.parameters!,
(node) => node.body,
@@ -1626,7 +1609,6 @@
source: findNode.simpleFormalParameter('int b'),
childAccessors: [
(node) => node.type!,
- (node) => node.identifier!,
],
);
}
@@ -1678,7 +1660,6 @@
source: findNode.superFormalParameter('a2'),
childAccessors: [
(node) => node.type!,
- (node) => node.identifier,
],
);
}
@@ -1699,7 +1680,6 @@
source: findNode.superFormalParameter('bar2'),
childAccessors: [
(node) => node.type!,
- (node) => node.identifier,
(node) => node.typeParameters!,
(node) => node.parameters!,
],
@@ -1868,7 +1848,6 @@
destination: findNode.typeParameter('T extends'),
source: findNode.typeParameter('U extends'),
childAccessors: [
- (node) => node.name,
(node) => node.bound!,
],
);
@@ -1897,7 +1876,6 @@
destination: findNode.variableDeclaration('a = 0'),
source: findNode.variableDeclaration('b = 1'),
childAccessors: [
- (node) => node.name,
(node) => node.initializer!,
],
);
diff --git a/pkg/analyzer/test/generated/variance_parser_test.dart b/pkg/analyzer/test/generated/variance_parser_test.dart
index 37c8af3..358a867 100644
--- a/pkg/analyzer/test/generated/variance_parser_test.dart
+++ b/pkg/analyzer/test/generated/variance_parser_test.dart
@@ -64,14 +64,14 @@
var unit = parseCompilationUnit('class A<in T, inout U, out V, W> { }');
expect(unit.declarations, hasLength(1));
var classDecl = unit.declarations[0] as ClassDeclaration;
- expect(classDecl.name.name, 'A');
+ expect(classDecl.name2.lexeme, 'A');
var typeParameters = classDecl.typeParameters!;
expect(typeParameters.typeParameters, hasLength(4));
- expect(typeParameters.typeParameters[0].name.name, 'T');
- expect(typeParameters.typeParameters[1].name.name, 'U');
- expect(typeParameters.typeParameters[2].name.name, 'V');
- expect(typeParameters.typeParameters[3].name.name, 'W');
+ expect(typeParameters.typeParameters[0].name2.lexeme, 'T');
+ expect(typeParameters.typeParameters[1].name2.lexeme, 'U');
+ expect(typeParameters.typeParameters[2].name2.lexeme, 'V');
+ expect(typeParameters.typeParameters[3].name2.lexeme, 'W');
var typeParameterImplList = typeParameters.typeParameters;
expect((typeParameterImplList[0] as TypeParameterImpl).varianceKeyword,
@@ -100,22 +100,22 @@
]);
expect(unit.declarations, hasLength(1));
var classDecl = unit.declarations[0] as ClassDeclaration;
- expect(classDecl.name.name, 'A');
+ expect(classDecl.name2.lexeme, 'A');
var typeParameters = classDecl.typeParameters!;
expect(typeParameters.typeParameters, hasLength(1));
- expect(typeParameters.typeParameters[0].name.name, 'T');
+ expect(typeParameters.typeParameters[0].name2.lexeme, 'T');
}
void test_class_enabled_single() {
var unit = parseCompilationUnit('class A<in T> { }');
expect(unit.declarations, hasLength(1));
var classDecl = unit.declarations[0] as ClassDeclaration;
- expect(classDecl.name.name, 'A');
+ expect(classDecl.name2.lexeme, 'A');
var typeParameters = classDecl.typeParameters!;
expect(typeParameters.typeParameters, hasLength(1));
- expect(typeParameters.typeParameters[0].name.name, 'T');
+ expect(typeParameters.typeParameters[0].name2.lexeme, 'T');
var typeParameterImpl =
typeParameters.typeParameters[0] as TypeParameterImpl;
@@ -175,11 +175,11 @@
var unit = parseCompilationUnit('mixin A<inout T> { }');
expect(unit.declarations, hasLength(1));
var mixinDecl = unit.declarations[0] as MixinDeclaration;
- expect(mixinDecl.name.name, 'A');
+ expect(mixinDecl.name2.lexeme, 'A');
var typeParameters = mixinDecl.typeParameters!;
expect(typeParameters.typeParameters, hasLength(1));
- expect(typeParameters.typeParameters[0].name.name, 'T');
+ expect(typeParameters.typeParameters[0].name2.lexeme, 'T');
}
void test_typedef_disabled() {
diff --git a/pkg/analyzer/test/id_tests/inheritance_test.dart b/pkg/analyzer/test/id_tests/inheritance_test.dart
index 8dc008f..e178ad1 100644
--- a/pkg/analyzer/test/id_tests/inheritance_test.dart
+++ b/pkg/analyzer/test/id_tests/inheritance_test.dart
@@ -102,7 +102,7 @@
for (var name in interface.map.keys) {
var executable = interface.map[name]!;
- var enclosingClass = executable.enclosingElement2 as ClassElement;
+ var enclosingClass = executable.enclosingElement3 as ClassElement;
if (enclosingClass.isDartCoreObject) continue;
var id = MemberId.internal(
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index 4a00cd4..dca066b 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -733,8 +733,7 @@
VariableElement vElement;
{
var statement = statements[0] as VariableDeclarationStatement;
- vElement = statement.variables.variables[0].name.staticElement
- as VariableElement;
+ vElement = statement.variables.variables[0].declaredElement!;
expect(vElement.type, typeProvider.numType);
}
@@ -978,7 +977,7 @@
forInvocation.argumentList.arguments[0] as FunctionExpression;
var closureElement = closure.declaredElement as FunctionElementImpl;
- expect(closureElement.enclosingElement2, same(mainElement));
+ expect(closureElement.enclosingElement3, same(mainElement));
ParameterElement itemElement = closureElement.parameters[0];
itemElement1 = itemElement;
@@ -1019,7 +1018,7 @@
forInvocation.argumentList.arguments[0] as FunctionExpression;
var closureElement = closure.declaredElement as FunctionElementImpl;
- expect(closureElement.enclosingElement2, same(mainElement));
+ expect(closureElement.enclosingElement3, same(mainElement));
ParameterElement itemElement = closureElement.parameters[0];
expect(itemElement, isNot(same(itemElement1)));
@@ -1062,7 +1061,7 @@
assertType(closure, 'List<T> Function<T>()');
var closureElement = closure.declaredElement as FunctionElementImpl;
- expect(closureElement.enclosingElement2, findElement.function('main'));
+ expect(closureElement.enclosingElement3, findElement.function('main'));
assertType(closureElement.returnType, 'List<T>');
expect(closureElement.parameters, isEmpty);
@@ -1708,7 +1707,7 @@
var methodElement = invocation.methodName.staticElement as MethodElement;
expect(methodElement.name, 'toString');
- expect(methodElement.enclosingElement2, same(objectElement));
+ expect(methodElement.enclosingElement3, same(objectElement));
}
test_error_unresolvedTypeAnnotation() async {
@@ -1729,7 +1728,10 @@
expect(namedType.typeArguments!.arguments[0].type, typeProvider.intType);
VariableDeclaration vNode = statement.variables.variables[0];
+
+ // ignore: deprecated_member_use_from_same_package
expect(vNode.name.staticType, isNull);
+ // ignore: deprecated_member_use_from_same_package
expect(vNode.declaredElement!.type, isDynamicType);
}
@@ -1791,8 +1793,7 @@
expect(p.declaredElement, same(constructor.declaredElement!.parameters[0]));
{
- var type =
- (p.identifier.staticElement as ParameterElement).type as FunctionType;
+ var type = (p.declaredElement as ParameterElement).type as FunctionType;
expect(type.returnType, typeProvider.stringType);
expect(type.parameters, hasLength(1));
@@ -1804,7 +1805,6 @@
{
var a = p.parameters.parameters[0] as SimpleFormalParameter;
_assertNamedTypeSimple(a.type!, typeProvider.intType);
- expect(a.identifier!.staticType, isNull);
}
}
@@ -1834,15 +1834,11 @@
var p = parameters[0] as FieldFormalParameter;
expect(p.declaredElement, same(pElement));
- expect(p.identifier.staticElement, same(pElement));
- assertTypeNull(p.identifier);
-
_assertNamedTypeSimple(p.type!, typeProvider.stringType);
{
var a = p.parameters!.parameters[0] as SimpleFormalParameter;
_assertNamedTypeSimple(a.type!, typeProvider.intType);
- expect(a.identifier!.staticType, isNull);
}
}
@@ -1871,9 +1867,6 @@
var parameterNode = parameters[0] as FieldFormalParameter;
expect(parameterNode.type, isNull);
expect(parameterNode.declaredElement, same(parameterElement));
-
- expect(parameterNode.identifier.staticElement, same(parameterElement));
- assertTypeNull(parameterNode.identifier);
}
test_formalParameter_simple_fieldFormal_typed() async {
@@ -1901,9 +1894,6 @@
var parameterNode = parameters[0] as FieldFormalParameter;
_assertNamedTypeSimple(parameterNode.type!, typeProvider.intType);
expect(parameterNode.declaredElement, same(parameterElement));
-
- expect(parameterNode.identifier.staticElement, same(parameterElement));
- assertTypeNull(parameterNode.identifier);
}
test_forwardingStub_class() async {
@@ -3971,7 +3961,9 @@
expect(fElement, isNotNull);
assertType(fElement.type, fTypeString);
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticElement, same(fElement));
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticType, isNull);
var fReturnTypeNode = fNode.returnType as NamedType;
@@ -4054,19 +4046,25 @@
TypeParameter tNode = fTypeParameters[0];
expect(tNode.declaredElement, same(tElement));
+ // ignore: deprecated_member_use_from_same_package
expect(tNode.name.staticElement, same(tElement));
+ // ignore: deprecated_member_use_from_same_package
expect(tNode.name.staticType, typeProvider.typeType);
TypeParameter uNode = fTypeParameters[1];
expect(uNode.declaredElement, same(uElement));
+ // ignore: deprecated_member_use_from_same_package
expect(uNode.name.staticElement, same(uElement));
+ // ignore: deprecated_member_use_from_same_package
expect(uNode.name.staticType, typeProvider.typeType);
}
expect(fElement, isNotNull);
assertType(fElement.type, 'T Function<T,U>(T, U)');
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticElement, same(fElement));
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticType, fElement.type);
var fReturnTypeNode = fNode.returnType as NamedType;
@@ -4198,7 +4196,9 @@
expect(fElement, isNotNull);
assertType(fElement.type, fTypeString);
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticElement, same(fElement));
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticType, isNull);
var fReturnTypeNode = fNode.returnType as NamedType;
@@ -4263,7 +4263,9 @@
expect(fElement, isNotNull);
assertType(fElement.type, 'Null Function()');
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticElement, same(fElement));
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticType, isNull);
expect(fExpression.declaredElement, same(fElement));
@@ -4290,7 +4292,9 @@
expect(fElement, isNotNull);
assertType(fElement.type, fTypeString);
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticElement, same(fElement));
+ // ignore: deprecated_member_use_from_same_package
expect(fNode.name.staticType, isNull);
var fReturnTypeNode = fNode.returnType as NamedType;
@@ -4772,7 +4776,10 @@
var main = result.unit.declarations[0] as FunctionDeclaration;
expect(main.declaredElement, isNotNull);
+
+ // ignore: deprecated_member_use_from_same_package
expect(main.name.staticElement, isNotNull);
+ // ignore: deprecated_member_use_from_same_package
expect(main.name.staticType, isNull);
var body = main.functionExpression.body as BlockFunctionBody;
@@ -4783,10 +4790,11 @@
{
var statement = statements[0] as VariableDeclarationStatement;
VariableDeclaration vNode = statement.variables.variables[0];
+ // ignore: deprecated_member_use_from_same_package
expect(vNode.name.staticType, isNull);
expect(vNode.initializer!.staticType, intType);
- vElement = vNode.name.staticElement as VariableElement;
+ vElement = vNode.declaredElement!;
expect(vElement, isNotNull);
expect(vElement.type, isNotNull);
expect(vElement.type, intType);
@@ -4929,7 +4937,9 @@
LocalVariableElement vElement = vNode.declaredElement!;
expect(vElement.type, typeProvider.intType);
+ // ignore: deprecated_member_use_from_same_package
expect(vNode.identifier.staticElement, vElement);
+ // ignore: deprecated_member_use_from_same_package
expect(vNode.identifier.staticType, isNull);
var statement = forBlock.statements[0] as ExpressionStatement;
@@ -4966,7 +4976,9 @@
expect(vTypeIdentifier.staticElement, typeProvider.numType.element);
expect(vTypeIdentifier.staticType, isNull);
+ // ignore: deprecated_member_use_from_same_package
expect(vNode.identifier.staticElement, vElement);
+ // ignore: deprecated_member_use_from_same_package
expect(vNode.identifier.staticType, isNull);
var statement = forBlock.statements[0] as ExpressionStatement;
@@ -5133,7 +5145,9 @@
expect(methodElement, isNotNull);
assertType(methodElement.type, fTypeString);
+ // ignore: deprecated_member_use_from_same_package
expect(methodDeclaration.name.staticElement, same(methodElement));
+ // ignore: deprecated_member_use_from_same_package
expect(methodDeclaration.name.staticType, isNull);
var fReturnTypeNode = methodDeclaration.returnType as NamedType;
@@ -6546,7 +6560,10 @@
var main = result.unit.declarations[0] as FunctionDeclaration;
expect(main.declaredElement, isNotNull);
+
+ // ignore: deprecated_member_use_from_same_package
expect(main.name.staticElement, isNotNull);
+ // ignore: deprecated_member_use_from_same_package
expect(main.name.staticType, isNull);
var body = main.functionExpression.body as BlockFunctionBody;
@@ -6556,8 +6573,7 @@
VariableElement vElement;
{
var statement = statements[0] as VariableDeclarationStatement;
- vElement = statement.variables.variables[0].name.staticElement
- as VariableElement;
+ vElement = statement.variables.variables[0].declaredElement!;
}
{
@@ -6902,6 +6918,7 @@
var dNode = result.unit.declarations[3] as ClassDeclaration;
Element dElement = dNode.declaredElement!;
+ // ignore: deprecated_member_use_from_same_package
SimpleIdentifier dName = dNode.name;
expect(dName.staticElement, same(dElement));
expect(dName.staticType, isNull);
@@ -6971,6 +6988,7 @@
var dNode = result.unit.declarations[3] as ClassTypeAlias;
Element dElement = dNode.declaredElement!;
+ // ignore: deprecated_member_use_from_same_package
SimpleIdentifier dName = dNode.name;
expect(dName.staticElement, same(dElement));
expect(dName.staticType, isNull);
@@ -7030,6 +7048,7 @@
var enumNode = result.unit.declarations[0] as EnumDeclaration;
ClassElement enumElement = enumNode.declaredElement!;
+ // ignore: deprecated_member_use_from_same_package
SimpleIdentifier dName = enumNode.name;
expect(dName.staticElement, same(enumElement));
expect(dName.staticType, isNull);
@@ -7038,7 +7057,10 @@
var aElement = enumElement.getField('A');
var aNode = enumNode.constants[0];
expect(aNode.declaredElement, same(aElement));
+
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticElement, same(aElement));
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticType, isNull);
}
@@ -7046,7 +7068,10 @@
var bElement = enumElement.getField('B');
var bNode = enumNode.constants[1];
expect(bNode.declaredElement, same(bElement));
+
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticElement, same(bElement));
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticType, isNull);
}
}
@@ -7072,7 +7097,9 @@
ClassElement cElement = cNode.declaredElement!;
// The class name identifier.
+ // ignore: deprecated_member_use_from_same_package
expect(cNode.name.staticElement, same(cElement));
+ // ignore: deprecated_member_use_from_same_package
expect(cNode.name.staticType, isNull);
// unnamed constructor
@@ -7082,7 +7109,7 @@
assertType(node.declaredElement!.type, 'C Function(int)');
expect(node.returnType.staticElement, same(cElement));
expect(node.returnType.staticType, isNull);
- expect(node.name, isNull);
+ expect(node.name2, isNull);
}
// named constructor
@@ -7092,7 +7119,10 @@
assertType(node.declaredElement!.type, 'C Function(int)');
expect(node.returnType.staticElement, same(cElement));
expect(node.returnType.staticType, isNull);
+
+ // ignore: deprecated_member_use_from_same_package
expect(node.name!.staticElement, same(node.declaredElement));
+ // ignore: deprecated_member_use_from_same_package
expect(node.name!.staticType, isNull);
}
@@ -7110,7 +7140,9 @@
expect(returnTypeName.staticType, isNull);
// method name
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticElement, same(node.declaredElement));
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticType, isNull);
// method parameter
@@ -7122,9 +7154,6 @@
var pType = pNode.type as NamedType;
expect(pType.name.staticElement, doubleElement);
expect(pType.name.staticType, isNull);
-
- expect(pNode.identifier!.staticElement, pNode.declaredElement);
- expect(pNode.identifier!.staticType, isNull);
}
}
@@ -7142,7 +7171,9 @@
expect(returnTypeName.staticType, isNull);
// getter name
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticElement, same(node.declaredElement));
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticType, isNull);
}
@@ -7160,7 +7191,9 @@
expect(returnTypeName.staticType, isNull);
// setter name
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticElement, same(node.declaredElement));
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticType, isNull);
// setter parameter
@@ -7172,9 +7205,6 @@
var pType = pNode.type as NamedType;
expect(pType.name.staticElement, doubleElement);
expect(pType.name.staticType, isNull);
-
- expect(pNode.identifier!.staticElement, pNode.declaredElement);
- expect(pNode.identifier!.staticType, isNull);
}
}
}
@@ -7205,7 +7235,9 @@
expect(returnTypeName.staticType, isNull);
// function name
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticElement, same(node.declaredElement));
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticType, isNull);
// function parameter
@@ -7218,9 +7250,6 @@
var pType = pNode.type as NamedType;
expect(pType.name.staticElement, doubleElement);
expect(pType.name.staticType, isNull);
-
- expect(pNode.identifier!.staticElement, pNode.declaredElement);
- expect(pNode.identifier!.staticType, isNull);
}
}
@@ -7238,7 +7267,9 @@
expect(returnTypeName.staticType, isNull);
// getter name
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticElement, same(node.declaredElement));
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticType, isNull);
}
@@ -7256,7 +7287,9 @@
expect(returnTypeName.staticType, isNull);
// setter name
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticElement, same(node.declaredElement));
+ // ignore: deprecated_member_use_from_same_package
expect(node.name.staticType, isNull);
// setter parameter
@@ -7269,9 +7302,6 @@
var pType = pNode.type as NamedType;
expect(pType.name.staticElement, doubleElement);
expect(pType.name.staticType, isNull);
-
- expect(pNode.identifier!.staticElement, pNode.declaredElement);
- expect(pNode.identifier!.staticType, isNull);
}
}
}
@@ -7300,7 +7330,9 @@
VariableDeclaration aNode = aDeclaration.fields.variables[0];
expect(aNode.declaredElement, same(aElement));
expect(aElement.type, typeProvider.intType);
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticElement, same(aElement));
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticType, isNull);
var aValue = aNode.initializer as Expression;
@@ -7319,7 +7351,9 @@
VariableDeclaration bNode = bDeclaration.fields.variables[0];
expect(bNode.declaredElement, same(bElement));
expect(bElement.type, typeParameterTypeNone(tElement));
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticElement, same(bElement));
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticType, isNull);
}
}
@@ -7347,7 +7381,9 @@
expect(aNode.declaredElement, same(aElement));
expect(aElement.type, typeProvider.intType);
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticElement, same(aElement));
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticType, isNull);
Expression aValue = aNode.initializer!;
@@ -7361,7 +7397,9 @@
expect(bNode.declaredElement, same(bElement));
expect(bElement.type, typeProvider.doubleType);
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticElement, same(bElement));
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticType, isNull);
Expression aValue = bNode.initializer!;
@@ -7386,7 +7424,9 @@
var aElement = aNode.declaredElement as TopLevelVariableElement;
expect(aElement, same(unitElement.topLevelVariables[0]));
expect(aElement.type, typeProvider.intType);
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticElement, same(aElement));
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticType, isNull);
Expression aValue = aNode.initializer!;
@@ -7404,7 +7444,9 @@
var namedType = bDeclaration.variables.type as NamedType;
_assertNamedTypeSimple(namedType, typeProvider.doubleType);
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticElement, same(bElement));
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticType, isNull);
Expression aValue = bNode.initializer!;
@@ -7432,7 +7474,9 @@
expect(aElement, same(unitElement.topLevelVariables[0]));
expect(aElement.type, typeProvider.intType);
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticElement, same(aElement));
+ // ignore: deprecated_member_use_from_same_package
expect(aNode.name.staticType, isNull);
Expression aValue = aNode.initializer!;
@@ -7445,7 +7489,9 @@
expect(bElement, same(unitElement.topLevelVariables[1]));
expect(bElement.type, typeProvider.doubleType);
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticElement, same(bElement));
+ // ignore: deprecated_member_use_from_same_package
expect(bNode.name.staticType, isNull);
Expression aValue = bNode.initializer!;
@@ -7471,7 +7517,9 @@
expect(fElement, isNotNull);
assertType(fElement.type, fTypeString);
+ // ignore: deprecated_member_use_from_same_package
expect(fDeclaration.name.staticElement, same(fElement));
+ // ignore: deprecated_member_use_from_same_package
expect(fDeclaration.name.staticType, isNull);
var fReturnTypeNode = fDeclaration.returnType as NamedType;
@@ -8629,7 +8677,6 @@
expect(node, isNotNull);
expect(node.declaredElement, same(element));
- expect(node.identifier!.staticElement, same(element));
var namedType = node.type as NamedType?;
if (namedType != null) {
@@ -8641,7 +8688,7 @@
List<Statement> _getMainStatements(ResolvedUnitResult result) {
for (var declaration in result.unit.declarations) {
if (declaration is FunctionDeclaration &&
- declaration.name.name == 'main') {
+ declaration.name2.lexeme == 'main') {
var body = declaration.functionExpression.body as BlockFunctionBody;
return body.block.statements;
}
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index c022aa3..06f8192 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -3531,7 +3531,7 @@
ClassDeclaration _getClass(CompilationUnit unit, String name) {
for (CompilationUnitMember declaration in unit.declarations) {
if (declaration is ClassDeclaration) {
- if (declaration.name.name == name) {
+ if (declaration.name2.lexeme == name) {
return declaration;
}
}
@@ -3545,7 +3545,7 @@
for (ClassMember declaration in classDeclaration.members) {
if (declaration is FieldDeclaration) {
for (var field in declaration.fields.variables) {
- if (field.name.name == fieldName) {
+ if (field.name2.lexeme == fieldName) {
return field;
}
}
@@ -3559,7 +3559,7 @@
ClassDeclaration classDeclaration = _getClass(unit, className);
for (ClassMember declaration in classDeclaration.members) {
if (declaration is MethodDeclaration &&
- declaration.name.name == methodName) {
+ declaration.name2.lexeme == methodName) {
return declaration;
}
}
@@ -3581,7 +3581,7 @@
for (CompilationUnitMember declaration in unit.declarations) {
if (declaration is TopLevelVariableDeclaration) {
for (VariableDeclaration variable in declaration.variables.variables) {
- if (variable.name.name == name) {
+ if (variable.name2.lexeme == name) {
return variable;
}
}
diff --git a/pkg/analyzer/test/src/dart/analysis/results/get_element_declaration_test.dart b/pkg/analyzer/test/src/dart/analysis/results/get_element_declaration_test.dart
index 77c78fb..c4bf3b8 100644
--- a/pkg/analyzer/test/src/dart/analysis/results/get_element_declaration_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/results/get_element_declaration_test.dart
@@ -28,7 +28,7 @@
var element = findNode.classDeclaration('A').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ClassDeclaration;
- expect(node.name.name, 'A');
+ expect(node.name2.lexeme, 'A');
}
test_class_duplicate() async {
@@ -40,9 +40,9 @@
var element = findNode.classDeclaration('A {} // 1').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ClassDeclaration;
- expect(node.name.name, 'A');
+ expect(node.name2.lexeme, 'A');
expect(
- node.name.offset,
+ node.name2.offset,
this.result.content.indexOf('A {} // 1'),
);
}
@@ -51,9 +51,9 @@
var element = findNode.classDeclaration('A {} // 2').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ClassDeclaration;
- expect(node.name.name, 'A');
+ expect(node.name2.lexeme, 'A');
expect(
- node.name.offset,
+ node.name2.offset,
this.result.content.indexOf('A {} // 2'),
);
}
@@ -71,7 +71,7 @@
var element = library.getType('A')!;
var result = await getElementDeclaration(element);
var node = result!.node as ClassDeclaration;
- expect(node.name.name, 'A');
+ expect(node.name2.lexeme, 'A');
}
test_class_missingName() async {
@@ -81,8 +81,8 @@
var element = findNode.classDeclaration('class {}').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ClassDeclaration;
- expect(node.name.name, '');
- expect(node.name.offset, 6);
+ expect(node.name2.lexeme, '');
+ expect(node.name2.offset, 6);
}
test_classTypeAlias() async {
@@ -94,7 +94,7 @@
var element = findElement.class_('B');
var result = await getElementDeclaration(element);
var node = result!.node as ClassTypeAlias;
- expect(node.name.name, 'B');
+ expect(node.name2.lexeme, 'B');
}
test_compilationUnit() async {
@@ -115,14 +115,14 @@
var unnamed = findNode.constructor('A();').declaredElement!;
var result = await getElementDeclaration(unnamed);
var node = result!.node as ConstructorDeclaration;
- expect(node.name, isNull);
+ expect(node.name2, isNull);
}
{
var named = findNode.constructor('A.named();').declaredElement!;
var result = await getElementDeclaration(named);
var node = result!.node as ConstructorDeclaration;
- expect(node.name!.name, 'named');
+ expect(node.name2!.lexeme, 'named');
}
}
@@ -137,9 +137,9 @@
var element = findNode.constructor('A.named(); // 1').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ConstructorDeclaration;
- expect(node.name!.name, 'named');
+ expect(node.name2!.lexeme, 'named');
expect(
- node.name!.offset,
+ node.name2!.offset,
this.result.content.indexOf('named(); // 1'),
);
}
@@ -148,9 +148,9 @@
var element = findNode.constructor('A.named(); // 2').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ConstructorDeclaration;
- expect(node.name!.name, 'named');
+ expect(node.name2!.lexeme, 'named');
expect(
- node.name!.offset,
+ node.name2!.offset,
this.result.content.indexOf('named(); // 2'),
);
}
@@ -167,7 +167,7 @@
var element = findNode.constructor('A(); // 1').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ConstructorDeclaration;
- expect(node.name, isNull);
+ expect(node.name2, isNull);
expect(
node.returnType.offset,
this.result.content.indexOf('A(); // 1'),
@@ -178,7 +178,7 @@
var element = findNode.constructor('A(); // 2').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ConstructorDeclaration;
- expect(node.name, isNull);
+ expect(node.name2, isNull);
expect(
node.returnType.offset,
this.result.content.indexOf('A(); // 2'),
@@ -204,7 +204,7 @@
var element = findElement.enum_('MyEnum');
var result = await getElementDeclaration(element);
var node = result!.node as EnumDeclaration;
- expect(node.name.name, 'MyEnum');
+ expect(node.name2.lexeme, 'MyEnum');
}
test_enum_constant() async {
@@ -214,7 +214,7 @@
var element = findElement.field('a');
var result = await getElementDeclaration(element);
var node = result!.node as EnumConstantDeclaration;
- expect(node.name.name, 'a');
+ expect(node.name2.lexeme, 'a');
}
test_extension() async {
@@ -224,7 +224,7 @@
var element = findNode.extensionDeclaration('E').declaredElement!;
var result = await getElementDeclaration(element);
var node = result!.node as ExtensionDeclaration;
- expect(node.name!.name, 'E');
+ expect(node.name2!.lexeme, 'E');
}
test_field() async {
@@ -237,7 +237,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as VariableDeclaration;
- expect(node.name.name, 'foo');
+ expect(node.name2.lexeme, 'foo');
}
test_functionDeclaration_local() async {
@@ -250,7 +250,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as FunctionDeclaration;
- expect(node.name.name, 'foo');
+ expect(node.name2.lexeme, 'foo');
}
test_functionDeclaration_top() async {
@@ -261,7 +261,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as FunctionDeclaration;
- expect(node.name.name, 'foo');
+ expect(node.name2.lexeme, 'foo');
}
test_genericFunctionTypeElement() async {
@@ -282,7 +282,7 @@
var element = findElement.getter('x');
var result = await getElementDeclaration(element);
var node = result!.node as MethodDeclaration;
- expect(node.name.name, 'x');
+ expect(node.name2.lexeme, 'x');
expect(node.isGetter, isTrue);
}
@@ -293,7 +293,7 @@
var element = findElement.topGet('x');
var result = await getElementDeclaration(element);
var node = result!.node as FunctionDeclaration;
- expect(node.name.name, 'x');
+ expect(node.name2.lexeme, 'x');
expect(node.isGetter, isTrue);
}
@@ -316,7 +316,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as VariableDeclaration;
- expect(node.name.name, 'foo');
+ expect(node.name2.lexeme, 'foo');
}
test_method() async {
@@ -329,7 +329,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as MethodDeclaration;
- expect(node.name.name, 'foo');
+ expect(node.name2.lexeme, 'foo');
}
test_mixin() async {
@@ -339,7 +339,7 @@
var element = findElement.mixin('M');
var result = await getElementDeclaration(element);
var node = result!.node as MixinDeclaration;
- expect(node.name.name, 'M');
+ expect(node.name2.lexeme, 'M');
}
test_parameter() async {
@@ -350,7 +350,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as SimpleFormalParameter;
- expect(node.identifier!.name, 'a');
+ expect(node.name!.lexeme, 'a');
}
test_parameter_missingName_named() async {
@@ -364,7 +364,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as DefaultFormalParameter;
- expect(node.identifier!.name, '');
+ expect(node.name!.lexeme, '');
}
test_parameter_missingName_required() async {
@@ -378,7 +378,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as SimpleFormalParameter;
- expect(node.identifier!.name, '');
+ expect(node.name!.lexeme, '');
}
test_setter_class() async {
@@ -390,7 +390,7 @@
var element = findElement.setter('x');
var result = await getElementDeclaration(element);
var node = result!.node as MethodDeclaration;
- expect(node.name.name, 'x');
+ expect(node.name2.lexeme, 'x');
expect(node.isSetter, isTrue);
}
@@ -401,7 +401,7 @@
var element = findElement.topSet('x');
var result = await getElementDeclaration(element);
var node = result!.node as FunctionDeclaration;
- expect(node.name.name, 'x');
+ expect(node.name2.lexeme, 'x');
expect(node.isSetter, isTrue);
}
@@ -413,7 +413,7 @@
var result = await getElementDeclaration(element);
var node = result!.node as VariableDeclaration;
- expect(node.name.name, 'foo');
+ expect(node.name2.lexeme, 'foo');
}
test_topLevelVariable_synthetic() async {
diff --git a/pkg/analyzer/test/src/dart/analysis/session_helper_test.dart b/pkg/analyzer/test/src/dart/analysis/session_helper_test.dart
index d583870..08e34ba 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_helper_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_helper_test.dart
@@ -81,7 +81,7 @@
var element = findElement.class_('A');
var result = (await helper.getElementDeclaration(element))!;
var node = result.node as ClassDeclaration;
- expect(node.name.name, 'A');
+ expect(node.name2.lexeme, 'A');
}
test_getResolvedUnitByElement() async {
diff --git a/pkg/analyzer/test/src/dart/analysis/session_test.dart b/pkg/analyzer/test/src/dart/analysis/session_test.dart
index 0e071ee..9c13ede 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_test.dart
@@ -329,7 +329,7 @@
var element = libraryResult.element.getType('A')!;
var declaration = parsedLibrary.getElementDeclaration(element)!;
var node = declaration.node as ClassDeclaration;
- expect(node.name.name, 'A');
+ expect(node.name2.lexeme, 'A');
expect(node.offset, 0);
expect(node.length, 10);
}
@@ -365,10 +365,9 @@
// We can get the variable element declaration.
var fooDeclaration = parsedLibrary.getElementDeclaration(fooElement)!;
var fooNode = fooDeclaration.node as VariableDeclaration;
- expect(fooNode.name.name, 'foo');
+ expect(fooNode.name2.lexeme, 'foo');
expect(fooNode.offset, 4);
expect(fooNode.length, 7);
- expect(fooNode.name.staticElement, isNull);
// Synthetic elements don't have nodes.
expect(parsedLibrary.getElementDeclaration(fooElement.getter!), isNull);
@@ -593,14 +592,14 @@
var aDeclaration = resolvedLibrary.getElementDeclaration(aClass)!;
var aNode = aDeclaration.node as ClassDeclaration;
- expect(aNode.name.name, 'A');
+ expect(aNode.name2.lexeme, 'A');
expect(aNode.offset, 16);
expect(aNode.length, 16);
expect(aNode.declaredElement!.name, 'A');
var bDeclaration = resolvedLibrary.getElementDeclaration(bClass)!;
var bNode = bDeclaration.node as ClassDeclaration;
- expect(bNode.name.name, 'B');
+ expect(bNode.name2.lexeme, 'B');
expect(bNode.offset, 19);
expect(bNode.length, 16);
expect(bNode.declaredElement!.name, 'B');
@@ -633,7 +632,7 @@
// We can get the variable element declaration.
var fooDeclaration = resolvedLibrary.getElementDeclaration(fooElement)!;
var fooNode = fooDeclaration.node as VariableDeclaration;
- expect(fooNode.name.name, 'foo');
+ expect(fooNode.name2.lexeme, 'foo');
expect(fooNode.offset, 4);
expect(fooNode.length, 7);
expect(fooNode.declaredElement!.name, 'foo');
diff --git a/pkg/analyzer/test/src/dart/ast/element_locator_test.dart b/pkg/analyzer/test/src/dart/ast/element_locator_test.dart
index ab8a0dd..214b03a 100644
--- a/pkg/analyzer/test/src/dart/ast/element_locator_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/element_locator_test.dart
@@ -52,13 +52,24 @@
expect(element, same(unitElement));
}
- test_locate_ConstructorDeclaration() async {
+ test_locate_ConstructorDeclaration_named() async {
await resolveTestCode(r'''
class A {
A.foo();
}
''');
- var node = findNode.constructor('foo();');
+ var node = findNode.constructor('A.foo()');
+ var element = ElementLocator.locate(node);
+ expect(element, isConstructorElement);
+ }
+
+ test_locate_ConstructorDeclaration_unnamed() async {
+ await resolveTestCode(r'''
+class A {
+ A();
+}
+''');
+ var node = findNode.constructor('A()');
var element = ElementLocator.locate(node);
expect(element, isConstructorElement);
}
@@ -137,7 +148,7 @@
A();
}
''');
- var node = findNode.constructor('A();');
+ var node = findNode.simple('A()');
var element = ElementLocator.locate(node);
expect(element, isConstructorElement);
}
diff --git a/pkg/analyzer/test/src/dart/ast/utilities_test.dart b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
index 81e36e0..7468a58 100644
--- a/pkg/analyzer/test/src/dart/ast/utilities_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
@@ -26,6 +26,7 @@
var declaration = unit.declarations[0] as TopLevelVariableDeclaration;
VariableDeclarationList variableList = declaration.variables;
Identifier typeName = (variableList.type as NamedType).name;
+ // ignore: deprecated_member_use_from_same_package
SimpleIdentifier varName = variableList.variables[0].name;
expect(NodeLocator2(0).searchWithin(unit), same(unit));
expect(NodeLocator2(1).searchWithin(unit), same(typeName));
@@ -47,6 +48,7 @@
var declaration = unit.declarations[0] as TopLevelVariableDeclaration;
VariableDeclarationList variableList = declaration.variables;
Identifier typeName = (variableList.type as NamedType).name;
+ // ignore: deprecated_member_use_from_same_package
SimpleIdentifier varName = variableList.variables[0].name;
expect(NodeLocator2(-1, 2).searchWithin(unit), isNull);
expect(NodeLocator2(0, 2).searchWithin(unit), same(unit));
diff --git a/pkg/analyzer/test/src/dart/constant/utilities_test.dart b/pkg/analyzer/test/src/dart/constant/utilities_test.dart
index 913f242..8a22db8 100644
--- a/pkg/analyzer/test/src/dart/constant/utilities_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/utilities_test.dart
@@ -203,7 +203,7 @@
keyword == Keyword.FINAL,
keyword == Keyword.CONST,
_typeProvider.intType);
- variableDeclaration.name.staticElement = fieldElement;
+ variableDeclaration.declaredElement = fieldElement;
FieldDeclaration fieldDeclaration = AstTestFactory.fieldDeclaration2(
isStatic, keyword, <VariableDeclaration>[variableDeclaration]);
var classDeclaration = AstTestFactory.classDeclaration(
@@ -212,7 +212,7 @@
_node = classDeclaration;
ClassElementImpl classElement = ElementFactory.classElement2(className);
classElement.fields = <FieldElement>[fieldElement];
- classDeclaration.name.staticElement = classElement;
+ classDeclaration.declaredElement = classElement;
if (hasConstConstructor) {
var constructorDeclaration = AstTestFactory.constructorDeclaration2(
Keyword.CONST,
@@ -239,9 +239,8 @@
var variableDeclaration = isInitialized
? AstTestFactory.variableDeclaration2(name, AstTestFactory.integer(0))
: AstTestFactory.variableDeclaration(name);
- var identifier = variableDeclaration.name;
- VariableElement element = ElementFactory.localVariableElement(identifier);
- identifier.staticElement = element;
+ VariableElement element = ElementFactory.localVariableElement2(name);
+ variableDeclaration.declaredElement = element;
var keyword = isConst
? Keyword.CONST
: isFinal
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index eb4f3fb..3cbb36f 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -1416,7 +1416,7 @@
void _assertExecutable(ExecutableElement? element, String? expected) {
if (expected != null && element != null) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
var type = element.type;
var typeStr = typeString(type);
@@ -1426,7 +1426,7 @@
if (element is PropertyAccessorElement) {
var variable = element.variable;
- expect(variable.enclosingElement2, same(element.enclosingElement2));
+ expect(variable.enclosingElement3, same(element.enclosingElement3));
expect(variable.name, element.displayName);
if (element.isGetter) {
expect(variable.type, element.returnType);
@@ -1508,7 +1508,7 @@
var element = entry.value;
var type = element.type;
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement.name == 'Object') continue;
var typeStr = type.getDisplayString(withNullability: false);
diff --git a/pkg/analyzer/test/src/dart/resolution/enum_test.dart b/pkg/analyzer/test/src/dart/resolution/enum_test.dart
index a569dbc..dd2db98 100644
--- a/pkg/analyzer/test/src/dart/resolution/enum_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/enum_test.dart
@@ -87,10 +87,7 @@
final node = findNode.enumConstantDeclaration('v.');
assertResolvedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
- staticElement: self::@enum::E::@field::v
- staticType: null
+ name: v
arguments: EnumConstantArguments
constructorSelector: ConstructorSelector
period: .
@@ -126,10 +123,7 @@
final node = findNode.enumConstantDeclaration('v(');
assertResolvedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
- staticElement: self::@enum::E::@field::v
- staticType: null
+ name: v
arguments: EnumConstantArguments
argumentList: ArgumentList
leftParenthesis: (
@@ -159,10 +153,7 @@
final node = findNode.enumConstantDeclaration('v<');
assertResolvedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
- staticElement: self::@enum::E::@field::v
- staticType: null
+ name: v
arguments: EnumConstantArguments
typeArguments: TypeArgumentList
leftBracket: <
@@ -208,10 +199,7 @@
final node = findNode.enumConstantDeclaration('v.');
assertResolvedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
- staticElement: self::@enum::E::@field::v
- staticType: null
+ name: v
arguments: EnumConstantArguments
constructorSelector: ConstructorSelector
period: .
@@ -243,10 +231,7 @@
final node = findNode.enumConstantDeclaration('v(');
assertResolvedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
- staticElement: self::@enum::E::@field::v
- staticType: null
+ name: v
arguments: EnumConstantArguments
argumentList: ArgumentList
leftParenthesis: (
@@ -271,10 +256,7 @@
final node = findNode.enumConstantDeclaration('v\n');
assertResolvedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
- staticElement: self::@enum::E::@field::v
- staticType: null
+ name: v
constructorElement: self::@enum::E::@constructor::•
declaredElement: self::@enum::E::@field::v
''');
@@ -293,10 +275,7 @@
final node = findNode.enumConstantDeclaration('v.');
assertResolvedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
- staticElement: self::@enum::E::@field::v
- staticType: null
+ name: v
arguments: EnumConstantArguments
constructorSelector: ConstructorSelector
period: .
@@ -330,10 +309,7 @@
final node = findNode.enumConstantDeclaration('v(');
assertResolvedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
- staticElement: self::@enum::E::@field::v
- staticType: null
+ name: v
arguments: EnumConstantArguments
argumentList: ArgumentList
leftParenthesis: (
diff --git a/pkg/analyzer/test/src/dart/resolution/function_reference_test.dart b/pkg/analyzer/test/src/dart/resolution/function_reference_test.dart
index 8cd9fc4..7e50d1e 100644
--- a/pkg/analyzer/test/src/dart/resolution/function_reference_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/function_reference_test.dart
@@ -62,10 +62,7 @@
leftBracket: <
typeParameters
TypeParameter
- name: SimpleIdentifier
- token: T
- staticElement: T@89
- staticType: null
+ name: T
declaredElement: T@89
rightBracket: >
parameters: FormalParameterList
@@ -287,10 +284,7 @@
leftBracket: <
typeParameters
TypeParameter
- name: SimpleIdentifier
- token: T
- staticElement: T@37
- staticType: null
+ name: T
declaredElement: T@37
rightBracket: >
parameters: FormalParameterList
@@ -302,10 +296,7 @@
staticElement: T@37
staticType: null
type: T
- identifier: SimpleIdentifier
- token: a
- staticElement: @36::@parameter::a
- staticType: null
+ name: a
declaredElement: @36::@parameter::a
declaredElementType: T
rightParenthesis: )
diff --git a/pkg/analyzer/test/src/dart/resolution/library_import_test.dart b/pkg/analyzer/test/src/dart/resolution/library_import_test.dart
index 0402d00..e575fbf 100644
--- a/pkg/analyzer/test/src/dart/resolution/library_import_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/library_import_test.dart
@@ -344,10 +344,7 @@
keyword: var
variables
VariableDeclaration
- name: SimpleIdentifier
- token: a
- staticElement: self::@variable::a
- staticType: null
+ name: a
equals: =
initializer: InstanceCreationExpression
constructorName: ConstructorName
@@ -449,10 +446,7 @@
keyword: var
variables
VariableDeclaration
- name: SimpleIdentifier
- token: a
- staticElement: self::@variable::a
- staticType: null
+ name: a
equals: =
initializer: InstanceCreationExpression
constructorName: ConstructorName
@@ -676,10 +670,7 @@
keyword: var
variables
VariableDeclaration
- name: SimpleIdentifier
- token: a
- staticElement: self::@variable::a
- staticType: null
+ name: a
equals: =
initializer: InstanceCreationExpression
constructorName: ConstructorName
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index 0820f8c..b1ea604c 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -32,7 +32,7 @@
assertElementName(gElement, 'g', offset: 20);
var gNode = findNode.methodDeclaration('g =>');
- assertElement(gNode.name, gElement);
+ expect(gNode.declaredElement, same(gElement));
var fields = element.fields;
expect(fields, hasLength(1));
@@ -55,7 +55,7 @@
assertElementName(fooElement, 'foo', offset: 17);
var fooNode = findNode.methodDeclaration('foo()');
- assertElement(fooNode.name, fooElement);
+ expect(fooNode.declaredElement, same(fooElement));
}
test_accessor_setter() async {
@@ -74,7 +74,7 @@
assertElementName(sElement, 's=', offset: 21);
var gNode = findNode.methodDeclaration('s(int _)');
- assertElement(gNode.name, sElement);
+ expect(gNode.declaredElement, same(sElement));
var fields = element.fields;
expect(fields, hasLength(1));
@@ -206,7 +206,7 @@
assertEnclosingElement(tElement, element);
var tNode = findNode.typeParameter('T> {');
- assertElement(tNode.name, tElement);
+ assertElement(tNode.declaredElement, tElement);
var fields = element.fields;
expect(fields, hasLength(1));
@@ -216,7 +216,7 @@
assertEnclosingElement(fElement, element);
var fNode = findNode.variableDeclaration('f;');
- assertElement(fNode.name, fElement);
+ assertElement(fNode.declaredElement, fElement);
assertNamedType(findNode.namedType('T f'), tElement, 'T');
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index cf74902..f386b87 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -215,7 +215,7 @@
}
void assertEnclosingElement(Element element, Element expectedEnclosing) {
- expect(element.enclosingElement2, expectedEnclosing);
+ expect(element.enclosingElement3, expectedEnclosing);
}
Future<void> assertErrorsInCode(
@@ -492,7 +492,7 @@
) {
var actualMapString = Map.fromEntries(
substitution.map.entries.where((entry) {
- return entry.key.enclosingElement2 is! ExecutableElement;
+ return entry.key.enclosingElement3 is! ExecutableElement;
}).map((entry) {
return MapEntry(
entry.key.name,
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/inference_update_1_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/inference_update_1_test.dart
index 87e173b..299ab7c 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/inference_update_1_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/inference_update_1_test.dart
@@ -64,7 +64,7 @@
assertType(findElement.localVar('a').type, 'int');
assertType(findElement.parameter('x').type, 'int');
assertType(findElement.parameter('y').type, 'int');
- expect(findNode.binary('x + y').staticElement!.enclosingElement2.name,
+ expect(findNode.binary('x + y').staticElement!.enclosingElement3.name,
'num');
} else {
await assertErrorsInCode(code, [
@@ -130,7 +130,7 @@
assertType(findElement.localVar('a').type, _isEnabled ? 'int' : 'dynamic');
assertType(findElement.parameter('x').type, _isEnabled ? 'int' : 'Object?');
assertType(findElement.parameter('y').type, 'int');
- expect(findNode.binary('+ y').staticElement?.enclosingElement2.name,
+ expect(findNode.binary('+ y').staticElement?.enclosingElement3.name,
_isEnabled ? 'num' : null);
}
@@ -294,7 +294,7 @@
assertType(findElement.localVar('a').type, 'int?');
assertType(findElement.parameter('x').type, 'int?');
assertType(findElement.parameter('y').type, 'int');
- expect(findNode.binary('+ y').staticElement!.enclosingElement2.name, 'num');
+ expect(findNode.binary('+ y').staticElement!.enclosingElement3.name, 'num');
}
test_horizontal_inference_unnecessary_due_to_explicit_parameter_type_named() async {
@@ -311,7 +311,7 @@
assertType(findElement.localVar('a').type, 'int?');
assertType(findElement.parameter('x').type, 'int?');
assertType(findElement.parameter('y').type, 'int');
- expect(findNode.binary('+ y').staticElement!.enclosingElement2.name, 'num');
+ expect(findNode.binary('+ y').staticElement!.enclosingElement3.name, 'num');
}
test_horizontal_inference_unnecessary_due_to_no_dependency() async {
diff --git a/pkg/analyzer/test/src/diagnostics/extraneous_modifier_test.dart b/pkg/analyzer/test/src/diagnostics/extraneous_modifier_test.dart
index 99c0eb9..d2c9228 100644
--- a/pkg/analyzer/test/src/diagnostics/extraneous_modifier_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extraneous_modifier_test.dart
@@ -29,8 +29,7 @@
assertParsedNodeText(node, r'''
SimpleFormalParameter
keyword: const
- identifier: SimpleIdentifier
- token: a
+ name: a
''');
}
@@ -46,8 +45,7 @@
assertParsedNodeText(node, r'''
SimpleFormalParameter
keyword: var
- identifier: SimpleIdentifier
- token: a
+ name: a
''');
}
@@ -67,8 +65,7 @@
keyword: var
superKeyword: super
period: .
- identifier: SimpleIdentifier
- token: a
+ name: a
''');
}
}
diff --git a/pkg/analyzer/test/src/diagnostics/function_typed_parameter_var_test.dart b/pkg/analyzer/test/src/diagnostics/function_typed_parameter_var_test.dart
index 9ebed01..483d186 100644
--- a/pkg/analyzer/test/src/diagnostics/function_typed_parameter_var_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/function_typed_parameter_var_test.dart
@@ -30,14 +30,12 @@
SuperFormalParameter
superKeyword: super
period: .
- identifier: SimpleIdentifier
- token: a
+ name: a
typeParameters: TypeParameterList
leftBracket: <
typeParameters
TypeParameter
- name: SimpleIdentifier
- token: T
+ name: T
rightBracket: >
parameters: FormalParameterList
leftParenthesis: (
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
index 00b7f90..91bb8d8 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
@@ -26,12 +26,7 @@
error(ParserErrorCode.MIXIN_DECLARES_CONSTRUCTOR, 27, 1),
]);
- var element = findElement.mixin('M');
- var constructorElement = element.constructors.single;
-
var fpNode = findNode.fieldFormalParameter('f);');
- assertElement(fpNode.identifier, constructorElement.parameters[0]);
-
var fpElement = fpNode.declaredElement as FieldFormalParameterElement;
assertElement(fpElement.field, findElement.field('f'));
}
diff --git a/pkg/analyzer/test/src/fasta/ast_builder_test.dart b/pkg/analyzer/test/src/fasta/ast_builder_test.dart
index b8872b3..fda8d7d 100644
--- a/pkg/analyzer/test/src/fasta/ast_builder_test.dart
+++ b/pkg/analyzer/test/src/fasta/ast_builder_test.dart
@@ -26,8 +26,7 @@
ClassDeclaration
augmentKeyword: augment
classKeyword: class
- name: SimpleIdentifier
- token: A
+ name: A
leftBracket: {
rightBracket: }
''');
@@ -54,8 +53,7 @@
offset: 0
abstractKeyword: abstract @16
classKeyword: class @25
- name: SimpleIdentifier
- token: A @31
+ name: A @31
leftBracket: { @33
rightBracket: } @34
''',
@@ -99,8 +97,7 @@
token: Annotation @46
abstractKeyword: abstract @57
classKeyword: class @66
- name: SimpleIdentifier
- token: A @72
+ name: A @72
leftBracket: { @74
rightBracket: } @75
''',
@@ -161,8 +158,7 @@
token: Annotation @46
abstractKeyword: abstract @249
classKeyword: class @258
- name: SimpleIdentifier
- token: A @264
+ name: A @264
leftBracket: { @266
rightBracket: } @267
''',
@@ -180,8 +176,7 @@
ClassDeclaration
macroKeyword: macro
classKeyword: class
- name: SimpleIdentifier
- token: A
+ name: A
leftBracket: {
rightBracket: }
''');
@@ -198,8 +193,7 @@
assertParsedNodeText(node, r'''
ClassTypeAlias
typedefKeyword: class
- name: SimpleIdentifier
- token: A
+ name: A
equals: =
macroKeyword: macro
superclass: NamedType
@@ -284,8 +278,7 @@
var node = parseResult.findNode.enumConstantDeclaration('v.');
assertParsedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
+ name: v
arguments: EnumConstantArguments
constructorSelector: ConstructorSelector
period: .
@@ -310,8 +303,7 @@
var node = parseResult.findNode.enumConstantDeclaration('v.');
assertParsedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
+ name: v
arguments: EnumConstantArguments
constructorSelector: ConstructorSelector
period: .
@@ -337,8 +329,7 @@
var node = parseResult.findNode.enumConstantDeclaration('v.');
assertParsedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
+ name: v
arguments: EnumConstantArguments
constructorSelector: ConstructorSelector
period: .
@@ -364,8 +355,7 @@
var node = parseResult.findNode.enumConstantDeclaration('v<int>.');
assertParsedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
+ name: v
arguments: EnumConstantArguments
typeArguments: TypeArgumentList
leftBracket: <
@@ -400,8 +390,7 @@
node,
r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
+ name: v
arguments: EnumConstantArguments
typeArguments: TypeArgumentList
leftBracket: <
@@ -434,8 +423,7 @@
var node = parseResult.findNode.enumConstantDeclaration('v<int>');
assertParsedNodeText(node, r'''
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
+ name: v
arguments: EnumConstantArguments
typeArguments: TypeArgumentList
leftBracket: <
@@ -462,13 +450,11 @@
assertParsedNodeText(node, r'''
EnumDeclaration
enumKeyword: enum
- name: SimpleIdentifier
- token: E
+ name: E
leftBracket: {
constants
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
+ name: v
rightBracket: }
''');
}
@@ -485,13 +471,11 @@
assertParsedNodeText(node, r'''
EnumDeclaration
enumKeyword: enum
- name: SimpleIdentifier
- token: E
+ name: E
leftBracket: {
constants
EnumConstantDeclaration
- name: SimpleIdentifier
- token: v
+ name: v
semicolon: ;
rightBracket: }
''');
@@ -511,8 +495,7 @@
assertParsedNodeText(node, r'''
MethodDeclaration
propertyKeyword: get
- name: SimpleIdentifier
- token: A
+ name: A
body: ExpressionFunctionBody
functionDefinition: =>
expression: IntegerLiteral
@@ -551,8 +534,7 @@
SuperFormalParameter
superKeyword: super
period: .
- identifier: SimpleIdentifier
- token: a
+ name: a
''');
}
}
diff --git a/pkg/analyzer/test/src/fasta/message_coverage_test.dart b/pkg/analyzer/test/src/fasta/message_coverage_test.dart
index 726ed9d..3c3c34d 100644
--- a/pkg/analyzer/test/src/fasta/message_coverage_test.dart
+++ b/pkg/analyzer/test/src/fasta/message_coverage_test.dart
@@ -66,7 +66,7 @@
var astBuilder = unit.declarations[0] as ClassDeclaration;
var method = astBuilder.members
.whereType<MethodDeclaration>()
- .firstWhere((x) => x.name.name == 'reportMessage');
+ .firstWhere((x) => x.name2.lexeme == 'reportMessage');
SwitchStatement statement = (method.body as BlockFunctionBody)
.block
.statements
diff --git a/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart b/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
index 61e6024..171836e 100644
--- a/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart
@@ -565,6 +565,7 @@
''');
}
+ @failingTest
void test_fieldFormalParameter_noPeriod_last() {
testRecovery('''
class C {
@@ -579,6 +580,7 @@
''');
}
+ @failingTest
void test_fieldFormalParameter_noPeriod_notLast() {
testRecovery('''
class C {
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index 5a12633..98b3f3b 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -52,6 +52,7 @@
bool withDisplayName = false,
bool withExportScope = false,
bool withNonSynthetic = false,
+ bool withPropertyLinking = false,
bool withSyntheticDartCoreImport = false,
}) {
var writer = _ElementWriter(
@@ -60,6 +61,7 @@
withDisplayName: withDisplayName,
withExportScope: withExportScope,
withNonSynthetic: withNonSynthetic,
+ withPropertyLinking: withPropertyLinking,
withSyntheticDartCoreImport: withSyntheticDartCoreImport,
);
writer.writeLibraryElement(library);
@@ -126,8 +128,10 @@
final bool withDisplayName;
final bool withExportScope;
final bool withNonSynthetic;
+ final bool withPropertyLinking;
final bool withSyntheticDartCoreImport;
final StringBuffer buffer = StringBuffer();
+ final _IdMap _idMap = _IdMap();
String indent = '';
@@ -137,6 +141,7 @@
required this.withDisplayName,
required this.withExportScope,
required this.withNonSynthetic,
+ required this.withPropertyLinking,
required this.withSyntheticDartCoreImport,
});
@@ -194,8 +199,8 @@
expect(accessor.variable, same(property));
- var propertyEnclosing = property.enclosingElement2;
- expect(accessor.enclosingElement2, same(propertyEnclosing));
+ var propertyEnclosing = property.enclosingElement3;
+ expect(accessor.enclosingElement3, same(propertyEnclosing));
if (propertyEnclosing is CompilationUnitElement) {
expect(propertyEnclosing.accessors, contains(accessor));
@@ -373,7 +378,7 @@
var classReference = reference.parent!.parent!;
// We need this `if` for duplicate declarations.
// The reference might be filled by another declaration.
- if (identical(classReference.element, e.enclosingElement2)) {
+ if (identical(classReference.element, e.enclosingElement3)) {
expect(reference.element, same(e));
}
}
@@ -410,7 +415,9 @@
var superConstructor = e.superConstructor;
if (superConstructor != null) {
- if (!superConstructor.enclosingElement2.isDartCoreObject) {
+ final enclosingElement = superConstructor.enclosingElement3;
+ if (enclosingElement is ClassElement &&
+ !enclosingElement.isDartCoreObject) {
_writeElementReference('superConstructor', superConstructor);
}
}
@@ -428,7 +435,7 @@
if (e.isSynthetic) {
expect(e.nameOffset, -1);
- expect(e.nonSynthetic, same(e.enclosingElement2));
+ expect(e.nonSynthetic, same(e.enclosingElement3));
} else {
if (!e.isTempAugmentation) {
expect(e.nameOffset, isPositive);
@@ -678,9 +685,9 @@
_writeNonSyntheticElement(e);
});
- if (e.isSynthetic && e.enclosingElement2 is EnumElementImpl) {
+ if (e.isSynthetic && e.enclosingElement3 is EnumElementImpl) {
expect(e.name, 'toString');
- expect(e.nonSynthetic, same(e.enclosingElement2));
+ expect(e.nonSynthetic, same(e.enclosingElement3));
} else {
_assertNonSyntheticElementSelf(e);
}
@@ -785,7 +792,7 @@
PropertyInducingElement variable = e.variable;
expect(variable, isNotNull);
- var variableEnclosing = variable.enclosingElement2;
+ var variableEnclosing = variable.enclosingElement3;
if (variableEnclosing is CompilationUnitElement) {
expect(variableEnclosing.topLevelVariables, contains(variable));
} else if (variableEnclosing is ClassElement) {
@@ -829,6 +836,13 @@
_writeBodyModifiers(e);
});
+ void writeLinking() {
+ if (withPropertyLinking) {
+ _writelnWithIndent('id: ${_idMap[e]}');
+ _writelnWithIndent('variable: ${_idMap[e.variable]}');
+ }
+ }
+
_withIndent(() {
_writeDocumentation(e);
_writeMetadata(e);
@@ -838,6 +852,7 @@
_writeParameterElements(e.parameters);
_writeType('returnType', e.returnType);
_writeNonSyntheticElement(e);
+ writeLinking();
});
}
@@ -877,6 +892,22 @@
_writeName(e);
});
+ void writeLinking() {
+ if (withPropertyLinking) {
+ _writelnWithIndent('id: ${_idMap[e]}');
+
+ final getter = e.getter;
+ if (getter != null) {
+ _writelnWithIndent('getter: ${_idMap[getter]}');
+ }
+
+ final setter = e.setter;
+ if (setter != null) {
+ _writelnWithIndent('setter: ${_idMap[setter]}');
+ }
+ }
+ }
+
_withIndent(() {
_writeDocumentation(e);
_writeMetadata(e);
@@ -885,6 +916,7 @@
_writeType('type', e.type);
_writeConstantInitializer(e);
_writeNonSyntheticElement(e);
+ writeLinking();
});
}
@@ -1012,6 +1044,26 @@
}
}
+class _IdMap {
+ final Map<Element, String> fieldMap = Map.identity();
+ final Map<Element, String> getterMap = Map.identity();
+ final Map<Element, String> setterMap = Map.identity();
+
+ String operator [](Element element) {
+ if (element is FieldElement) {
+ return fieldMap[element] ??= 'field_${fieldMap.length}';
+ } else if (element is TopLevelVariableElement) {
+ return fieldMap[element] ??= 'variable_${fieldMap.length}';
+ } else if (element is PropertyAccessorElement && element.isGetter) {
+ return getterMap[element] ??= 'getter_${getterMap.length}';
+ } else if (element is PropertyAccessorElement && element.isSetter) {
+ return setterMap[element] ??= 'setter_${setterMap.length}';
+ } else {
+ return '???';
+ }
+ }
+}
+
class _Replacement {
final int offset;
final int end;
diff --git a/pkg/analyzer/test/src/summary/elements_test.dart b/pkg/analyzer/test/src/summary/elements_test.dart
index 566a19d..f86beeb 100644
--- a/pkg/analyzer/test/src/summary/elements_test.dart
+++ b/pkg/analyzer/test/src/summary/elements_test.dart
@@ -4282,6 +4282,101 @@
''');
}
+ test_class_field_duplicate_getter() async {
+ var library = await buildLibrary('''
+class C {
+ int foo = 0;
+ int get foo => 0;
+}
+''');
+ checkElementText(
+ library,
+ r'''
+library
+ definingUnit
+ classes
+ class C @6
+ fields
+ foo @16
+ type: int
+ id: field_0
+ getter: getter_0
+ setter: setter_0
+ synthetic foo @-1
+ type: int
+ id: field_1
+ getter: getter_1
+ constructors
+ synthetic @-1
+ accessors
+ synthetic get foo @-1
+ returnType: int
+ id: getter_0
+ variable: field_0
+ synthetic set foo @-1
+ parameters
+ requiredPositional _foo @-1
+ type: int
+ returnType: void
+ id: setter_0
+ variable: field_0
+ get foo @35
+ returnType: int
+ id: getter_1
+ variable: field_1
+''',
+ withPropertyLinking: true);
+ }
+
+ test_class_field_duplicate_setter() async {
+ var library = await buildLibrary('''
+class C {
+ int foo = 0;
+ set foo(int _) {}
+}
+''');
+ checkElementText(
+ library,
+ r'''
+library
+ definingUnit
+ classes
+ class C @6
+ fields
+ foo @16
+ type: int
+ id: field_0
+ getter: getter_0
+ setter: setter_0
+ synthetic foo @-1
+ type: int
+ id: field_1
+ setter: setter_1
+ constructors
+ synthetic @-1
+ accessors
+ synthetic get foo @-1
+ returnType: int
+ id: getter_0
+ variable: field_0
+ synthetic set foo @-1
+ parameters
+ requiredPositional _foo @-1
+ type: int
+ returnType: void
+ id: setter_0
+ variable: field_0
+ set foo @31
+ parameters
+ requiredPositional _ @39
+ type: int
+ returnType: void
+ id: setter_1
+ variable: field_1
+''',
+ withPropertyLinking: true);
+ }
+
test_class_field_external() async {
var library = await buildLibrary('''
abstract class C {
@@ -4389,10 +4484,7 @@
staticElement: dart:core::@class::double
staticType: null
type: double
- identifier: SimpleIdentifier
- token: a @78
- staticElement: a@78
- staticType: null
+ name: a @78
declaredElement: a@78
declaredElementType: double
rightParenthesis: ) @79
@@ -4451,7 +4543,9 @@
set foo(int newValue) {}
}
''');
- checkElementText(library, r'''
+ checkElementText(
+ library,
+ r'''
library
definingUnit
classes
@@ -4459,6 +4553,9 @@
fields
final foo @22
type: int
+ id: field_0
+ getter: getter_0
+ setter: setter_0
constructors
@29
parameters
@@ -4468,12 +4565,17 @@
accessors
synthetic get foo @-1
returnType: int
+ id: getter_0
+ variable: field_0
set foo @48
parameters
requiredPositional newValue @56
type: int
returnType: void
-''');
+ id: setter_0
+ variable: field_0
+''',
+ withPropertyLinking: true);
}
test_class_field_formal_param_inferred_type_implicit() async {
@@ -22159,14 +22261,14 @@
var T = F.typeParameters[0];
expect(T.name, 'T');
- expect(T.enclosingElement2, same(F));
+ expect(T.enclosingElement3, same(F));
var function = F.aliasedElement as GenericFunctionTypeElement;
- expect(function.enclosingElement2, same(F));
+ expect(function.enclosingElement3, same(F));
var a = function.parameters[0];
expect(a.name, 'a');
- expect(a.enclosingElement2, same(function));
+ expect(a.enclosingElement3, same(function));
}
test_functionTypeAlias_type_element() async {
@@ -22789,10 +22891,7 @@
staticElement: dart:core::@class::String
staticType: null
type: String
- identifier: SimpleIdentifier
- token: a @52
- staticElement: a@52
- staticType: null
+ name: a @52
declaredElement: a@52
declaredElementType: String
rightParenthesis: ) @53
@@ -22864,10 +22963,7 @@
staticElement: dart:core::@class::String
staticType: null
type: String
- identifier: SimpleIdentifier
- token: a @52
- staticElement: a@52
- staticType: null
+ name: a @52
declaredElement: a@52
declaredElementType: String
rightParenthesis: ) @53
@@ -22950,10 +23046,7 @@
staticType: null
question: ? @61
type: int?
- identifier: SimpleIdentifier
- token: a @63
- staticElement: a@63
- staticType: null
+ name: a @63
declaredElement: a@63
declaredElementType: int?
declaredElement: a@63
@@ -23035,10 +23128,7 @@
staticType: null
question: ? @61
type: int?
- identifier: SimpleIdentifier
- token: a @63
- staticElement: a@63
- staticType: null
+ name: a @63
declaredElement: a@63
declaredElementType: int?
declaredElement: a@63
@@ -23120,10 +23210,7 @@
staticElement: dart:core::@class::int
staticType: null
type: int
- identifier: SimpleIdentifier
- token: a @71
- staticElement: a@71
- staticType: null
+ name: a @71
declaredElement: a@71
declaredElementType: int
declaredElement: a@71
@@ -23202,10 +23289,7 @@
staticElement: dart:core::@class::int
staticType: null
type: int
- identifier: SimpleIdentifier
- token: a @61
- staticElement: a@61
- staticType: null
+ name: a @61
declaredElement: a@61
declaredElementType: int
rightParenthesis: ) @62
@@ -23331,18 +23415,18 @@
var T = F.typeParameters[0];
expect(T.name, 'T');
- expect(T.enclosingElement2, same(F));
+ expect(T.enclosingElement3, same(F));
var function = F.aliasedElement as GenericFunctionTypeElement;
- expect(function.enclosingElement2, same(F));
+ expect(function.enclosingElement3, same(F));
var U = function.typeParameters[0];
expect(U.name, 'U');
- expect(U.enclosingElement2, same(function));
+ expect(U.enclosingElement3, same(function));
var a = function.parameters[0];
expect(a.name, 'a');
- expect(a.enclosingElement2, same(function));
+ expect(a.enclosingElement3, same(function));
}
test_genericTypeAlias_recursive() async {
@@ -26517,7 +26601,7 @@
final import_0 = library.augmentationImports[0];
final augmentation = import_0.importedAugmentation!;
- expect(augmentation.enclosingElement2, same(library));
+ expect(augmentation.enclosingElement3, same(library));
}
test_library_augmentationImports_noRelativeUriStr() async {
@@ -39097,26 +39181,119 @@
''');
}
+ test_unit_variable_duplicate_getter() async {
+ var library = await buildLibrary('''
+int foo = 0;
+int get foo => 0;
+''');
+ checkElementText(
+ library,
+ r'''
+library
+ definingUnit
+ topLevelVariables
+ static foo @4
+ type: int
+ id: variable_0
+ getter: getter_0
+ setter: setter_0
+ synthetic static foo @-1
+ type: int
+ id: variable_1
+ getter: getter_1
+ accessors
+ synthetic static get foo @-1
+ returnType: int
+ id: getter_0
+ variable: variable_0
+ synthetic static set foo @-1
+ parameters
+ requiredPositional _foo @-1
+ type: int
+ returnType: void
+ id: setter_0
+ variable: variable_0
+ static get foo @21
+ returnType: int
+ id: getter_1
+ variable: variable_1
+''',
+ withPropertyLinking: true);
+ }
+
+ test_unit_variable_duplicate_setter() async {
+ var library = await buildLibrary('''
+int foo = 0;
+set foo(int _) {}
+''');
+ checkElementText(
+ library,
+ r'''
+library
+ definingUnit
+ topLevelVariables
+ static foo @4
+ type: int
+ id: variable_0
+ getter: getter_0
+ setter: setter_0
+ synthetic static foo @-1
+ type: int
+ id: variable_1
+ setter: setter_1
+ accessors
+ synthetic static get foo @-1
+ returnType: int
+ id: getter_0
+ variable: variable_0
+ synthetic static set foo @-1
+ parameters
+ requiredPositional _foo @-1
+ type: int
+ returnType: void
+ id: setter_0
+ variable: variable_0
+ static set foo @17
+ parameters
+ requiredPositional _ @25
+ type: int
+ returnType: void
+ id: setter_1
+ variable: variable_1
+''',
+ withPropertyLinking: true);
+ }
+
test_unit_variable_final_withSetter() async {
var library = await buildLibrary(r'''
final int foo = 0;
set foo(int newValue) {}
''');
- checkElementText(library, r'''
+ checkElementText(
+ library,
+ r'''
library
definingUnit
topLevelVariables
static final foo @10
type: int
+ id: variable_0
+ getter: getter_0
+ setter: setter_0
accessors
synthetic static get foo @-1
returnType: int
+ id: getter_0
+ variable: variable_0
static set foo @23
parameters
requiredPositional newValue @31
type: int
returnType: void
-''');
+ id: setter_0
+ variable: variable_0
+''',
+ withPropertyLinking: true);
}
test_unresolved_annotation_instanceCreation_argument_super() async {
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index f838869..a096a25 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -1298,7 +1298,7 @@
}
String _elementToReferenceString(Element element) {
- final enclosingElement = element.enclosingElement2;
+ final enclosingElement = element.enclosingElement3;
final reference = (element as ElementImpl).reference;
if (reference != null) {
return _referenceToString(reference);
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index 99c68fe..a7a5668 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -1917,7 +1917,7 @@
messageContains: ["'g0'"]),
error(HintCode.UNUSED_ELEMENT, 96, 2),
error(HintCode.UNUSED_ELEMENT, 126, 2),
- error(LanguageCode.IMPLICIT_DYNAMIC_RETURN, 212, 12,
+ error(LanguageCode.IMPLICIT_DYNAMIC_RETURN, 212, 2,
messageContains: ["'m0'"]),
error(LanguageCode.IMPLICIT_DYNAMIC_RETURN, 304, 2,
messageContains: ["'y0'"]),
diff --git a/pkg/analyzer/test/util/ast_check.dart b/pkg/analyzer/test/util/ast_check.dart
index 8119c60..6a3e71f 100644
--- a/pkg/analyzer/test/util/ast_check.dart
+++ b/pkg/analyzer/test/util/ast_check.dart
@@ -81,13 +81,6 @@
(selected) => 'has arguments ${valueStr(selected)}',
);
}
-
- CheckTarget<SimpleIdentifier> get name {
- return nest(
- value.name,
- (selected) => 'has name ${valueStr(selected)}',
- );
- }
}
extension EnumDeclarationExtension on CheckTarget<EnumDeclaration> {
@@ -99,15 +92,6 @@
}
}
-extension FormalParameterExtension on CheckTarget<FormalParameter> {
- CheckTarget<SimpleIdentifier?> get identifier {
- return nest(
- value.identifier,
- (selected) => 'has identifier ${valueStr(selected)}',
- );
- }
-}
-
extension SimpleFormalParameterExtension on CheckTarget<SimpleFormalParameter> {
CheckTarget<Token?> get keyword {
return nest(
@@ -147,13 +131,6 @@
}
extension SuperFormalParameterExtension on CheckTarget<SuperFormalParameter> {
- CheckTarget<SimpleIdentifier> get identifier {
- return nest(
- value.identifier,
- (selected) => 'has identifier ${valueStr(selected)}',
- );
- }
-
CheckTarget<Token?> get keyword {
return nest(
value.keyword,
diff --git a/pkg/analyzer/test/util/id_testing_helper.dart b/pkg/analyzer/test/util/id_testing_helper.dart
index 3f9f608..27d9ac8 100644
--- a/pkg/analyzer/test/util/id_testing_helper.dart
+++ b/pkg/analyzer/test/util/id_testing_helper.dart
@@ -213,20 +213,20 @@
if (className != null) {
for (var declaration in unit.declarations) {
if (declaration is ClassDeclaration &&
- declaration.name.name == className) {
+ declaration.name2.lexeme == className) {
for (var member in declaration.members) {
if (member is ConstructorDeclaration) {
- if (member.name!.name == name) {
+ if (member.name2!.lexeme == name) {
return member.offset;
}
} else if (member is FieldDeclaration) {
for (var variable in member.fields.variables) {
- if (variable.name.name == name) {
+ if (variable.name2.lexeme == name) {
return variable.offset;
}
}
} else if (member is MethodDeclaration) {
- if (member.name.name == name) {
+ if (member.name2.lexeme == name) {
return member.offset;
}
}
@@ -239,12 +239,12 @@
}
for (var declaration in unit.declarations) {
if (declaration is FunctionDeclaration) {
- if (declaration.name.name == name) {
+ if (declaration.name2.lexeme == name) {
return declaration.offset;
}
} else if (declaration is TopLevelVariableDeclaration) {
for (var variable in declaration.variables.variables) {
- if (variable.name.name == name) {
+ if (variable.name2.lexeme == name) {
return variable.offset;
}
}
@@ -258,7 +258,7 @@
.unit;
for (var declaration in unit.declarations) {
if (declaration is ClassDeclaration &&
- declaration.name.name == className) {
+ declaration.name2.lexeme == className) {
return declaration.offset;
}
}
diff --git a/pkg/analyzer/test/utils.dart b/pkg/analyzer/test/utils.dart
index 082f929..2adf9cd 100644
--- a/pkg/analyzer/test/utils.dart
+++ b/pkg/analyzer/test/utils.dart
@@ -30,7 +30,8 @@
static ClassDeclaration getClass(CompilationUnit unit, String className) {
NodeList<CompilationUnitMember> unitMembers = unit.declarations;
for (CompilationUnitMember unitMember in unitMembers) {
- if (unitMember is ClassDeclaration && unitMember.name.name == className) {
+ if (unitMember is ClassDeclaration &&
+ unitMember.name2.lexeme == className) {
return unitMember;
}
}
@@ -47,7 +48,7 @@
NodeList<ClassMember> classMembers = unitMember.members;
for (ClassMember classMember in classMembers) {
if (classMember is ConstructorDeclaration) {
- if (classMember.name?.name == constructorName) {
+ if (classMember.name2?.lexeme == constructorName) {
return classMember;
}
}
@@ -65,7 +66,7 @@
if (classMember is FieldDeclaration) {
NodeList<VariableDeclaration> fields = classMember.fields.variables;
for (VariableDeclaration field in fields) {
- if (field.name.name == fieldName) {
+ if (field.name2.lexeme == fieldName) {
return field;
}
}
@@ -78,7 +79,7 @@
/// with the given [className] in the given compilation [unit].
static FieldElement? getFieldInClassElement(
CompilationUnit unit, String className, String fieldName) {
- return getFieldInClass(unit, className, fieldName).name.staticElement
+ return getFieldInClass(unit, className, fieldName).declaredElement
as FieldElement;
}
@@ -90,7 +91,7 @@
NodeList<ClassMember> classMembers = unitMember.members;
for (ClassMember classMember in classMembers) {
if (classMember is MethodDeclaration) {
- if (classMember.name.name == methodName) {
+ if (classMember.name2.lexeme == methodName) {
return classMember;
}
}
@@ -124,7 +125,7 @@
NodeList<CompilationUnitMember> unitMembers = unit.declarations;
for (CompilationUnitMember unitMember in unitMembers) {
if (unitMember is FunctionDeclaration) {
- if (unitMember.name.name == functionName) {
+ if (unitMember.name2.lexeme == functionName) {
return unitMember;
}
}
@@ -142,7 +143,7 @@
NodeList<VariableDeclaration> variables =
unitMember.variables.variables;
for (VariableDeclaration variable in variables) {
- if (variable.name.name == variableName) {
+ if (variable.name2.lexeme == variableName) {
return variable;
}
}
@@ -154,7 +155,7 @@
/// Return the top-level variable element with the given [name].
static TopLevelVariableElement getTopLevelVariableElement(
CompilationUnit unit, String name) {
- return getTopLevelVariable(unit, name).name.staticElement
+ return getTopLevelVariable(unit, name).declaredElement
as TopLevelVariableElement;
}
}
diff --git a/pkg/analyzer/tool/messages/extract_errors_to_yaml.dart b/pkg/analyzer/tool/messages/extract_errors_to_yaml.dart
index d26eab1..7f1c6fb 100644
--- a/pkg/analyzer/tool/messages/extract_errors_to_yaml.dart
+++ b/pkg/analyzer/tool/messages/extract_errors_to_yaml.dart
@@ -173,11 +173,11 @@
.unit;
for (var declaration in unit.declarations) {
if (declaration is! ClassDeclaration) continue;
- var className = declaration.name.name;
+ var className = declaration.name2.lexeme;
for (var member in declaration.members) {
if (member is! FieldDeclaration) continue;
for (var variable in member.fields.variables) {
- (result[className] ??= {})[variable.name.name] = variable;
+ (result[className] ??= {})[variable.name2.lexeme] = variable;
}
}
}
diff --git a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
index ec84066..9a17008 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
@@ -121,7 +121,7 @@
{ArgumentList? argumentList,
void Function()? bodyWriter,
String? classNameGroupName,
- SimpleIdentifier? constructorName,
+ String? constructorName,
String? constructorNameGroupName,
List<String>? fieldNames,
void Function()? initializerWriter,
@@ -139,9 +139,9 @@
if (constructorName != null) {
write('.');
if (constructorNameGroupName == null) {
- write(constructorName.name);
+ write(constructorName);
} else {
- addSimpleLinkedEdit(constructorNameGroupName, constructorName.name);
+ addSimpleLinkedEdit(constructorNameGroupName, constructorName);
}
}
write('(');
@@ -693,7 +693,7 @@
@override
void writeReference(Element element) {
- if (element.enclosingElement2 is CompilationUnitElement) {
+ if (element.enclosingElement3 is CompilationUnitElement) {
_writeLibraryReference(element);
}
write(element.displayName);
@@ -1112,10 +1112,10 @@
if (type is TypeParameterType) {
_initializeEnclosingElements();
var element = type.element;
- var enclosing = element.enclosingElement2;
+ var enclosing = element.enclosingElement3;
while (enclosing is GenericFunctionTypeElement ||
enclosing is ParameterElement) {
- enclosing = enclosing!.enclosingElement2;
+ enclosing = enclosing!.enclosingElement3;
}
if (enclosing == _enclosingExecutable ||
enclosing == _enclosingClass ||
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
index 7257b10..df27d1e 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
@@ -166,8 +166,19 @@
// Try to replace with a comment token.
var commentToken = _getContainingCommentToken(entity, offset);
if (commentToken != null) {
- return CompletionTarget._(
- offset, containingNode, commentToken, true);
+ // TODO(scheglov) This is duplicate of the code below.
+ // If the preceding comment is dartdoc token, then update
+ // the containing node to be the dartdoc comment.
+ // Otherwise completion is not required.
+ var docComment =
+ _getContainingDocComment(containingNode, commentToken);
+ if (docComment != null) {
+ return CompletionTarget._(
+ offset, docComment, commentToken, false);
+ } else {
+ return CompletionTarget._(
+ offset, entryPoint, commentToken, true);
+ }
}
// Target found.
return CompletionTarget._(offset, containingNode, entity, false);
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart
index e0a02d4..7d683d3 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart
@@ -70,7 +70,7 @@
// Pair getter/setter by updating the existing suggestion
if (existingSuggestion != null) {
var getter = element.isGetter ? suggestion : existingSuggestion;
- var elemKind = element.enclosingElement2 is ClassElement
+ var elemKind = element.enclosingElement3 is ClassElement
? protocol.ElementKind.FIELD
: protocol.ElementKind.TOP_LEVEL_VARIABLE;
existingSuggestion.element = protocol.Element(
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
index e567a2c..69c9428 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
@@ -75,6 +75,11 @@
return optype;
}
+ // Don't suggest anything in comments.
+ if (target.entity is CommentToken) {
+ return optype;
+ }
+
var targetNode = target.containingNode;
targetNode.accept(_OpTypeAstVisitor(optype, target.entity, offset));
@@ -466,7 +471,7 @@
@override
void visitDeclaredIdentifier(DeclaredIdentifier node) {
- var identifier = node.identifier;
+ var identifier = node.name;
if (identifier == entity &&
offset < identifier.offset &&
node.type == null) {
@@ -610,7 +615,7 @@
// class A { static late ^ }
if (node.staticKeyword != null &&
variables.length == 1 &&
- variables[0].name.name == 'late') {
+ variables[0].name2.lexeme == 'late') {
optype.completionLocation = 'FieldDeclaration_static_late';
optype.includeTypeNameSuggestions = true;
return;
@@ -619,7 +624,7 @@
if (node.staticKeyword == null &&
offset <= node.semicolon.offset &&
variables.length == 1 &&
- variables[0].name.name == 'static') {
+ variables[0].name2.lexeme == 'static') {
optype.completionLocation = 'FieldDeclaration_static';
optype.includeTypeNameSuggestions = true;
return;
@@ -645,7 +650,7 @@
@override
void visitFieldFormalParameter(FieldFormalParameter node) {
- if (entity == node.identifier) {
+ if (entity == node.name) {
optype.isPrefixed = true;
} else {
optype.includeReturnValueSuggestions = true;
@@ -788,7 +793,7 @@
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
if (identical(entity, node.returnType) ||
- identical(entity, node.name) && node.returnType == null) {
+ identical(entity, node.name2) && node.returnType == null) {
optype.completionLocation = 'FunctionDeclaration_returnType';
optype.includeTypeNameSuggestions = true;
}
@@ -803,7 +808,7 @@
@override
void visitFunctionTypeAlias(FunctionTypeAlias node) {
if (identical(entity, node.returnType) ||
- identical(entity, node.name) && node.returnType == null) {
+ identical(entity, node.name2) && node.returnType == null) {
optype.includeTypeNameSuggestions = true;
}
}
@@ -930,7 +935,7 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
if (identical(entity, node.returnType) ||
- identical(entity, node.name) && node.returnType == null) {
+ identical(entity, node.name2) && node.returnType == null) {
optype.completionLocation = 'MethodDeclaration_returnType';
}
// TODO(brianwilkerson) In visitFunctionDeclaration, this is conditional. It
@@ -1035,7 +1040,7 @@
@override
void visitNormalFormalParameter(NormalFormalParameter node) {
- if (node.identifier != entity) {
+ if (node.name != entity) {
optype.includeReturnValueSuggestions = true;
optype.includeTypeNameSuggestions = true;
}
@@ -1153,7 +1158,7 @@
@override
void visitSimpleFormalParameter(SimpleFormalParameter node) {
var type = node.type;
- var name = node.identifier;
+ var name = node.name;
// "(Type^)" is parsed as a parameter with the _name_ "Type".
if (type == null &&
@@ -1172,7 +1177,7 @@
// If "(Type ^)", then include parameter names.
if (type == null && name != null && name.end < offset) {
- var nextToken = name.token.next;
+ var nextToken = name.next;
if (nextToken != null && offset <= nextToken.offset) {
optype.includeVarNameSuggestions = true;
return;
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/suggestion_builder.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/suggestion_builder.dart
index f3446c6..7e7bbe2 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/suggestion_builder.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/suggestion_builder.dart
@@ -94,7 +94,7 @@
suggestion.docSummary = getDartDocSummary(doc);
suggestion.element = converter.convertElement(element);
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ClassElement) {
suggestion.declaringType = enclosingElement.displayName;
}
diff --git a/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart b/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
index 996d339..7aaab56 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
@@ -35,7 +35,11 @@
void declaredLabel(Label label, bool isCaseLabel) {}
- void declaredLocalVar(SimpleIdentifier name, TypeAnnotation? type) {}
+ void declaredLocalVar(
+ Token name,
+ TypeAnnotation? type,
+ LocalVariableElement declaredElement,
+ ) {}
void declaredMethod(MethodDeclaration declaration) {}
@@ -123,11 +127,13 @@
var forLoopParts = node.forLoopParts;
if (forLoopParts is ForEachPartsWithDeclaration) {
var loopVariable = forLoopParts.loopVariable;
- declaredLocalVar(loopVariable.identifier, loopVariable.type);
+ declaredLocalVar(
+ loopVariable.name, loopVariable.type, loopVariable.declaredElement!);
} else if (forLoopParts is ForPartsWithDeclarations) {
var varList = forLoopParts.variables;
for (var varDecl in varList.variables) {
- declaredLocalVar(varDecl.name, varList.type);
+ declaredLocalVar(varDecl.name2, varList.type,
+ varDecl.declaredElement as LocalVariableElement);
}
}
visitNode(node);
@@ -138,11 +144,13 @@
var forLoopParts = node.forLoopParts;
if (forLoopParts is ForEachPartsWithDeclaration) {
var loopVariable = forLoopParts.loopVariable;
- declaredLocalVar(loopVariable.identifier, loopVariable.type);
+ declaredLocalVar(
+ loopVariable.name, loopVariable.type, loopVariable.declaredElement!);
} else if (forLoopParts is ForPartsWithDeclarations) {
var varList = forLoopParts.variables;
for (var varDecl in varList.variables) {
- declaredLocalVar(varDecl.name, varList.type);
+ declaredLocalVar(varDecl.name2, varList.type,
+ varDecl.declaredElement as LocalVariableElement);
}
}
visitNode(node);
@@ -302,7 +310,7 @@
} else if (normalParam is SimpleFormalParameter) {
type = normalParam.type;
}
- declaredParam(param.identifier!.token, param.declaredElement, type);
+ declaredParam(param.name!, param.declaredElement, type);
}
}
}
@@ -314,13 +322,14 @@
var varList = stmt.variables;
for (var varDecl in varList.variables) {
if (varDecl.end < offset) {
- declaredLocalVar(varDecl.name, varList.type);
+ declaredLocalVar(varDecl.name2, varList.type,
+ varDecl.declaredElement as LocalVariableElement);
}
}
} else if (stmt is FunctionDeclarationStatement) {
var declaration = stmt.functionDeclaration;
if (declaration.offset < offset) {
- var name = declaration.name.name;
+ var name = declaration.name2.lexeme;
if (name.isNotEmpty) {
declaredFunction(declaration);
_visitTypeParameters(
diff --git a/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart b/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
index 8d281e6..cb41470 100644
--- a/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
+++ b/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
@@ -225,7 +225,7 @@
// so should it return isEnumConstant = true?
// Or should we return ElementKind.ENUM_CONSTANT here
// in either or both of these cases?
- element.type.element == element.enclosingElement2) {
+ element.type.element == element.enclosingElement3) {
return plugin.ElementKind.ENUM_CONSTANT;
}
return convertElementKind(element.kind);
@@ -324,15 +324,15 @@
if (currentElement is analyzer.CompilationUnitElement) {
return currentElement;
}
- if (currentElement.enclosingElement2 is analyzer.LibraryElement) {
- currentElement = currentElement.enclosingElement2;
+ if (currentElement.enclosingElement3 is analyzer.LibraryElement) {
+ currentElement = currentElement.enclosingElement3;
}
if (currentElement is analyzer.LibraryElement) {
return currentElement.definingCompilationUnit;
}
for (;
currentElement != null;
- currentElement = currentElement.enclosingElement2) {
+ currentElement = currentElement.enclosingElement3) {
if (currentElement is analyzer.CompilationUnitElement) {
return currentElement;
}
diff --git a/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
index 2082af0..9574bb5 100644
--- a/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
+++ b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
@@ -68,7 +68,7 @@
{ArgumentList? argumentList,
void Function()? bodyWriter,
String? classNameGroupName,
- SimpleIdentifier? constructorName,
+ String? constructorName,
String? constructorNameGroupName,
List<String>? fieldNames,
void Function()? initializerWriter,
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart b/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
index d356221..97b1c7f 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
@@ -106,9 +106,9 @@
// the most likely completion is a super expression with same name
var containingMethod =
expression.thisOrAncestorOfType<MethodDeclaration>();
- var id = containingMethod?.name;
+ var id = containingMethod?.name2;
if (id != null) {
- containingMethodName = id.name;
+ containingMethodName = id.lexeme;
}
}
if (type == null || type.isDynamic) {
@@ -140,7 +140,7 @@
@override
void declaredClass(ClassDeclaration declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
// no type
finished();
}
@@ -148,7 +148,7 @@
@override
void declaredClassTypeAlias(ClassTypeAlias declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
// no type
finished();
}
@@ -159,7 +159,7 @@
@override
void declaredField(FieldDeclaration fieldDecl, VariableDeclaration varDecl) {
- if (varDecl.name.name == targetName) {
+ if (varDecl.name2.lexeme == targetName) {
// Type provided by the element in computeFull above
finished();
}
@@ -167,7 +167,7 @@
@override
void declaredFunction(FunctionDeclaration declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
var typeName = declaration.returnType;
if (typeName != null) {
typeFound = typeName.type;
@@ -178,7 +178,7 @@
@override
void declaredFunctionTypeAlias(FunctionTypeAlias declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
var typeName = declaration.returnType;
if (typeName != null) {
typeFound = typeName.type;
@@ -189,7 +189,7 @@
@override
void declaredGenericTypeAlias(GenericTypeAlias declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
var typeName = declaration.functionType?.returnType;
if (typeName != null) {
typeFound = typeName.type;
@@ -207,17 +207,20 @@
}
@override
- void declaredLocalVar(SimpleIdentifier name, TypeAnnotation? type) {
- if (name.name == targetName) {
- var element = name.staticElement as VariableElement;
- typeFound = element.type;
+ void declaredLocalVar(
+ Token name,
+ TypeAnnotation? type,
+ LocalVariableElement declaredElement,
+ ) {
+ if (name.lexeme == targetName) {
+ typeFound = declaredElement.type;
finished();
}
}
@override
void declaredMethod(MethodDeclaration declaration) {
- if (declaration.name.name == targetName) {
+ if (declaration.name2.lexeme == targetName) {
var typeName = declaration.returnType;
if (typeName != null) {
typeFound = typeName.type;
@@ -237,7 +240,7 @@
@override
void declaredTopLevelVar(
VariableDeclarationList varList, VariableDeclaration varDecl) {
- if (varDecl.name.name == targetName) {
+ if (varDecl.name2.lexeme == targetName) {
// Type provided by the element in computeFull above
finished();
}
diff --git a/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart b/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
index be4d391..a1c5c55 100644
--- a/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
+++ b/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
@@ -26,6 +26,15 @@
unit.accept(visitor);
} else {
var node = _getNodeForRange(unit, offset, length);
+
+ {
+ final parent = node?.parent;
+ // ignore: deprecated_member_use
+ if (parent is ConstructorDeclaration && parent.name == node) {
+ node = parent;
+ }
+ }
+
if (node != null) {
node = _getNavigationTargetNode(node);
}
@@ -146,7 +155,7 @@
void visitAnnotation(Annotation node) {
var element = node.element;
if (element is ConstructorElement && element.isSynthetic) {
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
var name = node.name;
if (name is PrefixedIdentifier) {
@@ -271,12 +280,12 @@
void visitConstructorDeclaration(ConstructorDeclaration node) {
// For a default constructor, override the class name to be the declaration
// itself rather than linking to the class.
- var name = node.name;
- if (name == null) {
+ var nameToken = node.name2;
+ if (nameToken == null) {
computer._addRegionForNode(node.returnType, node.declaredElement);
} else {
node.returnType.accept(this);
- name.accept(this);
+ computer._addRegionForToken(nameToken, node.declaredElement);
}
node.parameters.accept(this);
node.initializers.accept(this);
@@ -330,7 +339,7 @@
@override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
- computer._addRegionForNode(node.name, node.constructorElement);
+ computer._addRegionForToken(node.name2, node.constructorElement);
var arguments = node.arguments;
if (arguments != null) {
@@ -358,7 +367,7 @@
final element = node.declaredElement;
if (element is FieldFormalParameterElementImpl) {
computer._addRegionForToken(node.thisKeyword, element.field);
- computer._addRegionForNode(node.identifier, element.field);
+ computer._addRegionForToken(node.name, element.field);
}
node.type?.accept(this);
@@ -435,7 +444,7 @@
RedirectingConstructorInvocation node) {
Element? element = node.staticElement;
if (element != null && element.isSynthetic) {
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
// add region
computer._addRegionForToken(node.thisKeyword, element);
@@ -454,7 +463,7 @@
void visitSuperConstructorInvocation(SuperConstructorInvocation node) {
Element? element = node.staticElement;
if (element != null && element.isSynthetic) {
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
// add region
computer._addRegionForToken(node.superKeyword, element);
@@ -469,7 +478,7 @@
if (element is SuperFormalParameterElementImpl) {
var superParameter = element.superConstructorParameter;
computer._addRegionForToken(node.superKeyword, superParameter);
- computer._addRegionForNode(node.identifier, superParameter);
+ computer._addRegionForToken(node.name, superParameter);
}
node.type?.accept(this);
diff --git a/pkg/analyzer_plugin/lib/utilities/range_factory.dart b/pkg/analyzer_plugin/lib/utilities/range_factory.dart
index 5eed266..6a8789c 100644
--- a/pkg/analyzer_plugin/lib/utilities/range_factory.dart
+++ b/pkg/analyzer_plugin/lib/utilities/range_factory.dart
@@ -117,6 +117,11 @@
return SourceRange(offset, length);
}
+ /// Return a source range that covers the same range as the given [node].
+ SourceRange entity(SyntacticEntity node) {
+ return SourceRange(node.offset, node.length);
+ }
+
/// Return a source range that covers the same range as the given [error].
SourceRange error(AnalysisError error) {
return SourceRange(error.offset, error.length);
diff --git a/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart b/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
index 3613ca6..ab696eb 100644
--- a/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
@@ -960,7 +960,7 @@
}
static String _executableNameStr(ExecutableElement executable) {
- var executableEnclosing = executable.enclosingElement2;
+ var executableEnclosing = executable.enclosingElement3;
if (executableEnclosing is CompilationUnitElement) {
return executable.name;
} else if (executable is ConstructorElement) {
diff --git a/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart b/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart
index f06dbb2..a9374fc 100644
--- a/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart
@@ -4,6 +4,8 @@
import 'package:analyzer/dart/analysis/utilities.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_plugin/src/utilities/visitors/local_declaration_visitor.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -42,7 +44,11 @@
TestVisitor(int offset) : super(offset);
@override
- void declaredLocalVar(SimpleIdentifier name, TypeAnnotation? type) {
+ void declaredLocalVar(
+ Token name,
+ TypeAnnotation? type,
+ LocalVariableElement declaredElement,
+ ) {
expect(name, isNotNull);
}
}
diff --git a/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart b/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
index 612c664..4d1de2b 100644
--- a/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
@@ -325,7 +325,7 @@
expect(element.parameters, isNull);
expect(element.returnType, '_E1');
// TODO(danrubel) determine why enum constant is not marked as deprecated
- //analyzer.ClassElement classElement = engineElement.enclosingElement2;
+ //analyzer.ClassElement classElement = engineElement.enclosingElement3;
//expect(classElement.isDeprecated, isTrue);
expect(
element.flags,
diff --git a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
index 28e0205..ad2aacb 100644
--- a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
@@ -510,7 +510,7 @@
Future<void> test_endEnd() async {
await resolveTestCode('main() {}');
var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
+ var mainName = mainFunction.name2;
var mainBody = mainFunction.functionExpression.body;
expect(range.endEnd(mainName, mainBody), SourceRange(4, 5));
}
@@ -518,14 +518,14 @@
Future<void> test_endLength() async {
await resolveTestCode('main() {}');
var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
+ var mainName = mainFunction.name2;
expect(range.endLength(mainName, 3), SourceRange(4, 3));
}
Future<void> test_endStart() async {
await resolveTestCode('main() {}');
var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
+ var mainName = mainFunction.name2;
var mainBody = mainFunction.functionExpression.body;
expect(range.endStart(mainName, mainBody), SourceRange(4, 3));
}
@@ -542,17 +542,16 @@
Future<void> test_node() async {
await resolveTestCode('main() {}');
- var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
- expect(range.node(mainName), SourceRange(0, 4));
+ var main = testUnit.declarations[0] as FunctionDeclaration;
+ expect(range.node(main), SourceRange(0, 9));
}
Future<void> test_nodes() async {
await resolveTestCode(' main() {}');
var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
+ var mainParameters = mainFunction.functionExpression.parameters!;
var mainBody = mainFunction.functionExpression.body;
- expect(range.nodes([mainName, mainBody]), SourceRange(1, 9));
+ expect(range.nodes([mainParameters, mainBody]), SourceRange(5, 5));
}
Future<void> test_nodes_empty() async {
@@ -567,7 +566,7 @@
Future<void> test_startEnd_nodeNode() async {
await resolveTestCode(' main() {}');
var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
+ var mainName = mainFunction.name2;
var mainBody = mainFunction.functionExpression.body;
expect(range.startEnd(mainName, mainBody), SourceRange(1, 9));
}
@@ -575,8 +574,8 @@
Future<void> test_startLength_node() async {
await resolveTestCode(' main() {}');
var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
- expect(range.startLength(mainName, 10), SourceRange(1, 10));
+ var parameters = mainFunction.functionExpression.parameters!;
+ expect(range.startLength(parameters, 10), SourceRange(5, 10));
}
void test_startOffsetEndOffset() {
@@ -586,16 +585,16 @@
Future<void> test_startStart_nodeNode() async {
await resolveTestCode('main() {}');
var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
+ var parameters = mainFunction.functionExpression.parameters!;
var mainBody = mainFunction.functionExpression.body;
- expect(range.startStart(mainName, mainBody), SourceRange(0, 7));
+ expect(range.startStart(parameters, mainBody), SourceRange(4, 3));
}
Future<void> test_token() async {
await resolveTestCode(' main() {}');
var mainFunction = testUnit.declarations[0] as FunctionDeclaration;
- var mainName = mainFunction.name;
- expect(range.token(mainName.beginToken), SourceRange(1, 4));
+ var mainName = mainFunction.name2;
+ expect(range.token(mainName), SourceRange(1, 4));
}
Future<void> _deletionRange(String code,
diff --git a/pkg/frontend_server/bin/frontend_server_starter.dart b/pkg/frontend_server/bin/frontend_server_starter.dart
index 526c396..487f980 100644
--- a/pkg/frontend_server/bin/frontend_server_starter.dart
+++ b/pkg/frontend_server/bin/frontend_server_starter.dart
@@ -4,7 +4,7 @@
import 'dart:async';
import 'dart:io';
-import 'package:frontend_server/frontend_server.dart';
+import 'package:frontend_server/starter.dart';
Future<Null> main(List<String> args) async {
exitCode = await starter(args);
diff --git a/pkg/frontend_server/lib/frontend_server.dart b/pkg/frontend_server/lib/frontend_server.dart
index 9065163..4a2a525 100644
--- a/pkg/frontend_server/lib/frontend_server.dart
+++ b/pkg/frontend_server/lib/frontend_server.dart
@@ -7,7 +7,7 @@
import 'dart:async';
import 'dart:convert';
-import 'dart:io' show Directory, File, IOSink, stdin, stdout;
+import 'dart:io' show File, IOSink, stdout;
import 'dart:typed_data' show BytesBuilder;
import 'package:args/args.dart';
@@ -31,13 +31,11 @@
show Component, loadComponentSourceFromBytes;
import 'package:kernel/target/targets.dart' show targets, TargetFlags;
import 'package:package_config/package_config.dart';
-import 'package:path/path.dart' as path;
import 'package:usage/uuid/uuid.dart';
import 'package:vm/incremental_compiler.dart' show IncrementalCompiler;
import 'package:vm/kernel_front_end.dart';
-import 'src/binary_protocol.dart';
import 'src/javascript_bundle.dart';
import 'src/strong_components.dart';
@@ -205,6 +203,11 @@
..addFlag('print-incremental-dependencies',
help: 'Print list of sources added and removed from compilation',
defaultsTo: true)
+ ..addOption('resident-info-file-name',
+ help:
+ 'Allowing for incremental compilation of changes when using the Dart CLI.'
+ ' Stores server information in this file for accessing later',
+ hide: true)
..addOption('verbosity',
help: 'Sets the verbosity level of the compilation',
defaultsTo: Verbosity.defaultValue,
@@ -1370,91 +1373,3 @@
}
});
}
-
-/// Entry point for this module, that creates `_FrontendCompiler` instance and
-/// processes user input.
-/// `compiler` is an optional parameter so it can be replaced with mocked
-/// version for testing.
-Future<int> starter(
- List<String> args, {
- CompilerInterface compiler,
- Stream<List<int>> input,
- StringSink output,
- IncrementalCompiler generator,
- BinaryPrinterFactory binaryPrinterFactory,
-}) async {
- ArgResults options;
- try {
- options = argParser.parse(args);
- } catch (error) {
- print('ERROR: $error\n');
- print(usage);
- return 1;
- }
-
- if (options['train']) {
- if (options.rest.isEmpty) {
- throw Exception('Must specify input.dart');
- }
-
- final String input = options.rest[0];
- final String sdkRoot = options['sdk-root'];
- final String platform = options['platform'];
- final Directory temp =
- Directory.systemTemp.createTempSync('train_frontend_server');
- try {
- final String outputTrainingDill = path.join(temp.path, 'app.dill');
- final List<String> args = <String>[
- '--incremental',
- '--sdk-root=$sdkRoot',
- '--output-dill=$outputTrainingDill',
- ];
- if (platform != null) {
- args.add('--platform=${Uri.file(platform)}');
- }
- options = argParser.parse(args);
- compiler ??=
- FrontendCompiler(output, printerFactory: binaryPrinterFactory);
-
- await compiler.compile(input, options, generator: generator);
- compiler.acceptLastDelta();
- await compiler.recompileDelta();
- compiler.acceptLastDelta();
- compiler.resetIncrementalCompiler();
- await compiler.recompileDelta();
- compiler.acceptLastDelta();
- await compiler.recompileDelta();
- compiler.acceptLastDelta();
- return 0;
- } finally {
- temp.deleteSync(recursive: true);
- }
- }
-
- final binaryProtocolAddressStr = options['binary-protocol-address'];
- if (binaryProtocolAddressStr is String) {
- runBinaryProtocol(binaryProtocolAddressStr);
- return 0;
- }
-
- compiler ??= FrontendCompiler(output,
- printerFactory: binaryPrinterFactory,
- unsafePackageSerialization: options["unsafe-package-serialization"],
- incrementalSerialization: options["incremental-serialization"],
- useDebuggerModuleNames: options['debugger-module-names'],
- emitDebugMetadata: options['experimental-emit-debug-metadata'],
- emitDebugSymbols: options['emit-debug-symbols']);
-
- if (options.rest.isNotEmpty) {
- return await compiler.compile(options.rest[0], options,
- generator: generator)
- ? 0
- : 254;
- }
-
- Completer<int> completer = Completer<int>();
- var subscription = listenAndCompile(
- compiler, input ?? stdin, options, completer,
- generator: generator);
- return completer.future..then((value) => subscription.cancel());
-}
diff --git a/pkg/frontend_server/lib/src/resident_frontend_server.dart b/pkg/frontend_server/lib/src/resident_frontend_server.dart
new file mode 100644
index 0000000..046fc0e
--- /dev/null
+++ b/pkg/frontend_server/lib/src/resident_frontend_server.dart
@@ -0,0 +1,385 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// @dart = 2.9
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io' show File, InternetAddress, ServerSocket, Socket;
+import 'dart:typed_data' show Uint8List;
+
+import 'package:args/args.dart';
+
+// front_end/src imports below that require lint `ignore_for_file`
+// are a temporary state of things until frontend team builds better api
+// that would replace api used below. This api was made private in
+// an effort to discourage further use.
+// ignore_for_file: implementation_imports
+import 'package:front_end/src/api_unstable/vm.dart';
+
+import '../frontend_server.dart';
+
+extension on DateTime {
+ /// Truncates by [amount]
+ DateTime floorTime(Duration amount) {
+ return DateTime.fromMillisecondsSinceEpoch(this.millisecondsSinceEpoch -
+ this.millisecondsSinceEpoch % amount.inMilliseconds);
+ }
+}
+
+enum _ResidentState {
+ WAITING_FOR_FIRST_COMPILE,
+ COMPILING,
+ WAITING_FOR_RECOMPILE,
+}
+
+/// A wrapper around the FrontendCompiler, along with all the state needed
+/// to perform incremental compilations
+///
+/// TODO: Fix the race condition that occurs when the ResidentCompiler returns
+/// a kernel file to the CLI and another compilation request is given before
+/// the VM is able to launch from the kernel that was returned in the first
+/// compile request. The ResidentCompiler will be in the state of waiting for
+/// a recompile request and will subsequently process the request and modify
+/// the kernel file. However, it should be waiting for the VM to finish
+/// launching itself from this kernel until it modifies the kernel.
+/// As far as I can tell this race also exists in the current CLI run
+/// command when using pub's precompile pipeline.
+///
+/// TODO Fix the race condition that occurs when the same entry point is
+/// compiled concurrently.
+class ResidentCompiler {
+ File _entryPoint;
+ File _outputDill;
+ File _currentPackage;
+ ArgResults _compileOptions;
+ FrontendCompiler _compiler;
+ DateTime _lastCompileStartTime =
+ DateTime.now().floorTime(Duration(seconds: 1));
+ _ResidentState _state = _ResidentState.WAITING_FOR_FIRST_COMPILE;
+ final StringBuffer _compilerOutput = StringBuffer();
+ final Set<Uri> trackedSources = <Uri>{};
+ final List<String> _formattedOutput = <String>[];
+
+ ResidentCompiler(this._entryPoint, this._outputDill, this._compileOptions) {
+ _compiler = FrontendCompiler(_compilerOutput);
+ updateState(_compileOptions);
+ }
+
+ /// The [ResidentCompiler] will use the [newOptions] for future compilation
+ /// requests.
+ void updateState(ArgResults newOptions) {
+ final packages = newOptions['packages'];
+ _compileOptions = newOptions;
+ _currentPackage = packages == null ? null : File(packages);
+ // Refresh the compiler's output for the next compile
+ _compilerOutput.clear();
+ _formattedOutput.clear();
+ _state = _ResidentState.WAITING_FOR_FIRST_COMPILE;
+ }
+
+ /// Determines whether the current compile options are outdated with respect
+ /// to the [newOptions]
+ ///
+ /// TODO: account for all compiler options. See vm/bin/kernel_service.dart:88
+ bool areOptionsOutdated(ArgResults newOptions) {
+ final packagesPath = newOptions['packages'];
+ return (packagesPath != null && _currentPackage == null) ||
+ (packagesPath == null && _currentPackage != null) ||
+ (_currentPackage != null && _currentPackage.path != packagesPath) ||
+ (_currentPackage != null &&
+ !_lastCompileStartTime.isAfter(_currentPackage
+ .statSync()
+ .modified
+ .floorTime(Duration(seconds: 1))));
+ }
+
+ /// Compiles the entry point that this ResidentCompiler is hooked to.
+ /// Will perform incremental compilations when possible.
+ /// If the options are outdated, must use updateState to get a correct
+ /// compile.
+ Future<String> compile() async {
+ var incremental = false;
+
+ // If this entrypoint was previously compiled on this compiler instance,
+ // check which source files need to be recompiled in the incremental
+ // compilation request. If no files have been modified, we can return
+ // the cached kernel. Otherwise, perform an incremental compilation.
+ if (_state == _ResidentState.WAITING_FOR_RECOMPILE) {
+ var invalidatedUris =
+ await _getSourceFilesToRecompile(_lastCompileStartTime);
+ // No changes to source files detected and cached kernel file exists
+ // If a kernel file is removed in between compilation requests,
+ // fall through to procude the kernel in recompileDelta.
+ if (invalidatedUris.isEmpty && _outputDill.existsSync()) {
+ return _encodeCompilerOutput(
+ _outputDill.path, _formattedOutput, _compiler.errors.length,
+ usingCachedKernel: true);
+ }
+ _state = _ResidentState.COMPILING;
+ incremental = true;
+ invalidatedUris
+ .forEach((invalidatedUri) => _compiler.invalidate(invalidatedUri));
+ _compiler.errors.clear();
+ _lastCompileStartTime = DateTime.now().floorTime(Duration(seconds: 1));
+ await _compiler.recompileDelta(entryPoint: _entryPoint.path);
+ } else {
+ _state = _ResidentState.COMPILING;
+ _lastCompileStartTime = DateTime.now().floorTime(Duration(seconds: 1));
+ _compiler.errors.clear();
+ await _compiler.compile(_entryPoint.path, _compileOptions);
+ }
+
+ _interpretCompilerOutput(LineSplitter()
+ .convert(_compilerOutput.toString())
+ .where((line) => line.isNotEmpty)
+ .toList());
+ _compilerOutput.clear();
+ // forces the compiler to produce complete kernel files on each
+ // request, even when incrementally compiled.
+ _compiler
+ ..acceptLastDelta()
+ ..resetIncrementalCompiler();
+ _state = _ResidentState.WAITING_FOR_RECOMPILE;
+
+ return _encodeCompilerOutput(
+ _outputDill.path, _formattedOutput, _compiler.errors.length,
+ incrementalCompile: incremental);
+ }
+
+ /// Reads the compiler's [outputLines] to keep track of which files
+ /// need to be tracked. Adds correctly ANSI formatted output to
+ /// the [_formattedOutput] list.
+ void _interpretCompilerOutput(List<String> outputLines) {
+ _formattedOutput.clear();
+ var outputLineIndex = 0;
+ var acceptingErrorsOrVerboseOutput = true;
+ final boundaryKey = outputLines[outputLineIndex]
+ .substring(outputLines[outputLineIndex++].indexOf(' ') + 1);
+ var line = outputLines[outputLineIndex++];
+
+ while (acceptingErrorsOrVerboseOutput || !line.startsWith(boundaryKey)) {
+ if (acceptingErrorsOrVerboseOutput) {
+ if (line == boundaryKey) {
+ acceptingErrorsOrVerboseOutput = false;
+ } else {
+ _formattedOutput.add(line);
+ }
+ } else {
+ final diffUri = line.substring(1);
+ if (line.startsWith('+')) {
+ trackedSources.add(Uri.parse(diffUri));
+ } else if (line.startsWith('-')) {
+ trackedSources.remove(Uri.parse(diffUri));
+ }
+ }
+ line = outputLines[outputLineIndex++];
+ }
+ }
+
+ /// Returns a list of uris that need to be recompiled, based on the
+ /// [lastkernelCompileTime] timestamp.
+ /// Due to Windows timestamp granularity, all timestamps are truncated by
+ /// the second. This has no effect on correctness but may result in more
+ /// files being marked as invalid than are strictly required.
+ Future<List<Uri>> _getSourceFilesToRecompile(
+ DateTime lastKernelCompileTime) async {
+ final sourcesToRecompile = <Uri>[];
+ for (Uri uri in trackedSources) {
+ final sourceModifiedTime = File(uri.toFilePath())
+ .statSync()
+ .modified
+ .floorTime(Duration(seconds: 1));
+ if (!lastKernelCompileTime.isAfter(sourceModifiedTime)) {
+ sourcesToRecompile.add(uri);
+ }
+ }
+ return sourcesToRecompile;
+ }
+
+ /// Encodes [outputDillPath] and any [formattedErrors] in JSON to
+ /// be sent over the socket.
+ static String _encodeCompilerOutput(
+ String outputDillPath,
+ List<String> formattedErrors,
+ int errorCount, {
+ bool usingCachedKernel = false,
+ bool incrementalCompile = false,
+ }) {
+ return jsonEncode(<String, Object>{
+ "success": errorCount == 0,
+ "errorCount": errorCount,
+ "compilerOutputLines": formattedErrors,
+ "output-dill": outputDillPath,
+ if (usingCachedKernel) "returnedStoredKernel": true, // used for testing
+ if (incrementalCompile) "incremental": true, // used for testing
+ });
+ }
+}
+
+/// Maintains [FrontendCompiler] instances for kernel compilations, meant to be
+/// used by the Dart CLI via sockets.
+///
+/// The [ResidentFrontendServer] manages compilation requests for VM targets
+/// between any number of dart entrypoints, and utilizes incremental
+/// compilation and existing kernel files for faster compile times.
+///
+/// Communication is handled on the socket set up by the
+/// residentListenAndCompile method.
+class ResidentFrontendServer {
+ static const _commandString = 'command';
+ static const _executableString = 'executable';
+ static const _packageString = 'packages';
+ static const _outputString = 'output-dill';
+ static const _shutdownString = 'shutdown';
+ static const _compilerLimit = 3;
+
+ static final shutdownCommand =
+ jsonEncode(<String, Object>{_commandString: _shutdownString});
+ static final _shutdownJsonResponse =
+ jsonEncode(<String, Object>{_shutdownString: true});
+ static final _sdkBinariesUri = computePlatformBinariesLocation();
+ static final _sdkUri = _sdkBinariesUri.resolve('../../');
+ static final _platformKernelUri =
+ _sdkBinariesUri.resolve('vm_platform_strong.dill');
+ static final Map<String, ResidentCompiler> compilers = {};
+
+ /// Takes in JSON [input] from the socket and compiles the request,
+ /// using incremental compilation if possible. Returns a JSON string to be
+ /// sent back to the client socket containing either an error message or the
+ /// kernel file to be used.
+ ///
+ /// If the command is compile, paths the source file, package_config.json,
+ /// and the output-dill file must be provided via "executable", "packages",
+ /// and "output-dill".
+ static Future<String> handleRequest(String input) async {
+ Map<String, dynamic> request;
+ try {
+ request = jsonDecode(input);
+ } on FormatException {
+ return _encodeErrorMessage('$input is not valid JSON.');
+ }
+
+ switch (request[_commandString]) {
+ case 'compile':
+ if (request[_executableString] == null ||
+ request[_outputString] == null) {
+ return _encodeErrorMessage(
+ 'compilation requests must include an $_executableString and an $_outputString path.');
+ }
+ final executablePath = request[_executableString];
+ final cachedDillPath = request[_outputString];
+ final options = argParser.parse(<String>[
+ '--sdk-root=${_sdkUri.toFilePath()}',
+ '--incremental',
+ if (request.containsKey(_packageString))
+ '--packages=${request[_packageString]}',
+ '--platform=${_platformKernelUri.path}',
+ '--output-dill=$cachedDillPath',
+ '--target=vm',
+ '--filesystem-scheme',
+ 'org-dartlang-root',
+ if (request['verbose'] == true) '--verbose',
+ ]);
+
+ var residentCompiler = compilers[executablePath];
+ if (residentCompiler == null) {
+ // Avoids using too much memory
+ if (compilers.length >= ResidentFrontendServer._compilerLimit) {
+ compilers.remove(compilers.keys.first);
+ }
+ residentCompiler = ResidentCompiler(
+ File(executablePath), File(cachedDillPath), options);
+ compilers[executablePath] = residentCompiler;
+ } else if (residentCompiler.areOptionsOutdated(options)) {
+ residentCompiler.updateState(options);
+ }
+
+ return await residentCompiler.compile();
+ case 'shutdown':
+ return _shutdownJsonResponse;
+ default:
+ return _encodeErrorMessage(
+ 'Unsupported command: ${request[_commandString]}.');
+ }
+ }
+
+ /// Encodes the [message] in JSON to be sent over the socket.
+ static String _encodeErrorMessage(String message) =>
+ jsonEncode(<String, Object>{"success": false, "errorMessage": message});
+
+ /// Used to create compile requests for the ResidentFrontendServer.
+ /// Returns a JSON string that the resident compiler will be able to
+ /// interpret.
+ static String createCompileJSON(
+ {String executable,
+ String packages,
+ String outputDill,
+ bool verbose = false}) {
+ return jsonEncode(<String, Object>{
+ "command": "compile",
+ "executable": executable,
+ if (packages != null) "packages": packages,
+ "output-dill": outputDill,
+ "verbose": verbose,
+ });
+ }
+}
+
+/// Sends the JSON string [request] to the resident frontend server
+/// and returns server's response in JSON
+///
+/// Clients must use this function when wanting to interact with a
+/// ResidentFrontendServer instance.
+Future<Map<String, dynamic>> sendAndReceiveResponse(
+ InternetAddress address, int port, String request) async {
+ try {
+ final client = await Socket.connect(address, port);
+ client.write(request);
+ final data = await client.first;
+ client.destroy();
+ return jsonDecode(String.fromCharCodes(data));
+ } catch (e) {
+ return <String, Object>{"success": false, "errorMessage": e.toString()};
+ }
+}
+
+/// Listens for compilation commands from socket connections on the
+/// provided [address] and [port].
+Future<StreamSubscription<Socket>> residentListenAndCompile(
+ InternetAddress address, int port, File serverInfoFile) async {
+ ServerSocket server;
+ try {
+ // TODO: have server shut itself off after period of inactivity
+ server = await ServerSocket.bind(address, port);
+ serverInfoFile
+ ..writeAsStringSync(
+ 'address:${server.address.address} port:${server.port}');
+ } catch (e) {
+ print('Error: $e\n');
+ return null;
+ }
+ print(
+ 'Resident Frontend Compiler is listening at ${server.address.address}:${server.port}');
+ return server.listen((client) {
+ client.listen((Uint8List data) async {
+ String result = await ResidentFrontendServer.handleRequest(
+ String.fromCharCodes(data));
+ client.write(result);
+ if (result == ResidentFrontendServer._shutdownJsonResponse) {
+ if (serverInfoFile.existsSync()) {
+ serverInfoFile.deleteSync();
+ }
+ await server.close();
+ }
+ }, onError: (error) {
+ client.close();
+ }, onDone: () {
+ client.close();
+ });
+ }, onError: (_) {
+ if (serverInfoFile.existsSync()) {
+ serverInfoFile.deleteSync();
+ }
+ });
+}
diff --git a/pkg/frontend_server/lib/starter.dart b/pkg/frontend_server/lib/starter.dart
new file mode 100644
index 0000000..e88a7dd
--- /dev/null
+++ b/pkg/frontend_server/lib/starter.dart
@@ -0,0 +1,111 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE.md file.
+
+// @dart = 2.9
+import 'dart:async';
+import 'dart:io' show Directory, File, InternetAddress, stdin;
+
+import 'package:args/args.dart';
+import 'package:path/path.dart' as path;
+import 'package:vm/incremental_compiler.dart' show IncrementalCompiler;
+
+import 'frontend_server.dart';
+import 'src/binary_protocol.dart';
+import 'src/resident_frontend_server.dart';
+
+/// Entry point for this module, that creates either a `_FrontendCompiler`
+/// instance or a `ResidentFrontendServer` instance and
+/// processes user input.
+/// `compiler` is an optional parameter so it can be replaced with mocked
+/// version for testing.
+Future<int> starter(
+ List<String> args, {
+ CompilerInterface compiler,
+ Stream<List<int>> input,
+ StringSink output,
+ IncrementalCompiler generator,
+ BinaryPrinterFactory binaryPrinterFactory,
+}) async {
+ ArgResults options;
+ try {
+ options = argParser.parse(args);
+ } catch (error) {
+ print('ERROR: $error\n');
+ print(usage);
+ return 1;
+ }
+ if (options['resident-info-file-name'] != null) {
+ var serverSubscription = await residentListenAndCompile(
+ InternetAddress.loopbackIPv4,
+ 0,
+ File(options['resident-info-file-name']));
+ return serverSubscription == null ? 1 : 0;
+ }
+
+ if (options['train']) {
+ if (options.rest.isEmpty) {
+ throw Exception('Must specify input.dart');
+ }
+
+ final String input = options.rest[0];
+ final String sdkRoot = options['sdk-root'];
+ final String platform = options['platform'];
+ final Directory temp =
+ Directory.systemTemp.createTempSync('train_frontend_server');
+ try {
+ final String outputTrainingDill = path.join(temp.path, 'app.dill');
+ final List<String> args = <String>[
+ '--incremental',
+ '--sdk-root=$sdkRoot',
+ '--output-dill=$outputTrainingDill',
+ ];
+ if (platform != null) {
+ args.add('--platform=${Uri.file(platform)}');
+ }
+ options = argParser.parse(args);
+ compiler ??=
+ FrontendCompiler(output, printerFactory: binaryPrinterFactory);
+
+ await compiler.compile(input, options, generator: generator);
+ compiler.acceptLastDelta();
+ await compiler.recompileDelta();
+ compiler.acceptLastDelta();
+ compiler.resetIncrementalCompiler();
+ await compiler.recompileDelta();
+ compiler.acceptLastDelta();
+ await compiler.recompileDelta();
+ compiler.acceptLastDelta();
+ return 0;
+ } finally {
+ temp.deleteSync(recursive: true);
+ }
+ }
+
+ final binaryProtocolAddressStr = options['binary-protocol-address'];
+ if (binaryProtocolAddressStr is String) {
+ runBinaryProtocol(binaryProtocolAddressStr);
+ return 0;
+ }
+
+ compiler ??= FrontendCompiler(output,
+ printerFactory: binaryPrinterFactory,
+ unsafePackageSerialization: options["unsafe-package-serialization"],
+ incrementalSerialization: options["incremental-serialization"],
+ useDebuggerModuleNames: options['debugger-module-names'],
+ emitDebugMetadata: options['experimental-emit-debug-metadata'],
+ emitDebugSymbols: options['emit-debug-symbols']);
+
+ if (options.rest.isNotEmpty) {
+ return await compiler.compile(options.rest[0], options,
+ generator: generator)
+ ? 0
+ : 254;
+ }
+
+ Completer<int> completer = Completer<int>();
+ var subscription = listenAndCompile(
+ compiler, input ?? stdin, options, completer,
+ generator: generator);
+ return completer.future..then((value) => subscription.cancel());
+}
diff --git a/pkg/frontend_server/test/frontend_server_flutter.dart b/pkg/frontend_server/test/frontend_server_flutter.dart
index fee26f6..3423d16 100644
--- a/pkg/frontend_server/test/frontend_server_flutter.dart
+++ b/pkg/frontend_server/test/frontend_server_flutter.dart
@@ -1,3 +1,7 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE.md file.
+
// @dart = 2.9
import 'dart:async' show StreamController;
import 'dart:convert' show utf8, LineSplitter;
@@ -13,7 +17,7 @@
import 'package:front_end/src/api_unstable/vm.dart'
show CompilerOptions, NnbdMode, StandardFileSystem;
-import 'package:frontend_server/frontend_server.dart';
+import 'package:frontend_server/starter.dart';
main(List<String> args) async {
String flutterDir;
diff --git a/pkg/frontend_server/test/frontend_server_test.dart b/pkg/frontend_server/test/frontend_server_test.dart
index 9cc623d..5bac7ef 100644
--- a/pkg/frontend_server/test/frontend_server_test.dart
+++ b/pkg/frontend_server/test/frontend_server_test.dart
@@ -1,3 +1,7 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE.md file.
+
// @dart = 2.9
// ignore_for_file: empty_catches
@@ -10,6 +14,7 @@
import 'package:_fe_analyzer_shared/src/macros/compiler/request_channel.dart';
import 'package:front_end/src/api_unstable/vm.dart';
import 'package:frontend_server/frontend_server.dart';
+import 'package:frontend_server/starter.dart';
import 'package:kernel/ast.dart' show Component;
import 'package:kernel/binary/ast_to_binary.dart';
import 'package:kernel/kernel.dart' show loadComponentFromBinary;
diff --git a/pkg/frontend_server/test/src/resident_frontend_server_test.dart b/pkg/frontend_server/test/src/resident_frontend_server_test.dart
new file mode 100644
index 0000000..bf96a29
--- /dev/null
+++ b/pkg/frontend_server/test/src/resident_frontend_server_test.dart
@@ -0,0 +1,526 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE.md file.
+
+// @dart = 2.9
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:frontend_server/starter.dart';
+import 'package:frontend_server/src/resident_frontend_server.dart';
+import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
+
+void main() async {
+ // Files are considered to be modified if the modification timestamp is
+ // during the same second of the last compile time due to the
+ // granularity of file stat on windows.
+ // Waiting for this number of milliseconds guarantees that the files in
+ // the unit tests will not be counted as modified.
+ const STAT_GRANULARITY = 1100;
+
+ group('Resident Frontend Server: invalid input: ', () {
+ test('no command given', () async {
+ final jsonResponse = await ResidentFrontendServer.handleRequest(
+ jsonEncode(<String, Object>{"no": "command"}));
+ expect(
+ jsonResponse,
+ equals(jsonEncode(<String, Object>{
+ "success": false,
+ "errorMessage": "Unsupported command: null."
+ })));
+ });
+
+ test('invalid command', () async {
+ final jsonResponse = await ResidentFrontendServer.handleRequest(
+ jsonEncode(<String, Object>{"command": "not a command"}));
+ expect(
+ jsonResponse,
+ equals(jsonEncode(<String, Object>{
+ "success": false,
+ "errorMessage": "Unsupported command: not a command."
+ })));
+ });
+
+ test('not a JSON request', () async {
+ final jsonResponse = await ResidentFrontendServer.handleRequest("hello");
+ expect(
+ jsonResponse,
+ equals(jsonEncode(<String, Object>{
+ "success": false,
+ "errorMessage": "hello is not valid JSON."
+ })));
+ });
+
+ test('missing files for compile command', () async {
+ final jsonResponse = await ResidentFrontendServer.handleRequest(
+ jsonEncode(<String, Object>{"command": "compile"}));
+ expect(
+ jsonResponse,
+ equals(jsonEncode(<String, Object>{
+ "success": false,
+ "errorMessage":
+ "compilation requests must include an executable and an output-dill path."
+ })));
+ });
+ });
+
+ group('Resident Frontend Server: compile tests: ', () {
+ Directory d;
+ File executable, package, cachedDill;
+
+ setUp(() async {
+ d = Directory.systemTemp.createTempSync();
+ executable = File(path.join(d.path, 'src1.dart'))
+ ..createSync()
+ ..writeAsStringSync('void main() {print("hello " "there");}');
+ package = File(path.join(d.path, '.dart_tool', 'package_config.json'))
+ ..createSync(recursive: true)
+ ..writeAsStringSync('''
+ {
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "hello",
+ "rootUri": "../",
+ "packageUri": "./"
+ }
+ ]
+ }
+ ''');
+ cachedDill = File(path.join(d.path, 'src1.dart.dill'));
+ });
+
+ tearDown(() async {
+ d.delete(recursive: true);
+ ResidentFrontendServer.compilers.clear();
+ });
+
+ test('initial compile, basic', () async {
+ final compileResult = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+
+ expect(compileResult['success'], true);
+ expect(compileResult['errorCount'], 0);
+ expect(compileResult['output-dill'], equals(cachedDill.path));
+ });
+
+ test('no package_config.json provided', () async {
+ final compileResult = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path, outputDill: cachedDill.path)));
+
+ expect(compileResult['success'], true);
+ expect(compileResult['errorCount'], 0);
+ expect(compileResult['output-dill'], equals(cachedDill.path));
+ });
+
+ test('incremental compilation', () async {
+ await Future.delayed(Duration(milliseconds: STAT_GRANULARITY));
+ final compileResults1 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path,
+ )));
+ executable.writeAsStringSync(
+ executable.readAsStringSync().replaceFirst('there', 'world'));
+
+ final compileResults2 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path,
+ )));
+
+ expect(compileResults1['success'], true);
+ expect(compileResults1['errorCount'],
+ allOf(0, equals(compileResults2['errorCount'])));
+ expect(compileResults2['output-dill'],
+ equals(compileResults1['output-dill']));
+ expect(compileResults2['incremental'], true);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable.path].trackedSources.first,
+ equals(Uri.file(executable.path)));
+ expect(
+ ResidentFrontendServer
+ .compilers[executable.path].trackedSources.length,
+ 1);
+ });
+
+ test(
+ 'compiling twice with no modifications returns cached kernel without invoking compiler',
+ () async {
+ await Future.delayed(Duration(milliseconds: STAT_GRANULARITY));
+ final compileResults1 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+ final compileResults2 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+
+ expect(compileResults1['errorCount'],
+ allOf(0, equals(compileResults2['errorCount'])));
+ expect(compileResults1['output-dill'],
+ equals(compileResults2['output-dill']));
+ expect(compileResults2['returnedStoredKernel'], true);
+ expect(ResidentFrontendServer.compilers.length, 1);
+ });
+
+ test('switch entrypoints gracefully', () async {
+ final executable2 = File(path.join(d.path, 'src2.dart'))
+ ..writeAsStringSync('void main() {}');
+ final entryPointDill = File(path.join(d.path, 'src2.dart.dill'));
+
+ final compileResults1 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+ final compileResults2 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable2.path,
+ packages: package.path,
+ outputDill: entryPointDill.path)));
+
+ expect(compileResults1['success'],
+ allOf(true, equals(compileResults2['success'])));
+ expect(
+ ResidentFrontendServer
+ .compilers[executable.path].trackedSources.length,
+ 1);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable.path].trackedSources.first,
+ equals(Uri.file(executable.path)));
+ expect(
+ ResidentFrontendServer
+ .compilers[executable2.path].trackedSources.length,
+ 1);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable2.path].trackedSources.first,
+ equals(Uri.file(executable2.path)));
+ expect(ResidentFrontendServer.compilers.length, 2);
+ });
+
+ test('Cached kernel is removed between compilation requests', () async {
+ await Future.delayed(Duration(milliseconds: STAT_GRANULARITY));
+ final compileResults1 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+
+ executable.writeAsStringSync(
+ executable.readAsStringSync().replaceFirst('there', 'world'));
+ cachedDill.deleteSync();
+ expect(cachedDill.existsSync(), false);
+
+ final compileResults2 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+
+ expect(compileResults1['success'], true);
+ expect(compileResults1['errorCount'],
+ allOf(equals(compileResults2['errorCount']), 0));
+ expect(compileResults2['returnedStoredKernel'], null);
+ expect(compileResults2['incremental'], true);
+ expect(cachedDill.existsSync(), true);
+ expect(ResidentFrontendServer.compilers.length, 1);
+ });
+
+ test('maintains tracked sources', () async {
+ await Future.delayed(Duration(milliseconds: STAT_GRANULARITY));
+ final executable2 = File(path.join(d.path, 'src2.dart'))
+ ..createSync()
+ ..writeAsStringSync('''
+ import 'src3.dart';
+ void main() {}''');
+ final executable3 = File(path.join(d.path, 'src3.dart'))
+ ..createSync()
+ ..writeAsStringSync('''
+ void fn() {}''');
+
+ // adding or removing package_config.json while maintaining the same entrypoint
+ // should not alter tracked sources
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path, outputDill: cachedDill.path));
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path));
+ final compileResult1 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path, outputDill: cachedDill.path)));
+
+ expect(compileResult1['success'], true);
+ expect(compileResult1['returnedStoredKernel'], null);
+ expect(compileResult1['incremental'], null);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable.path].trackedSources.length,
+ 1);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable.path].trackedSources.first,
+ equals(Uri.file(executable.path)));
+
+ // switching entrypoints, packages, and modifying packages
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable2.path, outputDill: cachedDill.path));
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable2.path,
+ packages: package.path,
+ outputDill: cachedDill.path));
+
+ package.writeAsStringSync(package.readAsStringSync());
+ // Forces package to be behind the next computed kernel by 1 second
+ // so that the final compilation will be incremental
+ await Future.delayed(Duration(milliseconds: STAT_GRANULARITY));
+
+ final compileResult2 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable2.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+ expect(compileResult2['success'], true);
+ expect(compileResult2['incremental'], null);
+ expect(compileResult2['returnedStoredKernel'], null);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable2.path].trackedSources.length,
+ greaterThanOrEqualTo(2));
+ expect(
+ ResidentFrontendServer.compilers[executable2.path].trackedSources,
+ containsAll(
+ <Uri>{Uri.file(executable2.path), Uri.file(executable3.path)}));
+
+ // remove a source
+ executable2.writeAsStringSync('void main() {}');
+ final compileResult3 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable2.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+ expect(compileResult3['success'], true);
+ expect(compileResult3['incremental'], true);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable2.path].trackedSources.length,
+ greaterThanOrEqualTo(1));
+ expect(ResidentFrontendServer.compilers[executable2.path].trackedSources,
+ containsAll(<Uri>{Uri.file(executable2.path)}));
+ });
+
+ test('continues to work after compiler error is produced', () async {
+ final originalContent = executable.readAsStringSync();
+ final newContent = originalContent.replaceAll(';', '@');
+ await Future.delayed(Duration(milliseconds: STAT_GRANULARITY));
+
+ executable.writeAsStringSync(newContent);
+ final compileResults1 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+
+ executable.writeAsStringSync(originalContent);
+ final compileResults2 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+
+ expect(compileResults1['success'], false);
+ expect(compileResults1['errorCount'], greaterThan(1));
+ expect(compileResults2['success'], true);
+ expect(compileResults2['errorCount'], 0);
+ expect(compileResults2['incremental'], true);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable.path].trackedSources.length,
+ 1);
+ expect(
+ ResidentFrontendServer
+ .compilers[executable.path].trackedSources.first,
+ equals(Uri.file(executable.path)));
+ });
+
+ test('using cached kernel maintains error messages', () async {
+ final originalContent = executable.readAsStringSync();
+ executable.writeAsStringSync(originalContent.replaceFirst(';', ''));
+ await Future.delayed(Duration(milliseconds: STAT_GRANULARITY));
+
+ final compileResults1 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path,
+ )));
+ final compileResults2 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path,
+ )));
+ executable.writeAsStringSync(originalContent);
+ final compileResults3 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path,
+ )));
+
+ expect(compileResults2['returnedStoredKernel'], true);
+ expect(compileResults1['errorCount'],
+ allOf(1, equals(compileResults2['errorCount'])));
+ expect(
+ compileResults2['compilerOutputLines'] as List<dynamic>,
+ containsAllInOrder(
+ compileResults1['compilerOutputLines'] as List<dynamic>));
+ expect(compileResults3['errorCount'], 0);
+ expect(compileResults3['incremental'], true);
+ });
+
+ test('enforces compiler limit', () async {
+ final executable2 = File(path.join(d.path, 'src2.dart'))
+ ..createSync()
+ ..writeAsStringSync('''
+ import 'src3.dart';
+ void main() {}''');
+ final executable3 = File(path.join(d.path, 'src3.dart'))
+ ..createSync()
+ ..writeAsStringSync('''
+ void main() {}''');
+ final executable4 = File(path.join(d.path, 'src4.dart'))
+ ..createSync()
+ ..writeAsStringSync('''
+ void main() {}''');
+ final compileResults1 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+ final compileResults2 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable2.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+ final compileResults3 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable3.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+ final compileResults4 = jsonDecode(
+ await ResidentFrontendServer.handleRequest(
+ ResidentFrontendServer.createCompileJSON(
+ executable: executable4.path,
+ packages: package.path,
+ outputDill: cachedDill.path)));
+ expect(
+ compileResults1['success'],
+ allOf(
+ true,
+ equals(compileResults2['success']),
+ equals(compileResults3['success']),
+ equals(compileResults4['success'])));
+ expect(ResidentFrontendServer.compilers.length, 3);
+ expect(
+ ResidentFrontendServer.compilers.containsKey(executable4.path), true);
+ });
+ });
+
+ group('Resident Frontend Server: socket tests: ', () {
+ Directory d;
+ File serverInfo;
+
+ setUp(() {
+ d = Directory.systemTemp.createTempSync();
+ serverInfo = File(path.join(d.path, 'info.txt'));
+ });
+ tearDown(() {
+ d.deleteSync(recursive: true);
+ });
+
+ test('ServerSocket fails to bind', () async {
+ final result = await residentListenAndCompile(
+ InternetAddress.loopbackIPv4, -1, serverInfo);
+
+ expect(serverInfo.existsSync(), false);
+ expect(result, null);
+ });
+
+ test('socket passes messages properly and shutsdown properly', () async {
+ await residentListenAndCompile(
+ InternetAddress.loopbackIPv4, 0, serverInfo);
+
+ expect(serverInfo.existsSync(), true);
+ final info = serverInfo.readAsStringSync();
+ final address = InternetAddress(
+ info.substring(info.indexOf(':') + 1, info.indexOf(' ')));
+ final port = int.parse(info.substring(info.lastIndexOf(':') + 1));
+
+ final shutdownResult = await sendAndReceiveResponse(
+ address, port, ResidentFrontendServer.shutdownCommand);
+
+ expect(shutdownResult, equals(<String, dynamic>{"shutdown": true}));
+ expect(serverInfo.existsSync(), false);
+ });
+
+ test('resident server starter', () async {
+ final returnValue =
+ starter(['--resident-info-file-name=${serverInfo.path}']);
+ expect(await returnValue, 0);
+ expect(serverInfo.existsSync(), true);
+ final info = serverInfo.readAsStringSync();
+ final address = InternetAddress(
+ info.substring(info.indexOf(':') + 1, info.indexOf(' ')));
+ final port = int.parse(info.substring(info.lastIndexOf(':') + 1));
+
+ var result = await sendAndReceiveResponse(
+ address, port, ResidentFrontendServer.shutdownCommand);
+ expect(result, equals(<String, dynamic>{"shutdown": true}));
+ expect(serverInfo.existsSync(), false);
+
+ result = await sendAndReceiveResponse(
+ address, port, ResidentFrontendServer.shutdownCommand);
+ expect(result['errorMessage'], contains('SocketException'));
+ });
+ });
+}
diff --git a/pkg/nnbd_migration/lib/instrumentation.dart b/pkg/nnbd_migration/lib/instrumentation.dart
index 62ecd1f..2807b4b4 100644
--- a/pkg/nnbd_migration/lib/instrumentation.dart
+++ b/pkg/nnbd_migration/lib/instrumentation.dart
@@ -37,7 +37,7 @@
factory CodeReference.fromElement(Element element) {
var unitElement = element.thisOrAncestorOfType<CompilationUnitElement>();
if (unitElement == null) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is LibraryElement) {
unitElement = enclosingElement.definingCompilationUnit;
} else {
@@ -76,7 +76,7 @@
if (elementName != null) {
parts.add(elementName);
}
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
if (parts.isEmpty) return null;
return parts.reversed.join('.');
diff --git a/pkg/nnbd_migration/lib/src/decorated_class_hierarchy.dart b/pkg/nnbd_migration/lib/src/decorated_class_hierarchy.dart
index 71c8a70..519bd12 100644
--- a/pkg/nnbd_migration/lib/src/decorated_class_hierarchy.dart
+++ b/pkg/nnbd_migration/lib/src/decorated_class_hierarchy.dart
@@ -52,7 +52,7 @@
/// because the relationship between a class and its superclass is not
/// nullable.
DecoratedType getDecoratedSupertype(
- ClassElement class_, ClassElement superclass) {
+ ClassElement class_, InterfaceElement superclass) {
assert(!(class_.library.isDartCore && class_.name == 'Null'));
if (superclass.typeParameters.isEmpty) {
return DecoratedType(
diff --git a/pkg/nnbd_migration/lib/src/decorated_type.dart b/pkg/nnbd_migration/lib/src/decorated_type.dart
index 33556b2..12b3f4d 100644
--- a/pkg/nnbd_migration/lib/src/decorated_type.dart
+++ b/pkg/nnbd_migration/lib/src/decorated_type.dart
@@ -184,8 +184,8 @@
// We'll be storing the type parameter bounds in
// [_decoratedTypeParameterBounds] so the type parameter needs to have an
// enclosing element of `null`.
- assert(parameter.enclosingElement2 == null,
- '$parameter should not have parent ${parameter.enclosingElement2}');
+ assert(parameter.enclosingElement3 == null,
+ '$parameter should not have parent ${parameter.enclosingElement3}');
}
/// If `this` represents an interface type, returns the substitution necessary
@@ -415,7 +415,7 @@
Map<TypeParameterElement, DecoratedType>.from(substitution);
for (int i = 0; i < typeFormals.length; i++) {
// Check if it's a fresh type variable.
- if (undecoratedResult.typeFormals[i].enclosingElement2 == null) {
+ if (undecoratedResult.typeFormals[i].enclosingElement3 == null) {
substitution[typeFormals[i]] =
DecoratedType._forTypeParameterSubstitution(
undecoratedResult.typeFormals[i]);
@@ -542,7 +542,7 @@
final _parentedBounds = <TypeParameterElement, DecoratedType?>{};
DecoratedType? get(TypeParameterElement element) {
- if (element.enclosingElement2 == null) {
+ if (element.enclosingElement3 == null) {
return _orphanBounds[element];
} else {
return _parentedBounds[element];
@@ -550,7 +550,7 @@
}
void put(TypeParameterElement element, DecoratedType? bounds) {
- if (element.enclosingElement2 == null) {
+ if (element.enclosingElement3 == null) {
_orphanBounds[element] = bounds;
} else {
_parentedBounds[element] = bounds;
diff --git a/pkg/nnbd_migration/lib/src/edge_builder.dart b/pkg/nnbd_migration/lib/src/edge_builder.dart
index 6ce51d2..766c3fa 100644
--- a/pkg/nnbd_migration/lib/src/edge_builder.dart
+++ b/pkg/nnbd_migration/lib/src/edge_builder.dart
@@ -11,6 +11,7 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/dart/element/type_system.dart';
+import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer/src/dart/element/member.dart';
@@ -279,7 +280,7 @@
Map<TypeParameterElement, DecoratedType?>? substitution;
Element? baseElement = element.declaration;
if (targetType != null) {
- var enclosingElement = baseElement!.enclosingElement2;
+ var enclosingElement = baseElement!.enclosingElement3;
if (enclosingElement is ClassElement) {
if (targetType.type.explicitBound is InterfaceType &&
enclosingElement.typeParameters.isNotEmpty) {
@@ -473,8 +474,8 @@
var assignee =
getWriteOrReadElement(node.leftHandSide as SimpleIdentifier)!;
var enclosingElementOfCurrentFunction =
- _currentFunctionExpression!.declaredElement!.enclosingElement2;
- if (enclosingElementOfCurrentFunction == assignee.enclosingElement2) {
+ _currentFunctionExpression!.declaredElement!.enclosingElement3;
+ if (enclosingElementOfCurrentFunction == assignee.enclosingElement3) {
// [node]'s enclosing function is a function expression passed directly
// to a call to the test package's `setUp` function, and [node] is an
// assignment to a variable declared in the same scope as the call to
@@ -840,7 +841,7 @@
// Nothing to do; assume the implicit default value of `null` will never
// be reached.
} else {
- var enclosingElement = declaredElement.enclosingElement2;
+ var enclosingElement = declaredElement.enclosingElement3;
if (enclosingElement is ConstructorElement &&
enclosingElement.isFactory &&
enclosingElement.redirectedConstructor != null) {
@@ -1206,7 +1207,7 @@
DecoratedType visitInstanceCreationExpression(
InstanceCreationExpression node) {
var callee = node.constructorName.staticElement!;
- var typeParameters = callee.enclosingElement2.typeParameters;
+ var typeParameters = callee.enclosingElement3.typeParameters;
Iterable<DartType?> typeArgumentTypes;
List<DecoratedType> decoratedTypeArguments;
var typeArguments = node.constructorName.type.typeArguments;
@@ -1387,7 +1388,7 @@
} else {
targetType = _handleTarget(target, node.methodName.name, callee);
}
- } else if (target == null && callee!.enclosingElement2 is ClassElement) {
+ } else if (target == null && callee!.enclosingElement3 is ClassElement) {
targetType = _thisOrSuper(node);
_checkThisNotNull(targetType, node);
}
@@ -1794,13 +1795,13 @@
} else if (staticElement is FunctionElement ||
staticElement is MethodElement ||
staticElement is ConstructorElement) {
- if (staticElement!.enclosingElement2 is ClassElement) {
+ if (staticElement!.enclosingElement3 is ClassElement) {
targetType = _thisOrSuper(node);
}
result =
getOrComputeElementType(node, staticElement, targetType: targetType);
} else if (staticElement is PropertyAccessorElement) {
- if (staticElement.enclosingElement2 is ClassElement) {
+ if (staticElement.enclosingElement3 is ClassElement) {
targetType = _thisOrSuper(node);
}
var elementType =
@@ -1815,8 +1816,8 @@
} else if (staticElement == null) {
assert(node.toString() == 'void', "${node.toString()} != 'void'");
result = _makeNullableVoidType(node);
- } else if (staticElement.enclosingElement2 is ClassElement &&
- (staticElement.enclosingElement2 as ClassElement).isEnum) {
+ } else if (staticElement.enclosingElement3 is ClassElement &&
+ staticElement.enclosingElement3 is EnumElement) {
result = getOrComputeElementType(node, staticElement);
} else {
// TODO(paulberry)
@@ -1882,7 +1883,7 @@
var nullabilityNode = NullabilityNode.forInferredType(target);
var class_ = node.thisOrAncestorOfType<ClassDeclaration>()!;
var decoratedSupertype = _decoratedClassHierarchy!.getDecoratedSupertype(
- class_.declaredElement!, callee.enclosingElement2);
+ class_.declaredElement!, callee.enclosingElement3);
var typeArguments = decoratedSupertype.typeArguments;
Iterable<DartType?> typeArgumentTypes;
typeArgumentTypes = typeArguments.map((t) => t!.type);
@@ -1890,7 +1891,7 @@
typeArguments: typeArguments);
var calleeType =
getOrComputeElementType(node, callee, targetType: createdType);
- var constructorTypeParameters = callee.enclosingElement2.typeParameters;
+ var constructorTypeParameters = callee.enclosingElement3.typeParameters;
_handleInvocationArguments(
node,
@@ -1998,7 +1999,7 @@
}
}
var type = _variables!.decoratedElementType(declaredElement);
- var enclosingElement = declaredElement.enclosingElement2;
+ var enclosingElement = declaredElement.enclosingElement3;
if (!declaredElement.isStatic && enclosingElement is ClassElement) {
var overriddenElements = _inheritanceManager.getOverridden2(
enclosingElement,
@@ -2562,7 +2563,7 @@
void _handleConstructorRedirection(
FormalParameterList parameters, ConstructorName redirectedConstructor) {
var callee = redirectedConstructor.staticElement!.declaration;
- var redirectedClass = callee.enclosingElement2;
+ var redirectedClass = callee.enclosingElement3;
var calleeType = _variables!.decoratedElementType(callee);
var typeArguments = redirectedConstructor.type.typeArguments;
var typeArgumentTypes =
@@ -2581,7 +2582,7 @@
if (node.argumentList.arguments.isNotEmpty &&
callee is ExecutableElement &&
callee.isStatic) {
- var enclosingElement = callee.enclosingElement2;
+ var enclosingElement = callee.enclosingElement3;
if (enclosingElement is ClassElement) {
if (callee.name == 'checkNotNull' &&
enclosingElement.name == 'ArgumentError' &&
@@ -2624,7 +2625,7 @@
_addParametersToFlowAnalysis(parameters);
// Push a scope of post-dominated declarations on the stack.
_postDominatedLocals.pushScope(elements: declaredElement.parameters);
- if (declaredElement.enclosingElement2 is ExtensionElement) {
+ if (declaredElement.enclosingElement3 is ExtensionElement) {
_postDominatedLocals.add(_extensionThis);
}
try {
@@ -2639,7 +2640,7 @@
_handleConstructorRedirection(parameters!, redirectedConstructor);
}
if (declaredElement is! ConstructorElement) {
- var enclosingElement = declaredElement.enclosingElement2;
+ var enclosingElement = declaredElement.enclosingElement3;
if (enclosingElement is ClassElement) {
var overriddenElements = _inheritanceManager.getOverridden2(
enclosingElement,
@@ -2725,7 +2726,7 @@
ClassElement classElement,
Element overriddenElement) {
overriddenElement = overriddenElement.declaration!;
- var overriddenClass = overriddenElement.enclosingElement2 as ClassElement;
+ var overriddenClass = overriddenElement.enclosingElement3 as ClassElement;
var decoratedSupertype = _decoratedClassHierarchy!
.getDecoratedSupertype(classElement, overriddenClass);
var substitution = decoratedSupertype.asSubstitution;
@@ -2784,7 +2785,7 @@
DecoratedType? currentParameterType;
DecoratedType? overriddenParameterType;
if (parameter.isNamed) {
- var name = normalParameter.identifier!.name;
+ var name = normalParameter.name!.lexeme;
currentParameterType = _currentFunctionType!.namedParameters![name];
overriddenParameterType =
overriddenFunctionType.namedParameters![name];
@@ -2826,7 +2827,7 @@
ClassElement classElement,
Element overriddenElement) {
overriddenElement = overriddenElement.declaration!;
- var overriddenClass = overriddenElement.enclosingElement2 as ClassElement;
+ var overriddenClass = overriddenElement.enclosingElement3 as ClassElement;
var decoratedSupertype = _decoratedClassHierarchy!
.getDecoratedSupertype(classElement, overriddenClass);
var substitution = decoratedSupertype.asSubstitution;
@@ -2958,13 +2959,13 @@
Map<TypeParameterElement, DecoratedType?> getterSubstitution = const {};
Map<TypeParameterElement, DecoratedType?> setterSubstitution = const {};
if (class_ != null) {
- var getterClass = getter.enclosingElement2 as ClassElement;
+ var getterClass = getter.enclosingElement3 as ClassElement;
if (!identical(class_, getterClass)) {
getterSubstitution = _decoratedClassHierarchy!
.getDecoratedSupertype(class_, getterClass)
.asSubstitution;
}
- var setterClass = setter.enclosingElement2 as ClassElement;
+ var setterClass = setter.enclosingElement3 as ClassElement;
if (!identical(class_, setterClass)) {
setterSubstitution = _decoratedClassHierarchy!
.getDecoratedSupertype(class_, setterClass)
@@ -3062,9 +3063,10 @@
expression = argument.expression;
} else if (argument is FormalParameter) {
if (argument.isNamed) {
- name = argument.identifier!.name;
+ name = argument.name!.lexeme;
}
- expression = argument.identifier;
+ // TODO(scheglov) This is a hack.
+ expression = (argument as FormalParameterImpl).identifierForMigration;
} else {
expression = argument as Expression;
}
@@ -3218,7 +3220,7 @@
if (isDeclaredOnObject(name)) {
return _dispatch(target);
} else if ((callee is MethodElement || callee is PropertyAccessorElement) &&
- callee!.enclosingElement2 is ExtensionElement) {
+ callee!.enclosingElement3 is ExtensionElement) {
// Extension methods can be called on a `null` target, when the `on` type
// of the extension is nullable. Note: we don't need to check whether the
// target type is assignable to the extended type; that is done in
diff --git a/pkg/nnbd_migration/lib/src/fix_aggregator.dart b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
index 14750b4..03b5fd2 100644
--- a/pkg/nnbd_migration/lib/src/fix_aggregator.dart
+++ b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
@@ -1181,7 +1181,7 @@
AtomicEditInfo(NullabilityFixDescription.addType(typeText), {});
// Skip past the offset of any metadata, a potential `final` keyword, and
// a potential `covariant` keyword.
- var offset = node.type?.offset ?? node.identifier!.offset;
+ var offset = node.type?.offset ?? node.name!.offset;
return aggregator.planner.passThrough(node, innerPlans: [
aggregator.planner.insertText(node, offset,
[AtomicEdit.insert(typeText, info: info), AtomicEdit.insert(' ')]),
diff --git a/pkg/nnbd_migration/lib/src/fix_builder.dart b/pkg/nnbd_migration/lib/src/fix_builder.dart
index 05c8ff4..eff55d1 100644
--- a/pkg/nnbd_migration/lib/src/fix_builder.dart
+++ b/pkg/nnbd_migration/lib/src/fix_builder.dart
@@ -467,7 +467,7 @@
return variable.typeInternal;
}
if (variable is ParameterElement) {
- var enclosingElement = variable.enclosingElement2;
+ var enclosingElement = variable.enclosingElement3;
if (enclosingElement is PropertyAccessorElement &&
enclosingElement.isSynthetic) {
// This is the parameter of a synthetic getter, so it has the same
@@ -503,7 +503,7 @@
/// on a nullable type without introducing a null check).
bool isNullableExtensionMember(Element? element) {
if (element != null) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ExtensionElement) {
return _fixBuilder!._typeSystem
.isPotentiallyNullable(enclosingElement.extendedType);
@@ -1223,7 +1223,7 @@
var nullabilityNode =
_fixBuilder._variables!.decoratedElementType(element!).node!;
if (!nullabilityNode.isNullable) {
- var enclosingElement = element.enclosingElement2;
+ var enclosingElement = element.enclosingElement3;
if (enclosingElement is ConstructorElement &&
enclosingElement.isFactory &&
enclosingElement.redirectedConstructor != null &&
@@ -1336,8 +1336,8 @@
// Change an existing `@required` annotation into a `required` keyword if
// possible.
final element = parameter.declaredElement!;
- final method = element.enclosingElement2!;
- final cls = method.enclosingElement2!;
+ final method = element.enclosingElement3!;
+ final cls = method.enclosingElement3!;
var info = AtomicEditInfo(
NullabilityFixDescription.addRequired(
cls.name, method.name, element.name),
diff --git a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
index efef185..6e5e0e1 100644
--- a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
@@ -560,7 +560,7 @@
enclosingNode != null;
enclosingNode = enclosingNode.parent) {
if (enclosingNode is ConstructorDeclaration) {
- if (enclosingNode.name == null) {
+ if (enclosingNode.name2 == null) {
return _describeClassOrExtensionMember(
enclosingNode.parent as CompilationUnitMember?,
'the default constructor of',
@@ -569,10 +569,10 @@
return _describeClassOrExtensionMember(
enclosingNode.parent as CompilationUnitMember?,
'the constructor',
- enclosingNode.name!.name);
+ enclosingNode.name2!.lexeme);
}
} else if (enclosingNode is MethodDeclaration) {
- var functionName = enclosingNode.name.name;
+ var functionName = enclosingNode.name2.lexeme;
String baseDescription;
if (enclosingNode.isGetter) {
baseDescription = 'the getter';
@@ -590,7 +590,7 @@
functionName);
} else if (enclosingNode is FunctionDeclaration &&
enclosingNode.parent is CompilationUnit) {
- var functionName = enclosingNode.name.name;
+ var functionName = enclosingNode.name2.lexeme;
String baseDescription;
if (enclosingNode.isGetter) {
baseDescription = 'the getter';
@@ -617,20 +617,20 @@
static String _describeClassOrExtensionMember(CompilationUnitMember? parent,
String baseDescription, String functionName) {
if (parent is NamedCompilationUnitMember) {
- var parentName = parent.name.name;
+ var parentName = parent.name2.lexeme;
if (functionName.isEmpty) {
return "$baseDescription '$parentName'";
} else {
return "$baseDescription '$parentName.$functionName'";
}
} else if (parent is ExtensionDeclaration) {
- if (parent.name == null) {
+ if (parent.name2 == null) {
var extendedTypeString = parent.extendedType.type!.getDisplayString(
withNullability: false,
);
return "$baseDescription '$functionName' in unnamed extension on $extendedTypeString";
} else {
- return "$baseDescription '${parent.name!.name}.$functionName'";
+ return "$baseDescription '${parent.name2!.lexeme}.$functionName'";
}
} else {
throw ArgumentError(
@@ -639,7 +639,7 @@
}
static String? _describeVariableDeclaration(VariableDeclaration node) {
- var variableName = node.name.name;
+ var variableName = node.name2.lexeme;
var parent = node.parent!;
var grandParent = parent.parent;
if (grandParent is FieldDeclaration) {
diff --git a/pkg/nnbd_migration/lib/src/node_builder.dart b/pkg/nnbd_migration/lib/src/node_builder.dart
index 78e0b70..a41a5ed 100644
--- a/pkg/nnbd_migration/lib/src/node_builder.dart
+++ b/pkg/nnbd_migration/lib/src/node_builder.dart
@@ -128,7 +128,6 @@
@override
DecoratedType? visitClassDeclaration(ClassDeclaration node) {
node.metadata.accept(this);
- node.name.accept(this);
node.typeParameters?.accept(this);
node.nativeClause?.accept(this);
node.members.accept(this);
@@ -156,7 +155,6 @@
@override
DecoratedType? visitClassTypeAlias(ClassTypeAlias node) {
node.metadata.accept(this);
- node.name.accept(this);
node.typeParameters?.accept(this);
var classElement = node.declaredElement!;
_handleSupertypeClauses(node, classElement, node.superclass,
@@ -222,7 +220,7 @@
_typeProvider, declaredElement.type, _graph, target);
instrumentation?.implicitType(source, node, type);
}
- _variables!.recordDecoratedElementType(node.identifier.staticElement, type);
+ _variables!.recordDecoratedElementType(node.declaredElement, type);
return type;
}
@@ -250,7 +248,6 @@
@override
DecoratedType? visitEnumDeclaration(EnumDeclaration node) {
node.metadata.accept(this);
- node.name.accept(this);
var classElement = node.declaredElement!;
_variables!.recordDecoratedElementType(
classElement, DecoratedType(classElement.thisType, _graph.never));
@@ -479,7 +476,6 @@
@override
DecoratedType? visitMixinDeclaration(MixinDeclaration node) {
node.metadata.accept(this);
- node.name.accept(this);
node.typeParameters?.accept(this);
node.members.accept(this);
_handleSupertypeClauses(node, node.declaredElement!, null, null,
@@ -684,7 +680,7 @@
}
DecoratedType _createDecoratedTypeForClass(
- ClassElement classElement, AstNode? node) {
+ InterfaceElement classElement, AstNode? node) {
var typeArguments = classElement.typeParameters
.map((t) => t.instantiate(nullabilitySuffix: NullabilitySuffix.star))
.toList();
@@ -707,7 +703,7 @@
for (var annotation in metadata) {
var element = annotation.element;
if (element is ConstructorElement) {
- var name = element.enclosingElement2.name;
+ var name = element.enclosingElement3.name;
if (_isAngularUri(element.librarySource.uri)) {
if (name == 'ViewChild' || name == 'ContentChild') {
return _AngularAnnotation.child;
@@ -749,7 +745,7 @@
// Constructors have no explicit return type annotation, so use the
// implicit return type.
decoratedReturnType = _createDecoratedTypeForClass(
- declaredElement.enclosingElement2, parameters!.parent);
+ declaredElement.enclosingElement3, parameters!.parent);
instrumentation?.implicitReturnType(source, node, decoratedReturnType);
} else {
// Inferred return type.
@@ -850,7 +846,7 @@
for (var annotation in node.metadata) {
var element = annotation.element;
if (element is ConstructorElement &&
- element.enclosingElement2.name == 'Optional' &&
+ element.enclosingElement3.name == 'Optional' &&
_isAngularUri(element.librarySource.uri)) {
_graph.makeNullable(
decoratedType!.node!, AngularAnnotationOrigin(source, node));
diff --git a/pkg/nnbd_migration/lib/src/nullability_node_target.dart b/pkg/nnbd_migration/lib/src/nullability_node_target.dart
index 8f6eb6e..a69b7c4 100644
--- a/pkg/nnbd_migration/lib/src/nullability_node_target.dart
+++ b/pkg/nnbd_migration/lib/src/nullability_node_target.dart
@@ -15,7 +15,7 @@
} else {
parts.add(name);
}
- element = element.enclosingElement2;
+ element = element.enclosingElement3;
}
if (parts.isEmpty) {
assert(false, 'Could not compute a name for $element');
diff --git a/pkg/nnbd_migration/lib/src/utilities/built_value_transformer.dart b/pkg/nnbd_migration/lib/src/utilities/built_value_transformer.dart
index 85a14aa..892c0b5 100644
--- a/pkg/nnbd_migration/lib/src/utilities/built_value_transformer.dart
+++ b/pkg/nnbd_migration/lib/src/utilities/built_value_transformer.dart
@@ -13,7 +13,7 @@
var element = annotation.element;
if (element is PropertyAccessorElement &&
element.name == 'nullable') {
- if (element.enclosingElement2 is CompilationUnitElement) {
+ if (element.enclosingElement3 is CompilationUnitElement) {
if (element.library.source.uri.toString() ==
'package:built_value/built_value.dart') {
return annotation;
diff --git a/pkg/nnbd_migration/lib/src/utilities/hint_utils.dart b/pkg/nnbd_migration/lib/src/utilities/hint_utils.dart
index 79d4edd..a6585e6 100644
--- a/pkg/nnbd_migration/lib/src/utilities/hint_utils.dart
+++ b/pkg/nnbd_migration/lib/src/utilities/hint_utils.dart
@@ -249,7 +249,7 @@
} else if (parameter.returnType != null) {
return parameter.returnType!.beginToken;
} else {
- return parameter.identifier.token;
+ return parameter.name;
}
} else if (parameter is SimpleFormalParameter) {
if (parameter.covariantKeyword != null) {
@@ -259,7 +259,7 @@
} else if (parameter.type != null) {
return parameter.type!.beginToken;
} else {
- return parameter.identifier!.token;
+ return parameter.name;
}
}
return null;
diff --git a/pkg/nnbd_migration/lib/src/utilities/where_not_null_transformer.dart b/pkg/nnbd_migration/lib/src/utilities/where_not_null_transformer.dart
index 997bf46..e2bc4fd 100644
--- a/pkg/nnbd_migration/lib/src/utilities/where_not_null_transformer.dart
+++ b/pkg/nnbd_migration/lib/src/utilities/where_not_null_transformer.dart
@@ -139,7 +139,7 @@
if (element is MethodElement) {
if (element.isStatic) return false;
if (element.name != 'where') return false;
- var enclosingElement = element.declaration.enclosingElement2;
+ var enclosingElement = element.declaration.enclosingElement3;
if (enclosingElement is ClassElement) {
// If the class is `Iterable` or a subtype of it, we consider the user
// to be calling a transformable method.
diff --git a/pkg/nnbd_migration/lib/src/utilities/where_or_null_transformer.dart b/pkg/nnbd_migration/lib/src/utilities/where_or_null_transformer.dart
index edf4027..162d544 100644
--- a/pkg/nnbd_migration/lib/src/utilities/where_or_null_transformer.dart
+++ b/pkg/nnbd_migration/lib/src/utilities/where_or_null_transformer.dart
@@ -104,7 +104,7 @@
if (element.isStatic) return null;
var replacementName = _replacementNames[element.name];
if (replacementName == null) return null;
- var enclosingElement = element.declaration.enclosingElement2;
+ var enclosingElement = element.declaration.enclosingElement3;
if (enclosingElement is ClassElement) {
// If the class is `Iterable` or a subtype of it, we consider the user
// to be calling a transformable method.
diff --git a/pkg/nnbd_migration/lib/src/variables.dart b/pkg/nnbd_migration/lib/src/variables.dart
index 4258fad..681852f 100644
--- a/pkg/nnbd_migration/lib/src/variables.dart
+++ b/pkg/nnbd_migration/lib/src/variables.dart
@@ -125,7 +125,7 @@
/// nullabilities.
DecoratedType? decoratedTypeParameterBound(TypeParameterElement typeParameter,
{bool allowNullUnparentedBounds = false}) {
- var enclosingElement = typeParameter.enclosingElement2;
+ var enclosingElement = typeParameter.enclosingElement3;
var decoratedType =
DecoratedTypeParameterBounds.current!.get(typeParameter);
if (enclosingElement == null) {
@@ -431,7 +431,7 @@
bool _isLoadLibraryElement(Element element) =>
element.isSynthetic &&
element is FunctionElement &&
- element.enclosingElement2 is LibraryElement &&
+ element.enclosingElement3 is LibraryElement &&
element.name == 'loadLibrary';
/// Inverts the logic of [uniqueIdentifierForSpan], producing an (offset, end)
diff --git a/pkg/nnbd_migration/test/edge_builder_test.dart b/pkg/nnbd_migration/test/edge_builder_test.dart
index e1df28b..1f097a6 100644
--- a/pkg/nnbd_migration/test/edge_builder_test.dart
+++ b/pkg/nnbd_migration/test/edge_builder_test.dart
@@ -8296,7 +8296,7 @@
@override
DecoratedType getDecoratedSupertype(
- ClassElement class_, ClassElement superclass) {
+ ClassElement class_, InterfaceElement superclass) {
throw UnimplementedError('TODO(paulberry)');
}
}
diff --git a/pkg/nnbd_migration/test/node_builder_test.dart b/pkg/nnbd_migration/test/node_builder_test.dart
index 07fe1b9..737bb72 100644
--- a/pkg/nnbd_migration/test/node_builder_test.dart
+++ b/pkg/nnbd_migration/test/node_builder_test.dart
@@ -1033,7 +1033,7 @@
}
''');
var functionExpressionElement =
- findNode.simpleParameter('int i').declaredElement!.enclosingElement2!;
+ findNode.simpleParameter('int i').declaredElement!.enclosingElement3!;
var decoratedType =
variables!.decoratedElementType(functionExpressionElement);
expect(decoratedType.positionalParameters![0],
@@ -1050,7 +1050,7 @@
}
''');
var functionExpressionElement =
- findNode.simpleParameter('int i').declaredElement!.enclosingElement2!;
+ findNode.simpleParameter('int i').declaredElement!.enclosingElement3!;
var decoratedType =
variables!.decoratedElementType(functionExpressionElement);
expect(
diff --git a/pkg/nnbd_migration/tool/codegen/extract_resource.dart b/pkg/nnbd_migration/tool/codegen/extract_resource.dart
index 60b1719..bfc2490 100644
--- a/pkg/nnbd_migration/tool/codegen/extract_resource.dart
+++ b/pkg/nnbd_migration/tool/codegen/extract_resource.dart
@@ -38,7 +38,7 @@
if (declaration is TopLevelVariableDeclaration) {
for (var variable in declaration.variables.variables) {
if (variable.initializer == null) continue;
- var match = variableNameRegExp.matchAsPrefix(variable.name.name);
+ var match = variableNameRegExp.matchAsPrefix(variable.name2.lexeme);
if (match == null) continue;
var shortName = match.group(1);
if (list) {
diff --git a/pkg/scrape/example/superclass_parameters.dart b/pkg/scrape/example/superclass_parameters.dart
index de5923e..b242525 100644
--- a/pkg/scrape/example/superclass_parameters.dart
+++ b/pkg/scrape/example/superclass_parameters.dart
@@ -2,6 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
import 'package:scrape/scrape.dart';
enum ArgumentMatch {
@@ -76,12 +77,12 @@
// See if any of them could use the feature.
var positionalParamNames = node.parameters.parameters
.where((param) => param.isPositional)
- .map((param) => param.identifier!.name)
+ .map((param) => param.name!.lexeme)
.toList();
var namedParamNames = node.parameters.parameters
.where((param) => param.isNamed)
- .map((param) => param.identifier!.name)
+ .map((param) => param.name!.lexeme)
.toSet();
var matchedNamedArguments = 0;
@@ -290,8 +291,8 @@
record('Insert super args', insert ? 'Yes' : 'No');
record('Do not merge super args', noMerge ? 'Yes' : 'No');
- var subName = _constructorName(node.name);
- var superName = _constructorName(initializer.constructorName);
+ var subName = _constructorName(node.name2);
+ var superName = _constructorName(initializer.constructorName?.token);
record('No explicit super(), call same name',
(allParams && superName == subName) ? 'Yes' : 'No');
@@ -300,9 +301,9 @@
(allParams && superName == '(unnamed)') ? 'Yes' : 'No');
}
- String _constructorName(SimpleIdentifier? name) {
+ String _constructorName(Token? name) {
if (name == null) return '(unnamed)';
- return name.name;
+ return name.lexeme;
}
SuperConstructorInvocation? _findSuper(ConstructorDeclaration node) {
diff --git a/pkg/scrape/lib/src/scrape_visitor.dart b/pkg/scrape/lib/src/scrape_visitor.dart
index 7869df9..789ed3a 100644
--- a/pkg/scrape/lib/src/scrape_visitor.dart
+++ b/pkg/scrape/lib/src/scrape_visitor.dart
@@ -46,8 +46,8 @@
/// "BuildContext context".
bool get isInFlutterBuildMethod => _inFlutterBuildMethods > 0;
- bool _isBuildMethod(TypeAnnotation? returnType, SimpleIdentifier name,
- FormalParameterList? parameters) {
+ bool _isBuildMethod(
+ TypeAnnotation? returnType, FormalParameterList? parameters) {
var parameterString = parameters.toString();
if (returnType.toString() == 'void') return false;
@@ -109,7 +109,7 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- var isBuild = _isBuildMethod(node.returnType, node.name, node.parameters);
+ var isBuild = _isBuildMethod(node.returnType, node.parameters);
if (isBuild) _inFlutterBuildMethods++;
try {
@@ -123,8 +123,8 @@
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
- var isBuild = _isBuildMethod(
- node.returnType, node.name, node.functionExpression.parameters);
+ var isBuild =
+ _isBuildMethod(node.returnType, node.functionExpression.parameters);
if (isBuild) _inFlutterBuildMethods++;
try {
diff --git a/tools/VERSION b/tools/VERSION
index 5817f58..a27dd14 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 19
PATCH 0
-PRERELEASE 57
+PRERELEASE 58
PRERELEASE_PATCH 0
\ No newline at end of file