From 01173e2aa2bb845d9a62232a230cf94590a0bcd8 Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Tue, 2 Aug 2022 16:25:34 +0000 Subject: [PATCH] Deprecate 'name' in AST, use 'name2' token instead. Change-Id: I867f009dca12208f835199297d2ea85c203c8556 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/252566 Reviewed-by: Brian Wilkerson Reviewed-by: Jake Macdonald Commit-Queue: Konstantin Shcheglov --- .../src/computer/computer_call_hierarchy.dart | 2 +- .../lib/src/computer/computer_highlights.dart | 26 +- .../lib/src/computer/computer_outline.dart | 83 +++-- .../lib/src/computer/computer_overrides.dart | 12 +- .../domains/analysis/occurrences_dart.dart | 7 + .../completion/dart/completion_manager.dart | 21 +- .../completion/dart/feature_computer.dart | 4 +- .../dart/field_formal_contributor.dart | 4 +- .../completion/dart/keyword_contributor.dart | 18 +- .../dart/local_reference_contributor.dart | 12 +- .../completion/dart/override_contributor.dart | 31 +- .../completion/dart/suggestion_builder.dart | 9 +- .../dart/type_member_contributor.dart | 27 +- .../dart/variable_name_contributor.dart | 13 +- .../correction/dart/abstract_producer.dart | 23 ++ .../correction/dart/add_call_super.dart | 2 +- .../add_diagnostic_property_reference.dart | 6 +- .../correction/dart/add_enum_constant.dart | 2 +- .../correction/dart/add_return_type.dart | 13 +- .../correction/dart/add_type_annotation.dart | 4 +- .../services/correction/dart/change_to.dart | 30 +- .../dart/convert_class_to_enum.dart | 13 +- .../dart/convert_class_to_mixin.dart | 4 +- .../dart/convert_for_each_to_for_loop.dart | 2 +- .../dart/convert_into_final_field.dart | 2 +- .../correction/dart/convert_into_getter.dart | 2 +- ...vert_map_from_iterable_to_for_literal.dart | 9 +- .../dart/convert_to_field_parameter.dart | 11 +- .../convert_to_generic_function_syntax.dart | 6 +- .../dart/convert_to_initializing_formal.dart | 8 +- .../dart/convert_to_super_parameters.dart | 11 +- .../correction/dart/create_constructor.dart | 28 +- .../create_constructor_for_final_fields.dart | 6 +- .../correction/dart/create_field.dart | 3 +- .../correction/dart/create_method.dart | 2 +- .../services/correction/dart/data_driven.dart | 2 +- .../correction/dart/encapsulate_field.dart | 12 +- .../dart/extend_class_for_mixin.dart | 2 +- .../flutter_convert_to_stateful_widget.dart | 8 +- .../flutter_convert_to_stateless_widget.dart | 10 +- .../correction/dart/inline_typedef.dart | 8 +- .../dart/join_variable_declaration.dart | 2 +- .../correction/dart/make_class_abstract.dart | 2 +- .../correction/dart/make_field_public.dart | 10 +- .../services/correction/dart/make_final.dart | 2 +- .../dart/make_variable_nullable.dart | 16 +- .../correction/dart/remove_initializer.dart | 4 +- ...move_parameters_in_getter_declaration.dart | 2 +- .../dart/remove_type_annotation.dart | 6 +- .../dart/remove_unused_local_variable.dart | 2 +- .../dart/rename_method_parameter.dart | 6 +- .../replace_conditional_with_if_else.dart | 6 +- .../dart/replace_with_identifier.dart | 4 +- .../correction/dart/replace_with_var.dart | 2 +- .../dart/sort_unnamed_constructor_first.dart | 6 +- .../dart/split_variable_declaration.dart | 6 +- .../fix/data_driven/add_type_parameter.dart | 2 +- .../fix/data_driven/element_matcher.dart | 17 +- .../fix/data_driven/rename_parameter.dart | 4 +- .../services/correction/name_suggestion.dart | 2 +- .../src/services/correction/sort_members.dart | 32 +- .../lib/src/services/correction/util.dart | 2 +- .../src/services/kythe/kythe_visitors.dart | 27 +- .../services/refactoring/extract_local.dart | 1 + .../services/refactoring/extract_widget.dart | 4 +- .../lib/src/status/ast_writer.dart | 20 +- .../notification_highlights2_test.dart | 1 - .../integration/linter/lint_names_test.dart | 6 +- .../services/refactoring/abstract_rename.dart | 4 +- .../fix/data_driven/element_matcher_test.dart | 2 +- .../test/src/utilities/flutter_test.dart | 2 +- .../tool/bulk_fix/parse_utils.dart | 4 +- .../tool/code_completion/code_metrics.dart | 34 +- .../implicit_type_declarations.dart | 2 +- .../code_completion/relevance_metrics.dart | 4 +- pkg/analyzer/CHANGELOG.md | 1 + pkg/analyzer/doc/tutorial/ast.md | 12 +- pkg/analyzer/lib/dart/ast/ast.dart | 92 +++-- pkg/analyzer/lib/error/listener.dart | 4 +- .../lib/src/dart/analysis/defined_names.dart | 19 +- .../lib/src/dart/analysis/file_state.dart | 18 +- pkg/analyzer/lib/src/dart/analysis/index.dart | 36 +- .../src/dart/analysis/referenced_names.dart | 19 +- .../lib/src/dart/analysis/results.dart | 35 +- .../dart/analysis/unlinked_api_signature.dart | 6 +- pkg/analyzer/lib/src/dart/ast/ast.dart | 314 ++++++++++------ .../lib/src/dart/ast/element_locator.dart | 26 +- .../lib/src/dart/ast/invokes_super_self.dart | 2 +- .../lib/src/dart/ast/to_source_visitor.dart | 38 +- pkg/analyzer/lib/src/dart/ast/utilities.dart | 128 ++----- .../src/dart/constant/constant_verifier.dart | 5 +- pkg/analyzer/lib/src/dart/micro/utils.dart | 8 +- .../dart/resolver/invocation_inferrer.dart | 2 +- .../prefixed_identifier_resolver.dart | 2 +- .../src/dart/resolver/resolution_visitor.dart | 103 +++--- .../resolver/simple_identifier_resolver.dart | 2 +- .../variable_declaration_resolver.dart | 11 +- .../src/diagnostic/diagnostic_factory.dart | 3 +- .../src/error/best_practices_verifier.dart | 88 ++--- .../error/constructor_fields_verifier.dart | 4 +- .../lib/src/error/correct_override.dart | 11 +- .../error/duplicate_definition_verifier.dart | 124 ++++--- .../lib/src/error/inheritance_override.dart | 133 +++---- .../src/error/must_call_super_verifier.dart | 4 +- .../lib/src/error/override_verifier.dart | 16 +- .../error/required_parameters_verifier.dart | 20 +- .../super_formal_parameters_verifier.dart | 4 +- .../src/error/type_arguments_verifier.dart | 6 +- .../error/unused_local_elements_verifier.dart | 82 +++++ pkg/analyzer/lib/src/fasta/ast_builder.dart | 18 +- .../generated/error_detection_helpers.dart | 99 ++--- .../lib/src/generated/error_verifier.dart | 339 ++++++++++-------- .../lib/src/generated/ffi_verifier.dart | 47 +-- pkg/analyzer/lib/src/generated/resolver.dart | 43 +-- .../lib/src/hint/sdk_constraint_verifier.dart | 6 +- .../src/services/available_declarations.dart | 61 ++-- .../lib/src/summary2/ast_binary_reader.dart | 2 +- .../lib/src/summary2/ast_binary_writer.dart | 14 +- .../lib/src/summary2/ast_text_printer.dart | 36 +- .../src/summary2/default_types_builder.dart | 2 +- .../lib/src/summary2/element_builder.dart | 135 +++---- .../src/summary2/function_type_builder.dart | 2 +- .../lib/src/summary2/informative_data.dart | 36 +- .../lib/src/summary2/macro_declarations.dart | 94 +++-- .../lib/src/summary2/named_type_builder.dart | 2 +- .../lib/src/summary2/top_level_inference.dart | 2 +- .../lib/src/summary2/types_builder.dart | 2 +- pkg/analyzer/lib/src/task/strong/checker.dart | 41 ++- .../lib/src/test_utilities/find_node.dart | 2 +- pkg/analyzer/test/dart/ast/ast_test.dart | 11 +- pkg/analyzer/test/error/error_test.dart | 6 +- .../generated/class_member_parser_test.dart | 151 ++++---- .../collection_literal_parser_test.dart | 6 +- .../test/generated/error_parser_test.dart | 10 +- .../extension_methods_parser_test.dart | 30 +- .../formal_parameter_parser_test.dart | 142 ++++---- .../new_as_identifier_parser_test.dart | 6 +- .../test/generated/nnbd_parser_test.dart | 6 +- .../test/generated/recovery_parser_test.dart | 42 +-- .../test/generated/resolver_test_case.dart | 5 + .../test/generated/simple_parser_test.dart | 42 +-- .../test/generated/statement_parser_test.dart | 26 +- .../test/generated/strong_mode_test.dart | 181 ++++++++-- .../test/generated/top_level_parser_test.dart | 177 ++++----- .../test/generated/utilities_test.dart | 22 -- .../test/generated/variance_parser_test.dart | 22 +- .../dart/analysis/driver_resolution_test.dart | 113 ++++-- .../test/src/dart/analysis/driver_test.dart | 8 +- .../results/get_element_declaration_test.dart | 68 ++-- .../dart/analysis/session_helper_test.dart | 2 +- .../test/src/dart/analysis/session_test.dart | 11 +- .../src/dart/ast/element_locator_test.dart | 17 +- .../test/src/dart/ast/utilities_test.dart | 2 + .../src/dart/constant/utilities_test.dart | 9 +- .../test/src/dart/resolution/enum_test.dart | 40 +-- .../resolution/function_reference_test.dart | 15 +- .../dart/resolution/library_import_test.dart | 15 +- .../test/src/dart/resolution/mixin_test.dart | 10 +- .../diagnostics/extraneous_modifier_test.dart | 9 +- .../function_typed_parameter_var_test.dart | 6 +- .../mixin_declares_constructor_test.dart | 5 - .../test/src/fasta/ast_builder_test.dart | 54 +-- .../test/src/fasta/message_coverage_test.dart | 2 +- .../src/fasta/recovery/missing_code_test.dart | 2 + .../test/src/summary/elements_test.dart | 35 +- .../test/src/task/strong/checker_test.dart | 2 +- pkg/analyzer/test/util/ast_check.dart | 23 -- pkg/analyzer/test/util/id_testing_helper.dart | 14 +- pkg/analyzer/test/utils.dart | 17 +- .../tool/messages/extract_errors_to_yaml.dart | 4 +- .../change_builder/change_builder_dart.dart | 6 +- .../completion/completion_target.dart | 15 +- .../lib/src/utilities/completion/optype.dart | 25 +- .../visitors/local_declaration_visitor.dart | 25 +- .../change_builder/change_builder_dart.dart | 2 +- .../completion/type_member_contributor.dart | 31 +- .../utilities/navigation/navigation_dart.dart | 21 +- .../lib/utilities/range_factory.dart | 5 + .../local_declaration_visitor_test.dart | 8 +- .../test/utilities/range_factory_test.dart | 29 +- pkg/nnbd_migration/lib/src/edge_builder.dart | 8 +- .../lib/src/fix_aggregator.dart | 2 +- .../lib/src/front_end/info_builder.dart | 16 +- pkg/nnbd_migration/lib/src/node_builder.dart | 6 +- .../lib/src/utilities/hint_utils.dart | 4 +- .../tool/codegen/extract_resource.dart | 2 +- pkg/scrape/example/superclass_parameters.dart | 13 +- pkg/scrape/lib/src/scrape_visitor.dart | 10 +- 188 files changed, 2546 insertions(+), 2155 deletions(-) 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 ca17b51fab6..ce1bf7b9791 100644 --- a/pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart +++ b/pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart @@ -330,7 +330,7 @@ class DartCallHierarchyComputer { } } } 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_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart index b74240d024f..ef0f5e5c527 100644 --- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart +++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart @@ -682,6 +682,14 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor { 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 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor { @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 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor { 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 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor { @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 @@ class _DartUnitHighlightsComputerVisitor extends RecursiveAstVisitor { 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_outline.dart b/pkg/analysis_server/lib/src/computer/computer_outline.dart index b0140fd39a8..4b942d2d110 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/collections.dart'; 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 @@ class DartUnitOutlineComputer { endLine: endLine, endColumn: endColumn); } + Location _getLocationToken(Token token) { + return _getLocationOffsetLength(token.offset, token.length); + } + Outline _newClassOutline(ClassDeclaration node, List 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 @@ class DartUnitOutlineComputer { 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 @@ class DartUnitOutlineComputer { 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 @@ class DartUnitOutlineComputer { 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 @@ class DartUnitOutlineComputer { } 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 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 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 @@ class DartUnitOutlineComputer { isPrivate: Identifier.isPrivateName(name), isDeprecated: _isDeprecated(function), isStatic: isStatic), - location: _getLocationNode(nameNode), + location: _getLocationToken(nameToken), parameters: parametersStr, returnType: returnTypeStr, typeParameters: @@ -222,8 +229,8 @@ class DartUnitOutlineComputer { 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 @@ class DartUnitOutlineComputer { 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 @@ class DartUnitOutlineComputer { } 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 @@ class DartUnitOutlineComputer { isDeprecated: _isDeprecated(node), ), aliasedType: _safeToSource(aliasedType), - location: _getLocationNode(nameNode), + location: _getLocationToken(nameToken), parameters: aliasedFunctionType != null ? _safeToSource(aliasedFunctionType.parameters) : null, @@ -273,8 +280,8 @@ class DartUnitOutlineComputer { 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 @@ class DartUnitOutlineComputer { 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 @@ class DartUnitOutlineComputer { Outline _newMixinOutline(MixinDeclaration node, List 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 @@ class DartUnitOutlineComputer { 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 @@ class DartUnitOutlineComputer { isStatic: isStatic, isConst: variable.isConst, isFinal: variable.isFinal), - location: _getLocationNode(nameNode), + location: _getLocationToken(nameToken), returnType: typeName); return _nodeOutline(variable, element); } diff --git a/pkg/analysis_server/lib/src/computer/computer_overrides.dart b/pkg/analysis_server/lib/src/computer/computer_overrides.dart index d55a4c6b022..23522ad2ad5 100644 --- a/pkg/analysis_server/lib/src/computer/computer_overrides.dart +++ b/pkg/analysis_server/lib/src/computer/computer_overrides.dart @@ -6,6 +6,7 @@ import 'package:analysis_server/src/collections.dart'; import 'package:analysis_server/src/protocol_server.dart' as proto; import 'package:analysis_server/src/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. @@ -35,9 +36,8 @@ class DartUnitOverridesComputer { 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 @@ class DartUnitOverridesComputer { 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 @@ class DartUnitOverridesComputer { if (classMember.isStatic) { continue; } - _addOverride(classMember.name); + _addOverride(classMember.name2, classMember.declaredElement); } if (classMember is FieldDeclaration) { if (classMember.isStatic) { @@ -74,7 +74,7 @@ class DartUnitOverridesComputer { } List fields = classMember.fields.variables; for (var field in fields) { - _addOverride(field.name); + _addOverride(field.name2, field.declaredElement); } } } 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 d11c73865ae..47b7bbff81b 100644 --- a/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart +++ b/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart @@ -26,6 +26,13 @@ void addDartOccurrences(OccurrencesCollector collector, CompilationUnit unit) { class _DartUnitOccurrencesComputerVisitor extends RecursiveAstVisitor { final Map> elementsOffsets = >{}; + @override + void visitEnumConstantDeclaration(EnumConstantDeclaration node) { + _addOccurrence(node.declaredElement!, node.name2.offset); + + super.visitEnumConstantDeclaration(node); + } + @override void visitSimpleIdentifier(SimpleIdentifier node) { var element = node.writeOrReadElement; 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 e8241d422b5..363121dd1c6 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 @@ class DartCompletionRequest { } } + /// TODO(scheglov) Can we make it better? + String fromToken(Token token) { + final lexeme = token.lexeme; + if (offset >= token.offset && offset < token.end) { + return lexeme.substring(0, offset - token.offset); + } else if (offset == token.end) { + return lexeme; + } + return ''; + } + while (entity is AstNode) { 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 70ccf2fc840..df5b7456310 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 @@ parent3: ${node.parent?.parent?.parent} 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 @@ parent3: ${node.parent?.parent?.parent} 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 d7321865abe..2157dcccb53 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 @@ class FieldFormalContributor extends DartCompletionContributor { 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 8e5c326cc94..060361b8f7d 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 @@ class _KeywordVisitor extends GeneralizingAstVisitor { 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 @@ class _KeywordVisitor extends GeneralizingAstVisitor { return; } - if (entity == node.name) { + if (entity == node.name2) { return; } @@ -298,7 +298,7 @@ class _KeywordVisitor extends GeneralizingAstVisitor { @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 @@ class _KeywordVisitor extends GeneralizingAstVisitor { 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 @@ class _KeywordVisitor extends GeneralizingAstVisitor { 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 @@ class _KeywordVisitor extends GeneralizingAstVisitor { _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 @@ class _KeywordVisitor extends GeneralizingAstVisitor { 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_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart index 4d000d99569..dba8158b724 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 @@ class _LocalVisitor extends LocalDeclarationVisitor { if (declaredElement != null && visibilityTracker._isVisible(declaredElement) && opType.includeReturnValueSuggestions && - declaration.name != null) { + declaration.name2 != null) { builder.suggestExtension(declaredElement, kind: _defaultKind); } } @@ -316,10 +316,14 @@ class _LocalVisitor extends LocalDeclarationVisitor { } @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); } } 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 6d70d17b872..ce0c5bf2827 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 @@ class OverrideContributor extends DartCompletionContributor { @override Future computeSuggestions() async { - var targetId = _getTargetId(request.target); - if (targetId == null) { + final target = _getTargetId(request.target); + if (target == null) { return; } - var classDecl = targetId.thisOrAncestorOfType(); + var classDecl = + target.enclosingNode.thisOrAncestorOfType(); if (classDecl == null) { return; } @@ -41,14 +43,14 @@ class OverrideContributor extends DartCompletionContributor { // 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 @@ class OverrideContributor extends DartCompletionContributor { 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 @@ class OverrideContributor extends DartCompletionContributor { // 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 @@ class OverrideContributor extends DartCompletionContributor { 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 e35e2914f29..a60f95aee8d 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/extensions/element.dart'; 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 @@ class SuggestionBuilder { var containingMethod = request.target.containingNode .thisOrAncestorOfType(); if (containingMethod != null) { - _cachedContainingMemberName = containingMethod.name.name; + _cachedContainingMemberName = containingMethod.name2.lexeme; } } } @@ -831,12 +832,12 @@ class SuggestionBuilder { /// Add a suggestion to replace the [targetId] with an override of the given /// [element]. If [invokeSuper] is `true`, then the override will contain an /// invocation of an overridden member. - Future suggestOverride(SimpleIdentifier targetId, - ExecutableElement element, bool invokeSuper) async { + Future 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, 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 1caf787d4ad..be909a38208 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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @override void declaredClass(ClassDeclaration declaration) { - if (declaration.name.name == targetName) { + if (declaration.name2.lexeme == targetName) { // no type finished(); } @@ -118,7 +118,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @override void declaredClassTypeAlias(ClassTypeAlias declaration) { - if (declaration.name.name == targetName) { + if (declaration.name2.lexeme == targetName) { // no type finished(); } @@ -126,7 +126,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { } @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 52f3e436096..bd09b5eb246 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 @@ class VariableNameContributor extends DartCompletionContributor { 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 @@ class VariableNameContributor extends DartCompletionContributor { var varDeclarations = varDeclarationList.variables; if (varDeclarations.length == 1) { var declaration = varDeclarations.first; - strName = _getStringName(declaration.name); + strName = declaration.name2.lexeme; } } } @@ -100,13 +104,12 @@ class VariableNameContributor extends DartCompletionContributor { 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 47a4e0ccb76..a890ab11df0 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 @@ class CorrectionProducerContext { final AstNode node; + final Token token; + CorrectionProducerContext._({ required this.resolvedResult, required this.workspace, @@ -245,6 +247,7 @@ class CorrectionProducerContext { this.dartFixContext, this.diagnostic, required this.node, + required this.token, this.overrideSet, this.selectionOffset = -1, this.selectionLength = 0, @@ -271,10 +274,13 @@ class CorrectionProducerContext { 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 @@ class CorrectionProducerContext { 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 @@ abstract class _AbstractCorrectionProducer { 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 8b6fb5086c7..df469d06b42 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 @@ class AddCallSuper extends CorrectionProducer { 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 a6e05f3d0bf..f33b3e75baf 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 @@ class AddDiagnosticPropertyReference extends CorrectionProducer { final debugFillProperties = classDeclaration.members .whereType() - .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 @@ class AddDiagnosticPropertyReference extends CorrectionProducer { 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 f2ed14ce320..39919e2bbee 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 @@ class AddEnumConstant extends CorrectionProducer { 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_return_type.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart index a37027cd19f..4475b828d71 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/assist.dart'; 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 @@ class AddReturnType extends CorrectionProducer { @override Future 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 a075f8ad84c..63ff7ce9972 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 @@ class AddTypeAnnotation extends CorrectionProducer { return; } await _applyChange(builder, declaredIdentifier.keyword, - declaredIdentifier.identifier.offset, type); + declaredIdentifier.name.offset, type); } Future _forSimpleFormalParameter(ChangeBuilder builder, @@ -150,7 +150,7 @@ class AddTypeAnnotation extends CorrectionProducer { 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 ff8ea9dcbdb..b7046494fb7 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/levenshtein.dart'; 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 @@ class ChangeTo extends CorrectionProducer { return element.parameters.where((superParam) => superParam.isNamed && !formalParameters - .any((param) => superParam.name == param.identifier?.name)); + .any((param) => superParam.name == param.name?.lexeme)); } Future _proposeAnnotation(ChangeBuilder builder) async { @@ -130,17 +132,14 @@ class ChangeTo extends CorrectionProducer { } } - Future _proposeClassOrMixinMember( - ChangeBuilder builder, - SimpleIdentifier node, - Expression? target, - _ElementPredicate predicate) async { + Future _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(); + var clazz = this.node.thisOrAncestorOfType(); if (clazz != null) { var classElement = clazz.declaredElement!; _updateFinderWithClassMembers(finder, classElement); @@ -177,7 +176,7 @@ class ChangeTo extends CorrectionProducer { var formalParameterList = node.thisOrAncestorOfType(); 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 @@ class ChangeTo extends CorrectionProducer { } 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 @@ class ChangeTo extends CorrectionProducer { // 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 @@ class ChangeTo extends CorrectionProducer { 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 @@ class ChangeTo extends CorrectionProducer { var formalParameters = constructorDeclaration.parameters.parameters .whereType(); - 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 @@ class ChangeTo extends CorrectionProducer { } Future _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/convert_class_to_enum.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart index e7749461be6..5f009443ab7 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 @@ class ConvertClassToEnum extends CorrectionProducer { // 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) { @@ -309,7 +305,7 @@ class _EnumDescription { return null; } var constructor = constructors[0]; - var name = constructor.name?.name; + var name = constructor.name2?.lexeme; if (name != null && name != 'new') { return null; } @@ -634,7 +630,8 @@ class _EnumDescription { 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 @@ class _Field { 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 2ba17f82754..76d2eb23c53 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 @@ class ConvertClassToMixin extends CorrectionProducer { if (classDeclaration == null) { return; } - if (selectionOffset > classDeclaration.name.end || + if (selectionOffset > classDeclaration.name2.end || selectionEnd < classDeclaration.classKeyword.offset) { return; } @@ -61,7 +61,7 @@ class ConvertClassToMixin extends CorrectionProducer { 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 '); 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 7ee4818e309..610e19b67a8 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 @@ class ConvertForEachToForLoop extends CorrectionProducer { 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 2bafd703d7f..af5abaffcc9 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 @@ -76,7 +76,7 @@ class ConvertIntoFinalField extends CorrectionProducer { 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 6677e5f2d53..9fa75fcdcbf 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 @@ class ConvertIntoGetter extends CorrectionProducer { 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_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 85057d81e1c..6819fd5bcb9 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/assist.dart'; 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'; @@ -67,9 +68,9 @@ class ConvertMapFromIterableToForLiteral extends CorrectionProducer { // 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 @@ class ConvertMapFromIterableToForLiteral extends CorrectionProducer { 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 ConvertMapFromIterableToForLiteral extends CorrectionProducer { 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 2b3e173c613..3421dbdb52a 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 @@ class ConvertToFieldParameter extends CorrectionProducer { } // 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 @@ class ConvertToFieldParameter extends CorrectionProducer { 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 @@ class ConvertToFieldParameter extends CorrectionProducer { 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 ConvertToFieldParameter extends CorrectionProducer { 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 1cc03ee55f1..4727e20e5ca 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 @@ class ConvertToGenericFunctionSyntax extends CorrectionProducer { } 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 @@ class ConvertToGenericFunctionSyntax extends CorrectionProducer { 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 17327b71c40..f95535b5d78 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 @@ class ConvertToInitializingFormal extends CorrectionProducer { if (parameter == null) { return; } - var identifier = parameter.identifier; + var identifier = parameter.name; if (identifier == null) { return; } @@ -51,7 +51,7 @@ class ConvertToInitializingFormal extends CorrectionProducer { 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 @@ class ConvertToInitializingFormal extends CorrectionProducer { if (parameter == null) { return; } - var identifier = parameter.identifier; + var identifier = parameter.name; if (identifier == null) { return; } @@ -85,7 +85,7 @@ class ConvertToInitializingFormal extends CorrectionProducer { 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 03a314a9525..d75f4eeeeaa 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 @@ class ConvertToSuperParameters extends CorrectionProducer { } 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 @@ class ConvertToSuperParameters extends CorrectionProducer { 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 @@ class ConvertToSuperParameters extends CorrectionProducer { 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 @@ class _ParameterData { 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 30627768ee3..37ca545393f 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/dart/abstract_producer.d 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 @@ class CreateConstructor extends CorrectionProducer { 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(); if (parent != null) { - await _proposeFromEnumConstantDeclaration(builder, parent.name, parent); + await _proposeFromEnumConstantDeclaration( + builder, parent.name2, parent); } } } - Future _proposeFromConstructorName(ChangeBuilder builder, - SimpleIdentifier name, ConstructorName constructorName) async { + Future _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 @@ class CreateConstructor extends CorrectionProducer { constructorName: name, argumentList: instanceCreation.argumentList); } - Future _proposeFromEnumConstantDeclaration(ChangeBuilder builder, - SimpleIdentifier name, EnumConstantDeclaration parent) async { + Future _proposeFromEnumConstantDeclaration( + ChangeBuilder builder, Token name, EnumConstantDeclaration parent) async { var grandParent = parent.parent; if (grandParent is! EnumDeclaration) { return; @@ -137,7 +139,7 @@ class CreateConstructor extends CorrectionProducer { var arguments = parent.arguments; _constructorName = - '${targetNode.name}${arguments?.constructorSelector ?? ''}'; + '${targetNode.name2.lexeme}${arguments?.constructorSelector ?? ''}'; await _write( builder, @@ -145,7 +147,7 @@ class CreateConstructor extends CorrectionProducer { targetElement, targetLocation, isConst: true, - constructorName: arguments?.constructorSelector?.name, + constructorName: arguments?.constructorSelector?.name.token, argumentList: arguments?.argumentList, ); } @@ -199,10 +201,10 @@ class CreateConstructor extends CorrectionProducer { Future _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 @@ class CreateConstructor extends CorrectionProducer { 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 98d9df530ba..e7503147416 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 @@ class CreateConstructorForFinalFields extends CorrectionProducer { return; } - var className = classDeclaration.name.name; + var className = classDeclaration.name2.lexeme; var superType = classDeclaration.declaredElement?.supertype; if (superType == null) { return; @@ -70,7 +70,7 @@ class CreateConstructorForFinalFields extends CorrectionProducer { 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 @@ class CreateConstructorForFinalFields extends CorrectionProducer { 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 7d54c7928df..4da661d3576 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 @@ class CreateField extends CorrectionProducer { 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 a77eb430c05..80d31df1cca 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 @@ class CreateMethod extends CorrectionProducer { 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 9c8ca8395ce..0512f36af08 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 @@ class DataDriven extends MultiCorrectionProducer { 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 b9c9d5c140a..2c74063ee6a 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 @@ class EncapsulateField extends CorrectionProducer { 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 @@ class EncapsulateField extends CorrectionProducer { 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 ee1735a4b1a..74eaf76018d 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 @@ class ExtendClassForMixin extends CorrectionProducer { _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 15517dc0e6d..4eced40f084 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 @@ class FlutterConvertToStatefulWidget extends CorrectionProducer { 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 @@ class FlutterConvertToStatefulWidget extends CorrectionProducer { 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 @@ class FlutterConvertToStatefulWidget extends CorrectionProducer { builder.write(', '); first = false; } - builder.write(param.name.name); + builder.write(param.name2.lexeme); } builder.write('>'); } @@ -247,7 +247,7 @@ class FlutterConvertToStatefulWidget extends CorrectionProducer { 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; 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 dcbc524a1d9..46abe445a7e 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 @@ class FlutterConvertToStatelessWidget extends CorrectionProducer { 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 @@ class FlutterConvertToStatelessWidget extends CorrectionProducer { 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 @@ class FlutterConvertToStatelessWidget extends CorrectionProducer { 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 @@ class FlutterConvertToStatelessWidget extends CorrectionProducer { } if (expression is MethodInvocation && expression.target is SuperExpression && - methodDeclaration!.name.name == expression.methodName.name) { + methodDeclaration!.name2.lexeme == expression.methodName.name) { return true; } } @@ -388,7 +388,7 @@ class _StateUsageVisitor extends RecursiveAstVisitor { var classDeclaration = methodDeclaration?.thisOrAncestorOfType(); - 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 2c5328d0529..3cd39a5f9b0 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 @@ class InlineTypedef extends CorrectionProducer { List 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 @@ class InlineTypedef extends CorrectionProducer { return; } returnType = functionType.returnType; - _name = parent.name.name; + _name = parent.name2.lexeme; typeParameters = functionType.typeParameters; parameters = functionType.parameters.parameters; } else { @@ -128,10 +128,10 @@ class InlineTypedef extends CorrectionProducer { 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 54a87735a9c..f85fb9578fc 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 @@ class JoinVariableDeclaration extends CorrectionProducer { 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 d667d2fac22..826fb84436c 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 @@ class MakeClassAbstract extends CorrectionProducer { 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_public.dart b/pkg/analysis_server/lib/src/services/correction/dart/make_field_public.dart index f4925103944..c11ace4ba69 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 @@ class MakeFieldPublic extends CorrectionProducer { 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 @@ class MakeFieldPublic extends CorrectionProducer { 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 @@ class MakeFieldPublic extends CorrectionProducer { 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 d95deb7015f..c3dbb10a314 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 @@ class MakeFinal extends CorrectionProducer { 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 e624cabf999..6c2b0d29a08 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 @@ class MakeVariableNullable extends CorrectionProducer { 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 @@ class MakeVariableNullable extends CorrectionProducer { 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 @@ class MakeVariableNullable extends CorrectionProducer { 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 @@ class MakeVariableNullable extends CorrectionProducer { 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 @@ class MakeVariableNullable extends CorrectionProducer { 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 @@ class MakeVariableNullable extends CorrectionProducer { 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 @@ class MakeVariableNullable extends CorrectionProducer { Future _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/remove_initializer.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_initializer.dart index 0a44117a756..d203609bec9 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 @@ class RemoveInitializer extends CorrectionProducer { var parameter = node.thisOrAncestorOfType(); 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 @@ class RemoveInitializer extends CorrectionProducer { 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 69409b5a80c..a239ba679a5 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 @@ class RemoveParametersInGetterDeclaration extends CorrectionProducer { 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 853558be605..fb8a5fa7f8e 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 @@ class RemoveTypeAnnotation extends CorrectionProducer { } // 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 @@ class RemoveTypeAnnotation extends CorrectionProducer { 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 3bec4f24d41..9a5aa0e3d4e 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 @@ class RemoveUnusedLocalVariable extends CorrectionProducer { @override Future 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 8a84fe8b25e..7ba42b80e95 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 @@ class RenameMethodParameter extends CorrectionProducer { Future 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(); @@ -38,12 +38,12 @@ class RenameMethodParameter extends CorrectionProducer { 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 c7528665ee0..fdc716360d3 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 @@ class ReplaceConditionalWithIfElse extends CorrectionProducer { 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 461563bd312..1485806d8fa 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 @@ class ReplaceWithIdentifier extends CorrectionProducer { node.thisOrAncestorOfType(); 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 3c5a55bd9d3..abb1a1044ee 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 @@ class ReplaceWithVar extends CorrectionProducer { } 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/sort_unnamed_constructor_first.dart b/pkg/analysis_server/lib/src/services/correction/dart/sort_unnamed_constructor_first.dart index 46b54ee335c..a55addee13c 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 @@ class SortUnnamedConstructorFirst extends CorrectionProducer { .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 98ddb5bb1d8..0eff5c63fbd 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 @@ class SplitVariableDeclaration extends CorrectionProducer { // 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 @@ class SplitVariableDeclaration extends CorrectionProducer { } 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 1180800ff91..135155ad25b 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 @@ class AddTypeParameter extends Change<_Data> { 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 b606c9fc0c1..457b032f3c9 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 @@ class ElementMatcher { /// 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 matchersForNode(AstNode? node) { + static List matchersForNode(AstNode? node, Token? nameToken) { if (node == null) { return const []; } @@ -106,7 +107,7 @@ class ElementMatcher { return const []; } var builder = _MatcherBuilder(importedUris); - builder.buildMatchersForNode(node); + builder.buildMatchersForNode(node, nameToken); return builder.matchers.toList(); } @@ -143,7 +144,7 @@ class _MatcherBuilder { _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 @@ class _MatcherBuilder { _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); } @@ -257,7 +258,7 @@ class _MatcherBuilder { /// 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 @@ class _MatcherBuilder { } /// 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 @@ class _MatcherBuilder { _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 && 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 24930491af5..3ec97a15f5e 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 @@ class RenameParameter extends Change<_Data> { 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 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 93de6817558..63b84f6e387 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 @@ List getVariableNameSuggestionsForExpression(DartType? expectedType, // If we're in a build() method, use 'build' as the name prefix. var method = assignedExpression?.thisOrAncestorOfType(); 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/sort_members.dart b/pkg/analysis_server/lib/src/services/correction/sort_members.dart index 4c8bed4e3cf..e871b08a990 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 @@ class MemberSorter { 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 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 @@ class MemberSorter { } 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 @@ class MemberSorter { 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 @@ class MemberSorter { } } 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 variables = @@ -214,7 +208,7 @@ class MemberSorter { } 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 8fc4dc70bc7..73ff0c9647e 100644 --- a/pkg/analysis_server/lib/src/services/correction/util.dart +++ b/pkg/analysis_server/lib/src/services/correction/util.dart @@ -476,7 +476,7 @@ bool isLeftHandOfAssignment(SimpleIdentifier node) { 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]. 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 6d6ec557f28..3d371c66a30 100644 --- a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart +++ b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart @@ -288,7 +288,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // anchor- defines/binding addAnchorEdgesContainingEdge( - syntacticEntity: node.name, + syntacticEntity: node.name2, edges: [ schema.DEFINES_BINDING_EDGE, ], @@ -355,7 +355,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // anchor addAnchorEdgesContainingEdge( - syntacticEntity: node.name, + syntacticEntity: node.name2, edges: [ schema.DEFINES_BINDING_EDGE, ], @@ -471,9 +471,9 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // 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 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { @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 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // anchor- defines/binding, defines addAnchorEdgesContainingEdge( - syntacticEntity: node.name, + syntacticEntity: node.name2, edges: [ schema.DEFINES_BINDING_EDGE, schema.DEFINES_EDGE, @@ -539,7 +539,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // anchor- defines/binding addAnchorEdgesContainingEdge( - syntacticEntity: node.name, + syntacticEntity: node.name2, edges: [ schema.DEFINES_BINDING_EDGE, ], @@ -578,7 +578,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { _handleRefEdge( element, const [schema.REF_EDGE], - syntacticEntity: node.identifier, + syntacticEntity: node.name, ); // visit children @@ -599,7 +599,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // anchor- defines/binding addAnchorEdgesContainingEdge( - syntacticEntity: node.name, + syntacticEntity: node.name2, edges: [ schema.DEFINES_BINDING_EDGE, ], @@ -665,7 +665,6 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // visit children _safelyVisit(node.documentationComment); _safelyVisitList(node.metadata); - _safelyVisit(node.identifier); _safelyVisit(node.typeParameters); _safelyVisit(node.parameters); } @@ -752,7 +751,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // anchor- defines/binding addAnchorEdgesContainingEdge( - syntacticEntity: node.name, + syntacticEntity: node.name2, edges: [ schema.DEFINES_BINDING_EDGE, ], @@ -824,7 +823,7 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // 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 @@ class KytheDartVisitor extends GeneralizingAstVisitor with OutputUtils { // variable var declaredElement = node.declaredElement!; - _handleVariableDeclaration(declaredElement, node.name, + _handleVariableDeclaration(declaredElement, node.name2, subKind: isLocal ? schema.LOCAL_SUBKIND : schema.FIELD_SUBKIND, type: declaredElement.type); 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 5f2bacfc967..607535c9e93 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 @@ class _OccurrencesVisitor extends GeneralizingAstVisitor { @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_widget.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart index b8b519c79ea..ec89e5aeb16 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 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl 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)); } } diff --git a/pkg/analysis_server/lib/src/status/ast_writer.dart b/pkg/analysis_server/lib/src/status/ast_writer.dart index af7730cef52..e9173b7ac6f 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 @@ class AstWriter extends UnifyingAstVisitor with TreeWriter { /// 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 @@ class AstWriter extends UnifyingAstVisitor with TreeWriter { } else { buffer.write(', '); } - buffer.write(variable.name.name); + buffer.write(variable.name2.lexeme); } return buffer.toString(); } diff --git a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart index a1aa51706b4..88879750fc0 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 @@ void f() { assertHasRegion(HighlightRegionType.CONSTRUCTOR, 'AAA.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 1b8e5d04d24..2372824ffc3 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 @@ void main() { 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 @@ class _FixCollector extends GeneralizingAstVisitor { @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/services/refactoring/abstract_rename.dart b/pkg/analysis_server/test/services/refactoring/abstract_rename.dart index 26676b3222d..dab7e2cfe9b 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/correction/namespace.dart'; 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 @@ class RenameRefactoringTest extends RefactoringTest { /// 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 c39c4b61aff..f050c77fcd0 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 @@ abstract class AbstractElementMatcherTest extends DataDrivenFixProcessorTest { List? expectedKinds, List? 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 d6165869865..67cc0380007 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 @@ Text createEmptyText() => new Text(''); 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 84cf49bd897..033dc782857 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 @@ class BulkFixDetails { 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()) { - 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 051f91933a0..c30111aa5a3 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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { '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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { '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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { '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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { _visitChildren(node, { 'keyword': node.keyword, 'type': node.type, - 'identifier': node.identifier, + 'name': node.name, }); super.visitDeclaredIdentifier(node); } @@ -482,7 +482,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { _visitChildren(node, { 'documentationComment': node.documentationComment, 'metadata': node.metadata, - 'name': node.name, + 'name': node.name2, }); super.visitEnumConstantDeclaration(node); } @@ -492,7 +492,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { _visitChildren(node, { 'documentationComment': node.documentationComment, 'metadata': node.metadata, - 'name': node.name, + 'name': node.name2, 'constants': node.constants, }); super.visitEnumDeclaration(node); @@ -539,7 +539,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { @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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { '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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { '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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { '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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { _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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { _visitChildren(node, { 'documentationComment': node.documentationComment, 'metadata': node.metadata, - 'name': node.name, + 'name': node.name2, 'typeParameters': node.typeParameters, 'functionType': node.functionType, }); @@ -910,7 +910,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { '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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { _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 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { 'covariantKeyword': node.covariantKeyword, 'keyword': node.keyword, 'type': node.type, - 'identifier': node.identifier, + 'name': node.name, }); super.visitSimpleFormalParameter(node); } @@ -1232,7 +1232,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { @override void visitTypeParameter(TypeParameter node) { _visitChildren(node, { - 'name': node.name, + 'name': node.name2, 'bound': node.bound, }); super.visitTypeParameter(node); @@ -1249,7 +1249,7 @@ class CodeShapeDataCollector extends RecursiveAstVisitor { _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/implicit_type_declarations.dart b/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart index 647850c74c8..256995eef41 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 @@ class ImpliedTypeCollector extends RecursiveAstVisitor { 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 8683e816e83..1237e79f0e9 100644 --- a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart +++ b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart @@ -993,7 +993,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor { if (node.target is SuperExpression) { var enclosingMethod = node.thisOrAncestorOfType(); 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 @@ class RelevanceDataCollector extends RecursiveAstVisitor { if (node.target is SuperExpression) { var enclosingMethod = node.thisOrAncestorOfType(); 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'); diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md index 3a74a43d3c9..39040cbab1e 100644 --- a/pkg/analyzer/CHANGELOG.md +++ b/pkg/analyzer/CHANGELOG.md @@ -14,6 +14,7 @@ * 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. ## 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 5206b392087..145e975eaf6 100644 --- a/pkg/analyzer/doc/tutorial/ast.md +++ b/pkg/analyzer/doc/tutorial/ast.md @@ -90,19 +90,19 @@ it might look something like this: 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 f1e15966bf5..3bfb26c4e56 100644 --- a/pkg/analyzer/lib/dart/ast/ast.dart +++ b/pkg/analyzer/lib/dart/ast/ast.dart @@ -789,7 +789,7 @@ abstract class CascadeExpression /// | '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 @@ abstract class CatchClauseParameter extends AstNode { /// The declaration of a class augmentation. /// /// classAugmentationDeclaration ::= -/// 'augment' 'class' [SimpleIdentifier] [TypeParameterList]? +/// 'augment' 'class' name [TypeParameterList]? /// [ExtendsClause]? [WithClause]? [ImplementsClause]? /// '{' [ClassMember]* '}' /// @@ -869,7 +869,7 @@ abstract class ClassAugmentationDeclaration /// The declaration of a class. /// /// classDeclaration ::= -/// 'abstract'? 'class' [SimpleIdentifier] [TypeParameterList]? +/// 'abstract'? 'class' name [TypeParameterList]? /// [ExtendsClause]? [WithClause]? [ImplementsClause]? /// '{' [ClassMember]* '}' /// @@ -986,7 +986,7 @@ abstract class ClassOrMixinDeclaration implements NamedCompilationUnitMember { /// A class type alias. /// /// classTypeAlias ::= -/// [SimpleIdentifier] [TypeParameterList]? '=' 'abstract'? mixinApplication +/// name [TypeParameterList]? '=' 'abstract'? mixinApplication /// /// mixinApplication ::= /// [TypeName] [WithClause] [ImplementsClause]? ';' @@ -1011,9 +1011,6 @@ abstract class ClassTypeAlias implements TypeAlias { @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 @@ abstract class Configuration implements AstNode { /// | 'external'? 'const' constructorName formalParameterList initializerList? /// /// constructorName ::= -/// [SimpleIdentifier] ('.' [SimpleIdentifier])? +/// [SimpleIdentifier] ('.' name)? /// /// factoryName ::= /// [Identifier] ('.' [SimpleIdentifier])? @@ -1371,8 +1368,13 @@ abstract class ConstructorDeclaration implements ClassMember { /// 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 @@ abstract class DeclaredIdentifier implements Declaration { 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 @@ abstract class DeclaredIdentifier implements Declaration { /// 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 @@ abstract class EnumConstantDeclaration implements Declaration { 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 @@ abstract class EnumDeclaration implements NamedCompilationUnitMember { /// Return the members declared by the enumeration. NodeList get members; - @override - SimpleIdentifier get name; - /// Return the right curly bracket. Token get rightBracket; @@ -1946,8 +1953,13 @@ abstract class ExtensionDeclaration implements CompilationUnitMember { /// Return the name of the extension, or `null` if the extension does not have /// 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 @@ abstract class FieldDeclaration implements ClassMember { /// /// 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 @@ abstract class FieldFormalParameter implements NormalFormalParameter { /// 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 @@ abstract class FormalParameter implements AstNode { /// 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 @@ abstract class FormalParameter implements AstNode { /// Return the annotations associated with this parameter. NodeList 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 @@ abstract class FunctionBody implements AstNode { /// | 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 @@ abstract class FunctionDeclaration implements NamedCompilationUnitMember { /// 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 @@ abstract class FunctionTypeAlias implements TypeAlias { /// 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 @@ abstract class GenericFunctionType implements TypeAnnotation { /// 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 @@ abstract class MethodDeclaration implements ClassMember { 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 @@ abstract class MethodReferenceExpression implements Expression { /// 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 @@ abstract class MixinDeclaration implements ClassOrMixinDeclaration { /// 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 @@ abstract class SuperExpression implements Expression { /// /// 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 @@ abstract class SuperFormalParameter implements NormalFormalParameter { /// 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 @@ abstract class TryStatement implements Statement { /// /// 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 @@ abstract class TypeLiteral implements Expression, CommentReferableExpression { /// 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 @@ abstract class TypeParameter implements Declaration { 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 @@ abstract class UriBasedDirective implements Directive { /// [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 @@ abstract class VariableDeclaration implements Declaration { 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/error/listener.dart b/pkg/analyzer/lib/error/listener.dart index acc183817fb..5cb89c27430 100644 --- a/pkg/analyzer/lib/error/listener.dart +++ b/pkg/analyzer/lib/error/listener.dart @@ -86,10 +86,10 @@ class ErrorReporter { // 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 d4d2ed2760e..a9295f5867f 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 names, SimpleIdentifier? node) { - var name = node?.name; - if (name != null && name.isNotEmpty) { - names.add(name); + void appendName(Set 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 @@ DefinedNames computeDefinedNames(CompilationUnit unit) { } } 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 08bc00ece7d..9d94dc42e1b 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 @@ class FileState { if (declaration.macroKeyword != null) { var constructors = declaration.members .whereType() - .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 @@ class FileState { final topLevelDeclarations = {}; 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 265798fee9b..b33f5ac6234 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'; @@ -464,8 +465,8 @@ class _IndexContributor extends GeneralizingAstVisitor { /// 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); @@ -564,7 +565,7 @@ class _IndexContributor extends GeneralizingAstVisitor { 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 @@ class _IndexContributor extends GeneralizingAstVisitor { 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 @@ class _IndexContributor extends GeneralizingAstVisitor { @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 @@ class _IndexContributor extends GeneralizingAstVisitor { 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 @@ class _IndexContributor extends GeneralizingAstVisitor { } // 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 @@ class _IndexContributor extends GeneralizingAstVisitor { var superParameter = element.superConstructorParameter; if (superParameter != null) { recordRelation(superParameter, IndexRelationKind.IS_REFERENCED_BY, - node.identifier, true); + node.name, true); } } @@ -943,8 +939,8 @@ class _IndexContributor extends GeneralizingAstVisitor { 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 @@ class _IndexContributor extends GeneralizingAstVisitor { 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 @@ class _IndexContributor extends GeneralizingAstVisitor { /// 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 @@ class _IndexContributor extends GeneralizingAstVisitor { /// 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 @@ class _IndexContributor extends GeneralizingAstVisitor { /// 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); diff --git a/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart b/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart index 945a0c8fcee..5f37b84f73a 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 @@ class _LocalNameScope { _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 @@ class _LocalNameScope { 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 @@ class _LocalNameScope { _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 @@ class _LocalNameScope { return scope; } - void add(SimpleIdentifier? identifier) { - if (identifier != null) { - (names ??= {}).add(identifier.name); + void add(Token? token) { + if (token != null) { + (names ??= {}).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 a3d06bb1992..8ce9d3d8b63 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 @@ class _DeclarationByElementLocator extends UnifyingAstVisitor { 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 @@ class _DeclarationByElementLocator extends UnifyingAstVisitor { } } 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 @@ class _DeclarationByElementLocator extends UnifyingAstVisitor { 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/unlinked_api_signature.dart b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart index 20b101bc050..a7c7a0f38e4 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 @@ class _UnitApiSignatureComputer { 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 @@ class _UnitApiSignatureComputer { 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 @@ class _UnitApiSignatureComputer { 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 4e044332ffb..e974f86f0ac 100644 --- a/pkg/analyzer/lib/src/dart/ast/ast.dart +++ b/pkg/analyzer/lib/src/dart/ast/ast.dart @@ -1678,6 +1678,9 @@ class ClassDeclarationImpl extends ClassOrMixinDeclarationImpl /// 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 @@ -1707,9 +1710,6 @@ class ClassDeclarationImpl extends ClassOrMixinDeclarationImpl _becomeParentOf(_withClause); } - @override - ClassElement? get declaredElement => _name.staticElement as ClassElement?; - @override ExtendsClauseImpl? get extendsClause => _extendsClause; @@ -1746,7 +1746,7 @@ class ClassDeclarationImpl extends ClassOrMixinDeclarationImpl ..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 +1782,8 @@ class ClassDeclarationImpl extends ClassOrMixinDeclarationImpl @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); @@ -1886,7 +1887,7 @@ abstract class ClassOrMixinDeclarationImpl ClassMember classMember = _members[i]; if (classMember is MethodDeclaration) { MethodDeclaration method = classMember; - if (name == method.name.name) { + if (name == method.name2.lexeme) { return method; } } @@ -1935,6 +1936,9 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias { /// 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 @@ -1962,9 +1966,6 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias { _becomeParentOf(_implementsClause); } - @override - ClassElement? get declaredElement => _name.staticElement as ClassElement?; - @override Token get firstTokenAfterCommentAndMetadata { return abstractKeyword ?? macroKeyword ?? augmentKeyword ?? typedefKeyword; @@ -2010,7 +2011,7 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias { @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 +2028,8 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias { @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); @@ -2700,7 +2702,7 @@ class ConstructorDeclarationImpl extends ClassMemberImpl /// [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 @@ -2752,13 +2754,20 @@ class ConstructorDeclarationImpl extends ClassMemberImpl @override NodeListImpl 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 +2797,7 @@ class ConstructorDeclarationImpl extends ClassMemberImpl ..addToken('factoryKeyword', factoryKeyword) ..addNode('returnType', returnType) ..addToken('period', period) - ..addNode('name', name) + ..addToken('name', name2) ..addNode('parameters', parameters) ..addToken('separator', separator) ..addNodeList('initializers', initializers) @@ -3144,6 +3153,9 @@ class DeclaredIdentifierImpl extends DeclarationImpl /// 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 @@ -3154,11 +3166,6 @@ class DeclaredIdentifierImpl extends DeclarationImpl _becomeParentOf(_identifier); } - @override - LocalVariableElement? get declaredElement { - return _identifier.staticElement as LocalVariableElement; - } - @override Token get endToken => _identifier.endToken; @@ -3167,8 +3174,12 @@ class DeclaredIdentifierImpl extends DeclarationImpl 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); @@ -3180,6 +3191,9 @@ class DeclaredIdentifierImpl extends DeclarationImpl @override bool get isFinal => keyword?.keyword == Keyword.FINAL; + @override + Token get name => _identifier.token; + @override TypeAnnotationImpl? get type => _type; @@ -3191,7 +3205,7 @@ class DeclaredIdentifierImpl extends DeclarationImpl ChildEntities get _childEntities => super._childEntities ..addToken('keyword', keyword) ..addNode('type', type) - ..addNode('identifier', identifier); + ..addToken('name', name); @override E? accept(AstVisitor visitor) => visitor.visitDeclaredIdentifier(this); @@ -3200,7 +3214,8 @@ class DeclaredIdentifierImpl extends DeclarationImpl 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 +3294,7 @@ class DefaultFormalParameterImpl extends FormalParameterImpl return _parameter.endToken; } + @Deprecated('Use identifier2 instead') @override SimpleIdentifierImpl? get identifier => _parameter.identifier; @@ -3294,6 +3310,9 @@ class DefaultFormalParameterImpl extends FormalParameterImpl @override NodeListImpl get metadata => _parameter.metadata; + @override + Token? get name => _parameter.name; + @override NormalFormalParameterImpl get parameter => _parameter; @@ -3642,6 +3661,9 @@ class EnumConstantDeclarationImpl extends DeclarationImpl /// The name of the constant. SimpleIdentifierImpl _name; + @override + FieldElement? declaredElement; + @override final EnumConstantArgumentsImpl? arguments; @@ -3662,25 +3684,29 @@ class EnumConstantDeclarationImpl extends DeclarationImpl _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 +3716,8 @@ class EnumConstantDeclarationImpl extends DeclarationImpl @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,6 +3763,9 @@ class EnumDeclarationImpl extends NamedCompilationUnitMemberImpl @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 @@ -3764,9 +3794,6 @@ class EnumDeclarationImpl extends NamedCompilationUnitMemberImpl @override NodeListImpl get constants => _constants; - @override - ClassElement? get declaredElement => _name.staticElement as ClassElement?; - @override Token get endToken => rightBracket; @@ -3802,7 +3829,7 @@ class EnumDeclarationImpl extends NamedCompilationUnitMemberImpl // 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 +3845,8 @@ class EnumDeclarationImpl extends NamedCompilationUnitMemberImpl @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); @@ -4306,13 +4334,20 @@ class ExtensionDeclarationImpl extends CompilationUnitMemberImpl @override NodeListImpl 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; @@ -4330,7 +4365,7 @@ class ExtensionDeclarationImpl extends CompilationUnitMemberImpl @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 +4380,7 @@ class ExtensionDeclarationImpl extends CompilationUnitMemberImpl @override void visitChildren(AstVisitor visitor) { super.visitChildren(visitor); + // ignore: deprecated_member_use_from_same_package name?.accept(visitor); _typeParameters?.accept(visitor); _extendedType.accept(visitor); @@ -4617,9 +4653,10 @@ class FieldFormalParameterImpl extends NormalFormalParameterImpl @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!; @@ -4632,6 +4669,9 @@ class FieldFormalParameterImpl extends NormalFormalParameterImpl @override bool get isFinal => keyword?.keyword == Keyword.FINAL; + @override + Token get name => super.name!; + @override FormalParameterListImpl? get parameters => _parameters; @@ -4659,7 +4699,7 @@ class FieldFormalParameterImpl extends NormalFormalParameterImpl ..addNode('type', type) ..addToken('thisKeyword', thisKeyword) ..addToken('period', period) - ..addNode('identifier', identifier) + ..addToken('name', name) ..addNode('parameters', parameters); @override @@ -4670,6 +4710,7 @@ class FieldFormalParameterImpl extends NormalFormalParameterImpl 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 +4914,24 @@ abstract class ForLoopPartsImpl extends AstNodeImpl implements ForLoopParts {} 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 +4958,6 @@ abstract class FormalParameterImpl extends AstNodeImpl /// 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,6 +5366,9 @@ class FunctionDeclarationImpl extends NamedCompilationUnitMemberImpl /// 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 @@ -5351,10 +5389,6 @@ class FunctionDeclarationImpl extends NamedCompilationUnitMemberImpl _becomeParentOf(_functionExpression); } - @override - ExecutableElement? get declaredElement => - _name.staticElement as ExecutableElement?; - @override Token get endToken => _functionExpression.endToken; @@ -5394,7 +5428,7 @@ class FunctionDeclarationImpl extends NamedCompilationUnitMemberImpl ..addToken('externalKeyword', externalKeyword) ..addNode('returnType', returnType) ..addToken('propertyKeyword', propertyKeyword) - ..addNode('name', name) + ..addToken('name', name2) ..addNode('functionExpression', functionExpression); @override @@ -5404,7 +5438,8 @@ class FunctionDeclarationImpl extends NamedCompilationUnitMemberImpl 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,6 +5727,9 @@ class FunctionTypeAliasImpl extends TypeAliasImpl implements FunctionTypeAlias { /// 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 @@ -5712,10 +5750,6 @@ class FunctionTypeAliasImpl extends TypeAliasImpl implements FunctionTypeAlias { _becomeParentOf(_parameters); } - @override - TypeAliasElement? get declaredElement => - _name.staticElement as TypeAliasElement?; - @override FormalParameterListImpl get parameters => _parameters; @@ -5741,7 +5775,7 @@ class FunctionTypeAliasImpl extends TypeAliasImpl implements FunctionTypeAlias { 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 +5787,8 @@ class FunctionTypeAliasImpl extends TypeAliasImpl implements FunctionTypeAlias { 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 +5848,13 @@ class FunctionTypedFormalParameterImpl extends NormalFormalParameterImpl } 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!; @@ -5831,6 +5867,9 @@ class FunctionTypedFormalParameterImpl extends NormalFormalParameterImpl @override bool get isFinal => false; + @override + Token get name => super.name!; + @override FormalParameterListImpl get parameters => _parameters; @@ -5855,7 +5894,7 @@ class FunctionTypedFormalParameterImpl extends NormalFormalParameterImpl @override ChildEntities get _childEntities => super._childEntities ..addNode('returnType', returnType) - ..addNode('identifier', identifier) + ..addToken('name', name) ..addNode('parameters', parameters); @override @@ -5866,6 +5905,7 @@ class FunctionTypedFormalParameterImpl extends NormalFormalParameterImpl 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,6 +6043,9 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias { @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 @@ -6021,9 +6064,6 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias { _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 +6098,7 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias { 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 +6111,7 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias { @override void visitChildren(AstVisitor visitor) { super.visitChildren(visitor); + // ignore: deprecated_member_use_from_same_package name.accept(visitor); _typeParameters?.accept(visitor); _type.accept(visitor); @@ -7749,6 +7790,14 @@ class MethodDeclarationImpl extends ClassMemberImpl /// 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 @@ -7784,15 +7833,6 @@ class MethodDeclarationImpl extends ClassMemberImpl _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,13 +7863,20 @@ class MethodDeclarationImpl extends ClassMemberImpl @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; @@ -7858,7 +7905,7 @@ class MethodDeclarationImpl extends ClassMemberImpl ..addNode('returnType', returnType) ..addToken('propertyKeyword', propertyKeyword) ..addToken('operatorKeyword', operatorKeyword) - ..addNode('name', name) + ..addToken('name', name2) ..addNode('parameters', parameters) ..addNode('body', body); @@ -7869,7 +7916,8 @@ class MethodDeclarationImpl extends ClassMemberImpl 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 +8096,9 @@ class MixinDeclarationImpl extends ClassOrMixinDeclarationImpl /// 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 @@ -8072,9 +8123,6 @@ class MixinDeclarationImpl extends ClassOrMixinDeclarationImpl _becomeParentOf(_onClause); } - @override - ClassElement? get declaredElement => _name.staticElement as ClassElement?; - @override Token get firstTokenAfterCommentAndMetadata { return mixinKeyword; @@ -8099,7 +8147,7 @@ class MixinDeclarationImpl extends ClassOrMixinDeclarationImpl @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 +8161,8 @@ class MixinDeclarationImpl extends ClassOrMixinDeclarationImpl @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 +8176,26 @@ abstract class NamedCompilationUnitMemberImpl extends CompilationUnitMemberImpl /// 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) { _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 @@ -8603,8 +8659,12 @@ abstract class NormalFormalParameterImpl extends FormalParameterImpl _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?); @@ -8627,6 +8687,9 @@ abstract class NormalFormalParameterImpl extends FormalParameterImpl _metadata.addAll(metadata); } + @override + Token? get name => _identifier?.token; + @override List get sortedCommentAndAnnotations { var comment = _comment; @@ -9821,11 +9884,11 @@ class SimpleFormalParameterImpl extends NormalFormalParameterImpl } 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 +9910,7 @@ class SimpleFormalParameterImpl extends NormalFormalParameterImpl ChildEntities get _childEntities => super._childEntities ..addToken('keyword', keyword) ..addNode('type', type) - ..addNode('identifier', identifier); + ..addToken('name', name); @override E? accept(AstVisitor visitor) => @@ -9857,6 +9920,7 @@ class SimpleFormalParameterImpl extends NormalFormalParameterImpl void visitChildren(AstVisitor visitor) { super.visitChildren(visitor); _type?.accept(visitor); + // ignore: deprecated_member_use_from_same_package identifier?.accept(visitor); } } @@ -10023,11 +10087,13 @@ class SimpleIdentifierImpl extends IdentifierImpl implements SimpleIdentifier { } } 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 +10718,10 @@ class SuperFormalParameterImpl extends NormalFormalParameterImpl @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!; @@ -10667,6 +10734,9 @@ class SuperFormalParameterImpl extends NormalFormalParameterImpl @override bool get isFinal => keyword?.keyword == Keyword.FINAL; + @override + Token get name => super.name!; + @override FormalParameterListImpl? get parameters => _parameters; @@ -10694,7 +10764,7 @@ class SuperFormalParameterImpl extends NormalFormalParameterImpl ..addNode('type', type) ..addToken('superKeyword', superKeyword) ..addToken('period', period) - ..addNode('identifier', identifier) + ..addToken('name', name) ..addNode('typeParameters', typeParameters) ..addNode('parameters', parameters); @@ -10706,6 +10776,7 @@ class SuperFormalParameterImpl extends NormalFormalParameterImpl 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); @@ -11402,6 +11473,9 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter { /// 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 @@ -11419,10 +11493,6 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter { _bound = _becomeParentOf(type as TypeAnnotationImpl?); } - @override - TypeParameterElement? get declaredElement => - _name.staticElement as TypeParameterElement?; - @override Token get endToken { if (_bound == null) { @@ -11434,6 +11504,7 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter { @override Token get firstTokenAfterCommentAndMetadata => _name.beginToken; + @Deprecated('Use name2 instead') @override SimpleIdentifierImpl get name => _name; @@ -11441,9 +11512,12 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter { _name = _becomeParentOf(identifier as SimpleIdentifierImpl); } + @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 +11527,8 @@ class TypeParameterImpl extends DeclarationImpl implements TypeParameter { @override void visitChildren(AstVisitor visitor) { super.visitChildren(visitor); - _name.accept(visitor); + // ignore: deprecated_member_use_from_same_package + name.accept(visitor); _bound?.accept(visitor); } } @@ -11606,6 +11681,9 @@ class VariableDeclarationImpl extends DeclarationImpl /// 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 @@ -11629,10 +11707,6 @@ class VariableDeclarationImpl extends DeclarationImpl _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 +11758,23 @@ class VariableDeclarationImpl extends DeclarationImpl 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 +11784,8 @@ class VariableDeclarationImpl extends DeclarationImpl @override void visitChildren(AstVisitor visitor) { super.visitChildren(visitor); - _name.accept(visitor); + // ignore: deprecated_member_use_from_same_package + name.accept(visitor); _initializer?.accept(visitor); } } diff --git a/pkg/analyzer/lib/src/dart/ast/element_locator.dart b/pkg/analyzer/lib/src/dart/ast/element_locator.dart index 4612dc350fa..6e910aa9da6 100644 --- a/pkg/analyzer/lib/src/dart/ast/element_locator.dart +++ b/pkg/analyzer/lib/src/dart/ast/element_locator.dart @@ -68,11 +68,26 @@ class _ElementMapper extends GeneralizingAstVisitor { return node.element2; } + @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; @@ -86,14 +101,16 @@ class _ElementMapper extends GeneralizingAstVisitor { // 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; @@ -175,6 +192,11 @@ class _ElementMapper extends GeneralizingAstVisitor { return null; } + @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 d3633fb5545..c17d6744f56 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 @@ enum _Usage { writing, reading } 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 f3446093f4e..963f028dca0 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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { _visitNodeList(node.metadata, separator: ' ', suffix: ' '); _visitToken(node.keyword, suffix: ' '); _visitNode(node.type, suffix: ' '); - _visitNode(node.identifier); + _visitToken(node.name); } @override @@ -336,7 +336,7 @@ class ToSourceVisitor implements AstVisitor { @override void visitEnumConstantDeclaration(EnumConstantDeclaration node) { _visitNodeList(node.metadata, separator: ' ', suffix: ' '); - _visitNode(node.name); + _visitToken(node.name2); _visitNode(node.arguments); } @@ -344,7 +344,7 @@ class ToSourceVisitor implements AstVisitor { 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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { 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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { 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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { _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 @@ class ToSourceVisitor implements AstVisitor { if (varianceKeyword != null) { sink.write('${varianceKeyword.lexeme} '); } - _visitNode(node.name); + _visitToken(node.name2); _visitNode(node.bound, prefix: ' extends '); } @@ -1107,7 +1107,7 @@ class ToSourceVisitor implements AstVisitor { @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 251454c063b..fe970affdff 100644 --- a/pkg/analyzer/lib/src/dart/ast/utilities.dart +++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart @@ -249,7 +249,7 @@ class AstComparator implements AstVisitor { _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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { _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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { _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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { _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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class AstComparator implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { @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 @@ class NodeReplacer implements AstVisitor { @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 @@ class NodeReplacer implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { @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 @@ class NodeReplacer implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { @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 @@ class NodeReplacer implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { 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 @@ class NodeReplacer implements AstVisitor { @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 @@ class NodeReplacer implements AstVisitor { @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 @@ class ScopedNameFinder extends GeneralizingAstVisitor { @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 @@ class ScopedNameFinder extends GeneralizingAstVisitor { @override void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) { - _addToScope(node.loopVariable.identifier); + _addToScope(node.loopVariable.name); super.visitForEachPartsWithDeclaration(node); } @@ -3260,28 +3214,19 @@ class ScopedNameFinder extends GeneralizingAstVisitor { void _addParameters(NodeList 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 variables) { for (VariableDeclaration variable in variables) { - _addToScope(variable.name); + _addToScope(variable.name2); } } @@ -3297,21 +3242,12 @@ class ScopedNameFinder extends GeneralizingAstVisitor { _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 2095651f5f2..2630f528ab3 100644 --- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart +++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart @@ -576,7 +576,8 @@ class ConstantVerifier extends RecursiveAstVisitor { 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 @@ class ConstantVerifier extends RecursiveAstVisitor { CompileTimeErrorCode .CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST, constKeyword, - [variableDeclaration.name.name]); + [variableDeclaration.name2.lexeme]); } } } diff --git a/pkg/analyzer/lib/src/dart/micro/utils.dart b/pkg/analyzer/lib/src/dart/micro/utils.dart index c5113f7fefb..44b81793441 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 @@ Element? getElementOfNode(AstNode? node) { if (node == null) { return null; } + if (node is DeclaredSimpleIdentifier) { + node = node.parent; + } if (node is SimpleIdentifier && node.parent is LibraryIdentifier) { node = node.parent; } @@ -280,7 +284,7 @@ class ReferencesCollector extends GeneralizingAstVisitor { 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)); } } @@ -329,7 +333,7 @@ class ReferencesCollector extends GeneralizingAstVisitor { 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/invocation_inferrer.dart b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart index 729d28a948b..52a7b379924 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 @@ Set _computeExplicitlyTypedParameterSet( 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/prefixed_identifier_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart index 08996d41cf4..53483f9b46b 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 @@ class PrefixedIdentifierResolver { 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/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart index a5281103df2..1283c93250d 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { } } - if (normalParameter is SimpleFormalParameterImpl) { - normalParameter.declaredElement = element; - } - nameNode?.staticElement = element; + normalParameter.declaredElement = element; + node.declaredElement = element; normalParameter.accept(this); @@ -409,8 +407,8 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { element.isFinal = node.isFinal; _setCodeRange(element, node); } - nameNode.staticElement = element; + node.declaredElement = element; } _setOrCreateMetadataElements(element, node.metadata); @@ -548,7 +546,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { element.isFinal = node.isFinal; _setCodeRange(element, node); } - nameNode.staticElement = element; + node.declaredElement = element; } _setOrCreateMetadataElements(element, node.metadata); @@ -762,7 +760,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { @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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { } node.declaredElement = element; } - nameNode?.staticElement = element; node.declaredElement = element; } @@ -1021,15 +1018,15 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { element.isFinal = node.isFinal; _setCodeRange(element, node); } - nameNode.staticElement = element; + node.declaredElement = element; } _setOrCreateMetadataElements(element, node.metadata); @@ -1112,7 +1109,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 @@ class ResolutionVisitor extends RecursiveAstVisitor { 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 9846ada883b..97dbd16574c 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 @@ class SimpleIdentifierResolver with ScopeHelpers { 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 17d7f04b503..d9be7b73abc 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 @@ class VariableDeclarationResolver { _resolver.errorReporter.reportErrorForNode( HintCode.INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE, node, - [node.name.name], + [node.name2.lexeme], ); } return; @@ -70,8 +70,13 @@ class VariableDeclarationResolver { 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 9726e9ff330..daf8431760d 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,7 +75,7 @@ class DiagnosticFactory { AnalysisError invalidOverride( Source source, ErrorCode? errorCode, - AstNode errorNode, + SyntacticEntity errorNode, ExecutableElement member, ExecutableElement superMember) { errorCode ??= CompileTimeErrorCode.INVALID_OVERRIDE; diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart index a1b430cb7a1..ee02e0386f9 100644 --- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart +++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart @@ -301,9 +301,9 @@ class BestPracticesVerifier extends RecursiveAstVisitor { 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 @@ -494,9 +494,9 @@ class BestPracticesVerifier extends RecursiveAstVisitor { // 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, + _errorReporter.reportErrorForToken( + HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, field.name2, [ + field.name2.lexeme, overriddenElement.enclosingElement2.displayName ]); } @@ -534,7 +534,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor { // 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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { @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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { 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); } @@ -672,7 +672,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor { : 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); @@ -688,10 +689,11 @@ class BestPracticesVerifier extends RecursiveAstVisitor { // 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]); + _errorReporter.reportErrorForToken( + HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER, node.name2, [ + node.name2.lexeme, + overriddenElement.enclosingElement2.displayName + ]); } super.visitMethodDeclaration(node); @@ -1051,8 +1053,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor { definedOrInheritedNonFinalInstanceFields( element, HashSet()); 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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { // 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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { } } - _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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { 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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { /// /// 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) { @@ -1473,8 +1482,8 @@ class BestPracticesVerifier extends RecursiveAstVisitor { 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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { 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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { 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 @@ class BestPracticesVerifier extends RecursiveAstVisitor { } 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 @@ class _InvalidAccessVerifier { if (node.leftOperand is SuperExpression) { var methodDeclaration = node.thisOrAncestorOfType(); - if (methodDeclaration?.name.name == operator.lexeme) { + if (methodDeclaration?.name2.lexeme == operator.lexeme) { return; } } @@ -2032,7 +2040,7 @@ class _InvalidAccessVerifier { parent is PropertyAccess && parent.target is SuperExpression) { var methodDeclaration = grandparent?.thisOrAncestorOfType(); - if (methodDeclaration?.name.name == identifier.name) { + if (methodDeclaration?.name2.lexeme == identifier.name) { validOverride = true; } } diff --git a/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart b/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart index 42d4ddeac44..13fe69c3028 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 @@ class ConstructorFieldsVerifier { _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 609bc464a11..df48ff6f5d9 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 @@ class CorrectOverrideHelper { 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 @@ class CovariantParametersVerifier { void verify({ required ErrorReporter errorReporter, - required AstNode errorNode, + required SyntacticEntity errorNode, }) { var superParameters = _superParameters(); for (var entry in superParameters.entries) { @@ -125,9 +125,10 @@ class CovariantParametersVerifier { // always named, so we can safely assume // `_thisMember.enclosingElement2.name` and // `superMember.enclosingElement2.name` are non-`null`. - errorReporter.reportErrorForNode( + errorReporter.reportErrorForOffset( CompileTimeErrorCode.INVALID_OVERRIDE, - errorNode, + errorNode.offset, + errorNode.length, [ _thisMember.name, _thisMember.enclosingElement2.name!, diff --git a/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart b/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart index 58db0cd7592..681431c6e1c 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 @@ class DuplicateDefinitionVerifier { var staticSetters = {}; 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 @@ class DuplicateDefinitionVerifier { } } 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 @@ class DuplicateDefinitionVerifier { } 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, ); } } @@ -186,17 +190,19 @@ class DuplicateDefinitionVerifier { 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 @@ class DuplicateDefinitionVerifier { 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 @@ class DuplicateDefinitionVerifier { } } 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 @@ class DuplicateDefinitionVerifier { void checkForVariables(VariableDeclarationList node) { Map definedNames = HashMap(); for (VariableDeclaration variable in node.variables) { - _checkDuplicateIdentifier(definedNames, variable.name); + _checkDuplicateIdentifier(definedNames, variable.name2, + element: variable.declaredElement!); } } @@ -253,11 +260,12 @@ class DuplicateDefinitionVerifier { void checkParameters(FormalParameterList node) { Map definedNames = HashMap(); 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 @@ class DuplicateDefinitionVerifier { 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 @@ class DuplicateDefinitionVerifier { void checkTypeParameters(TypeParameterList node) { Map definedNames = HashMap(); for (TypeParameter parameter in node.typeParameters) { - _checkDuplicateIdentifier(definedNames, parameter.name); + _checkDuplicateIdentifier(definedNames, parameter.name2, + element: parameter.declaredElement!); } } @@ -336,18 +349,18 @@ class DuplicateDefinitionVerifier { } 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 @@ class DuplicateDefinitionVerifier { // [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 @@ class DuplicateDefinitionVerifier { } } 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 @@ class DuplicateDefinitionVerifier { 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 @@ class DuplicateDefinitionVerifier { } } 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 @@ class DuplicateDefinitionVerifier { /// in one of the scopes - [getterScope] or [setterScope], and produce an /// error if it is. void _checkDuplicateIdentifier( - Map getterScope, SimpleIdentifier identifier, - {Element? element, Map? setterScope}) { + Map getterScope, Token identifier, + {required Element element, Map? 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 @@ class DuplicateDefinitionVerifier { return CompileTimeErrorCode.DUPLICATE_DEFINITION; } - var name = identifier.name; + var name = identifier.lexeme; if (element is MethodElement) { name = element.name; } @@ -512,7 +525,7 @@ class DuplicateDefinitionVerifier { var previous = getterScope[name]; if (previous != null) { if (!_isGetterSetterPair(element, previous)) { - _errorReporter.reportErrorForNode( + _errorReporter.reportErrorForToken( getError(previous, element), identifier, [name], @@ -526,7 +539,7 @@ class DuplicateDefinitionVerifier { 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 @@ class DuplicateDefinitionVerifier { } } - 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/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart index 89c04f96543..762987aca57 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/correct_override.dart'; 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>(); +class InheritanceOverrideVerifier { final TypeSystemImpl _typeSystem; final TypeProvider _typeProvider; final InheritanceManager3 _inheritance; @@ -43,7 +45,8 @@ class InheritanceOverrideVerifier { 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 @@ class InheritanceOverrideVerifier { 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 @@ class InheritanceOverrideVerifier { 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 @@ class InheritanceOverrideVerifier { 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 @@ class InheritanceOverrideVerifier { /// Returns [ExecutableElement] members that are in the interface of the /// given class, but don't have concrete implementations. static List missingOverrides(ClassDeclaration node) { - return node.name.getProperty(_missingOverridesKey) ?? const []; + return _missingOverrides[node.name2] ?? const []; } } @@ -118,7 +124,7 @@ class _ClassVerifier { final Uri libraryUri; final AbstractClassElementImpl classElement; - final SimpleIdentifier classNameNode; + final Token classNameToken; final List members; final ImplementsClause? implementsClause; final OnClause? onClause; @@ -137,14 +143,14 @@ class _ClassVerifier { 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 @@ class _ClassVerifier { if (!classElement.isEnum && !classElement.isAbstract && implementsDartCoreEnum) { - reporter.reportErrorForNode( + reporter.reportErrorForToken( CompileTimeErrorCode.CONCRETE_CLASS_HAS_ENUM_SUPERINTERFACE, - classNameNode, + classNameToken, ); return true; } @@ -174,7 +180,7 @@ class _ClassVerifier { // 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 @@ class _ClassVerifier { 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 @@ class _ClassVerifier { 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 @@ class _ClassVerifier { ).verify( superMember: interfaceElement, errorReporter: reporter, - errorNode: classNameNode, + errorNode: classNameToken, errorCode: CompileTimeErrorCode.INVALID_IMPLEMENTATION_OVERRIDE, ); } @@ -308,7 +314,7 @@ class _ClassVerifier { /// 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? methodParameterNodes, @@ -659,14 +665,14 @@ class _ClassVerifier { 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], ); } } @@ -690,9 +696,9 @@ class _ClassVerifier { if (member != null) { var enclosingClass = member.enclosingElement2; 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 @@ class _ClassVerifier { } } - 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,9 +732,9 @@ class _ClassVerifier { ); var inherited = getter ?? setter; if (inherited != null) { - reporter.reportErrorForNode( + reporter.reportErrorForToken( CompileTimeErrorCode.ILLEGAL_ENUM_VALUES_INHERITANCE, - classNameNode, + classNameToken, [inherited.enclosingElement2.name!], ); } @@ -780,7 +786,7 @@ class _ClassVerifier { 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 @@ class _ClassVerifier { 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,7 +805,7 @@ class _ClassVerifier { return false; } - void _reportInconsistentInheritance(AstNode node, Conflict conflict) { + void _reportInconsistentInheritance(Token token, Conflict conflict) { var name = conflict.name; if (conflict is GetterMethodConflict) { @@ -807,9 +813,9 @@ class _ClassVerifier { // elements so it is safe to assume that // `conflict.getter.enclosingElement2.name` and // `conflict.method.enclosingElement2.name` are both non-`null`. - reporter.reportErrorForNode( + reporter.reportErrorForToken( CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, - node, + token, [ name.name, conflict.getter.enclosingElement2.name!, @@ -825,9 +831,9 @@ class _ClassVerifier { return '$className.${name.name} ($typeStr)'; }).join(', '); - reporter.reportErrorForNode( + reporter.reportErrorForToken( CompileTimeErrorCode.INCONSISTENT_INHERITANCE, - node, + token, [name.name, candidatesStr], ); } else { @@ -840,10 +846,7 @@ class _ClassVerifier { return; } - classNameNode.setProperty( - InheritanceOverrideVerifier._missingOverridesKey, - elements, - ); + _missingOverrides[classNameToken] = elements; var descriptions = []; for (ExecutableElement element in elements) { @@ -866,34 +869,34 @@ class _ClassVerifier { 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 @@ class _ClassVerifier { 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 @@ class _ClassVerifier { 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 3ce9a09d86e..dc67f36c09c 100644 --- a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart +++ b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart @@ -133,8 +133,8 @@ class MustCallSuperVerifier { 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 5a872501f44..e3a6fcb8805 100644 --- a/pkg/analyzer/lib/src/error/override_verifier.dart +++ b/pkg/analyzer/lib/src/error/override_verifier.dart @@ -54,9 +54,9 @@ class OverrideVerifier extends RecursiveAstVisitor { 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 @@ class OverrideVerifier extends RecursiveAstVisitor { 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 03bd2eda87e..51cc6f1bdf9 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 @@ class RequiredParametersVerifier extends SimpleAstVisitor { _check( parameters: node.constructorElement?.parameters, arguments: node.arguments?.argumentList.arguments ?? [], - errorNode: node.name, + errorNode: node.name2, ); } @@ -111,7 +112,7 @@ class RequiredParametersVerifier extends SimpleAstVisitor { required List? parameters, ConstructorElement? enclosingConstructor, required List arguments, - required AstNode errorNode, + required SyntacticEntity errorNode, }) { if (parameters == null) { return; @@ -122,9 +123,10 @@ class RequiredParametersVerifier extends SimpleAstVisitor { 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 @@ class RequiredParametersVerifier extends SimpleAstVisitor { 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 309ead09a3c..2fcbb0c7faf 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 @@ VerifySuperFormalParametersResult verifySuperFormalParameters({ } 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 c2c2f5160c3..604065c2ddc 100644 --- a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart +++ b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart @@ -131,9 +131,11 @@ class TypeArgumentsVerifier { 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 66a2b0ff7f2..4a76f6be5d6 100644 --- a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart +++ b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart @@ -456,6 +456,40 @@ class UnusedLocalElementsVerifier extends RecursiveAstVisitor { this._inheritanceManager, LibraryElement library) : _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) { @@ -467,6 +501,54 @@ class UnusedLocalElementsVerifier extends RecursiveAstVisitor { super.visitFormalParameterList(node); } + @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()) { diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart index ee1e932886c..a22f33d6149 100644 --- a/pkg/analyzer/lib/src/fasta/ast_builder.dart +++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart @@ -194,15 +194,15 @@ class AstBuilder extends StackListener { } } - 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; } } @@ -371,7 +371,7 @@ class AstBuilder extends StackListener { } if (staticToken != null) { assert(staticToken.isModifier); - String? className = currentDeclarationName?.name; + String? className = currentDeclarationName?.lexeme; if (name.lexeme != className || getOrSet != null) { modifiers.staticKeyword = staticToken; } @@ -2739,9 +2739,11 @@ class AstBuilder extends StackListener { if (catchParameterList != null) { List 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; } } @@ -2967,6 +2969,7 @@ class AstBuilder extends StackListener { constant = EnumConstantDeclarationImpl( documentationComment: constant.documentationComment, metadata: constant.metadata, + // ignore: deprecated_member_use_from_same_package name: constant.name, arguments: EnumConstantArgumentsImpl( typeArguments: typeArguments, @@ -3172,6 +3175,7 @@ class AstBuilder extends StackListener { variableList.metadata, variableList.keyword, variableList.type, + // ignore: deprecated_member_use_from_same_package variableList.variables.first.name), inKeyword: inKeyword, iterable: iterator, @@ -3744,7 +3748,7 @@ class AstBuilder extends StackListener { debugEvent("NoTypeNameInConstructorReference"); assert(enumDeclaration != null); - push(ast.simpleIdentifier(enumDeclaration!.name.token)); + push(ast.simpleIdentifier(enumDeclaration!.name2)); } @override diff --git a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart index 3cc14950d10..e3f078ac7b8 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 @@ mixin ErrorDetectionHelpers { return; } - _checkForAssignableExpressionAtType( + checkForAssignableExpressionAtType( expression, actualStaticType, expectedStaticType, errorCode, whyNotPromoted: whyNotPromoted); } @@ -61,6 +61,36 @@ mixin ErrorDetectionHelpers { ); } + void checkForAssignableExpressionAtType( + Expression expression, + DartType actualStaticType, + DartType expectedStaticType, + ErrorCode errorCode, + {Map 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 @@ mixin ErrorDetectionHelpers { // 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 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 @@ mixin ErrorDetectionHelpers { whyNotPromoted: whyNotPromoted); } } - - bool _checkForAssignableExpressionAtType( - Expression expression, - DartType actualStaticType, - DartType expectedStaticType, - ErrorCode errorCode, - {Map 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 9bce0358ce4..c35051bf2f7 100644 --- a/pkg/analyzer/lib/src/generated/error_verifier.dart +++ b/pkg/analyzer/lib/src/generated/error_verifier.dart @@ -429,7 +429,7 @@ class ErrorVerifier extends RecursiveAstVisitor _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 @@ class ErrorVerifier extends RecursiveAstVisitor _checkForFinalNotInitializedInClass(members); _checkForBadFunctionUse(node); _checkForWrongTypeParameterVarianceInSuperinterfaces(); - _checkForMainFunction(node.name); + _checkForMainFunction1(node.name2, node.declaredElement!); _reportMacroApplicationErrors( annotations: node.metadata, macroErrors: element.macroApplicationErrors, @@ -470,13 +470,13 @@ class ErrorVerifier extends RecursiveAstVisitor @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 @@ class ErrorVerifier extends RecursiveAstVisitor _checkForInvalidField(node, fieldName, staticElement); if (staticElement is FieldElement) { _checkForAbstractOrExternalFieldConstructorInitializer( - node.fieldName, staticElement); + node.fieldName.token, staticElement); } super.visitConstructorFieldInitializer(node); } finally { @@ -572,7 +572,16 @@ class ErrorVerifier extends RecursiveAstVisitor @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 @@ class ErrorVerifier extends RecursiveAstVisitor _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 @@ class ErrorVerifier extends RecursiveAstVisitor _constructorFieldsVerifier.enterEnum(node, element); _checkForFinalNotInitializedInClass(node.members); _checkForWrongTypeParameterVarianceInSuperinterfaces(); - _checkForMainFunction(node.name); + _checkForMainFunction1(node.name2, node.declaredElement!); _checkForEnumInstantiatedToBoundsIsNotWellBounded(node, element); GetterSetterTypesVerifier( @@ -655,7 +664,7 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor var fieldElement = element.field; if (fieldElement != null) { _checkForAbstractOrExternalFieldConstructorInitializer( - node.identifier, fieldElement); + node.name, fieldElement); } } super.visitFieldFormalParameter(node); @@ -710,7 +719,7 @@ class ErrorVerifier extends RecursiveAstVisitor @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 @@ class ErrorVerifier extends RecursiveAstVisitor @override void visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) { SimpleIdentifier identifier = node.identifier; - if (_checkForEachParts(node, identifier)) { + if (_checkForEachParts(node, identifier.staticElement)) { _checkForAssignmentToFinal(identifier); } super.visitForEachPartsWithIdentifier(node); @@ -751,18 +760,18 @@ class ErrorVerifier extends RecursiveAstVisitor } _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 @@ class ErrorVerifier extends RecursiveAstVisitor @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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor @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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor _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 @@ class ErrorVerifier extends RecursiveAstVisitor _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 @@ class ErrorVerifier extends RecursiveAstVisitor List 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 @@ class ErrorVerifier extends RecursiveAstVisitor _checkForConflictingClassMembers(); _checkForFinalNotInitializedInClass(members); - _checkForMainFunction(node.name); + _checkForMainFunction1(node.name2, node.declaredElement!); _checkForWrongTypeParameterVarianceInSuperinterfaces(); // _checkForBadFunctionUse(node); super.visitMixinDeclaration(node); @@ -1138,7 +1149,8 @@ class ErrorVerifier extends RecursiveAstVisitor // - 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor _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 @@ class ErrorVerifier extends RecursiveAstVisitor @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 @@ class ErrorVerifier extends RecursiveAstVisitor @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 @@ class ErrorVerifier extends RecursiveAstVisitor } 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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); } } } @@ -1695,19 +1708,16 @@ class ErrorVerifier extends RecursiveAstVisitor } } - /// 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]); } } @@ -1923,9 +1933,9 @@ class ErrorVerifier extends RecursiveAstVisitor 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), @@ -2346,7 +2356,7 @@ class ErrorVerifier extends RecursiveAstVisitor /// 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 @@ class ErrorVerifier extends RecursiveAstVisitor // The type of the loop variable. DartType variableType; - var variableElement = variable.staticElement; if (variableElement is VariableElement) { variableType = variableElement.type; } else { @@ -2485,9 +2494,9 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor } // 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 @@ class ErrorVerifier extends RecursiveAstVisitor return; } if (element.hasImplicitReturnType && element.returnType.isDynamic) { - errorReporter.reportErrorForNode(LanguageCode.IMPLICIT_DYNAMIC_RETURN, + errorReporter.reportErrorForToken(LanguageCode.IMPLICIT_DYNAMIC_RETURN, functionName, [element.displayName]); } } @@ -3174,48 +3187,62 @@ class ErrorVerifier extends RecursiveAstVisitor } } - 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.enclosingElement2 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, ); } @@ -3613,9 +3640,9 @@ class ErrorVerifier extends RecursiveAstVisitor : 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor return; } - errorReporter.reportErrorForNode( + errorReporter.reportErrorForToken( CompileTimeErrorCode.NON_FINAL_FIELD_IN_ENUM, - variableList.variables.first.name, + variableList.variables.first.name2, ); } @@ -3730,8 +3757,7 @@ class ErrorVerifier extends RecursiveAstVisitor /// 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 @@ class ErrorVerifier extends RecursiveAstVisitor errorReporter.reportErrorForNode( CompileTimeErrorCode.NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD, field, - [field.name.name], + [field.name2.lexeme], ); } } @@ -3835,10 +3861,10 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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; @@ -4039,8 +4065,8 @@ class ErrorVerifier extends RecursiveAstVisitor !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 @@ class ErrorVerifier extends RecursiveAstVisitor /// /// 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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; @@ -4414,7 +4440,7 @@ class ErrorVerifier extends RecursiveAstVisitor void reportError(ErrorCode errorCode, List 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); @@ -4607,7 +4633,7 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor } 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor /// /// See [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER]. void _checkForWrongNumberOfParametersForSetter( - SimpleIdentifier setterName, FormalParameterList? parameterList) { + Token setterName, FormalParameterList? parameterList) { if (parameterList == null) { return; } NodeList 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor /// /// 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 @@ class ErrorVerifier extends RecursiveAstVisitor /// 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 @@ class ErrorVerifier extends RecursiveAstVisitor 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 57d16b56f3f..22de819431d 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 @@ class FfiVerifier extends RecursiveAstVisitor { 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 @@ class FfiVerifier extends RecursiveAstVisitor { } 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 @@ class FfiVerifier extends RecursiveAstVisitor { } 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 @@ class FfiVerifier extends RecursiveAstVisitor { 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 @@ class FfiVerifier extends RecursiveAstVisitor { 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]); } } } @@ -631,21 +632,21 @@ class FfiVerifier extends RecursiveAstVisitor { 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 annotations) { + Token errorToken, NodeList 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; } @@ -963,17 +964,17 @@ class FfiVerifier extends RecursiveAstVisitor { 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 @@ class FfiVerifier extends RecursiveAstVisitor { 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, ); } } diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart index 91235520dff..90d009d1caa 100644 --- a/pkg/analyzer/lib/src/generated/resolver.dart +++ b/pkg/analyzer/lib/src/generated/resolver.dart @@ -431,7 +431,7 @@ class ResolverVisitor extends ThrowingAstVisitor void checkForBodyMayCompleteNormally({ required FunctionBody body, - required AstNode errorNode, + required SyntacticEntity errorNode, }) { if (!_isNonNullableByDefault) return; if (!flowAnalysis.flow!.isReachable) { @@ -499,8 +499,8 @@ class ResolverVisitor extends ThrowingAstVisitor errorNode.block.leftBracket, [returnType], ); - } else { - errorReporter.reportErrorForNode( + } else if (errorNode is Token) { + errorReporter.reportErrorForToken( errorCode, errorNode, [returnType], @@ -1249,7 +1249,6 @@ class ResolverVisitor extends ThrowingAstVisitor 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 @@ class ResolverVisitor extends ThrowingAstVisitor 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 @@ class ResolverVisitor extends ThrowingAstVisitor [nameNode.name], ); } else { - errorReporter.reportErrorForNode( + errorReporter.reportErrorForToken( CompileTimeErrorCode.UNDEFINED_ENUM_CONSTRUCTOR_UNNAMED, - node.name, + node.name2, ); } } @@ -1457,9 +1459,9 @@ class ResolverVisitor extends ThrowingAstVisitor .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 @@ class ResolverVisitor extends ThrowingAstVisitor 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 @@ class ResolverVisitor extends ThrowingAstVisitor if (!node.isSetter) { checkForBodyMayCompleteNormally( body: node.functionExpression.body, - errorNode: node.name, + errorNode: node.name2, ); } flowAnalysis.executableDeclaration_exit( @@ -1945,7 +1946,6 @@ class ResolverVisitor extends ThrowingAstVisitor 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 @@ class ResolverVisitor extends ThrowingAstVisitor if (!node.isSetter) { checkForBodyMayCompleteNormally( body: node.body, - errorNode: node.name, + errorNode: node.name2, ); } flowAnalysis.executableDeclaration_exit(node.body, false); @@ -2573,8 +2573,8 @@ class ResolverVisitor extends ThrowingAstVisitor } 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 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { } void visitClassDeclarationInScope(ClassDeclaration node) { - node.name.accept(this); node.typeParameters?.accept(this); node.extendsClause?.accept(this); node.withClause?.accept(this); @@ -3070,7 +3069,6 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { // 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 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { node.metadata.accept(this); node.returnType.accept(this); - node.name?.accept(this); node.parameters.accept(this); try { @@ -3171,7 +3168,6 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { } void visitEnumDeclarationInScope(EnumDeclaration node) { - node.name.accept(this); node.typeParameters?.accept(this); node.withClause?.accept(this); node.implementsClause?.accept(this); @@ -3211,7 +3207,6 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { } void visitExtensionDeclarationInScope(ExtensionDeclaration node) { - node.name?.accept(this); node.typeParameters?.accept(this); node.extendedType.accept(this); } @@ -3334,7 +3329,6 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { // 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 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { // 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 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { // [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 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { // 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 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { // 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 @@ class ScopeResolverVisitor extends UnifyingAstVisitor { } void visitMixinDeclarationInScope(MixinDeclaration node) { - node.name.accept(this); node.typeParameters?.accept(this); node.onClause?.accept(this); node.implementsClause?.accept(this); diff --git a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart index f6df998c200..9165f0d76c1 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 @@ class SdkConstraintVerifier extends RecursiveAstVisitor { @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/services/available_declarations.dart b/pkg/analyzer/lib/src/services/available_declarations.dart index 8a744b5065a..4bac2f74fa6 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/source/line_info.dart'; 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 @@ class _File { bool isFinal = false, bool isStatic = false, required DeclarationKind kind, - required Identifier name, + required Token name, String? parameters, List? parameterNames, List? parameterTypes, @@ -1410,7 +1409,7 @@ class _File { String? returnType, String? typeParameters, }) { - if (Identifier.isPrivateName(name.name)) { + if (Identifier.isPrivateName(name.lexeme)) { return null; } @@ -1433,7 +1432,7 @@ class _File { lineInfo: lineInfo, locationOffset: locationOffset, locationPath: path, - name: name.name, + name: name.lexeme, locationStartColumn: lineLocation.columnNumber, locationStartLine: lineLocation.lineNumber, parameters: parameters, @@ -1473,13 +1472,11 @@ class _File { 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 @@ class _File { isFinal: isFinal, isStatic: isStatic, kind: DeclarationKind.FIELD, - name: field.name, + name: field.name2, parent: parent, relevanceTags: [ 'ElementKind.FIELD', @@ -1534,7 +1531,7 @@ class _File { 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 @@ class _File { 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 @@ class _File { 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 @@ class _File { 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 @@ class _File { parent: classDeclaration, relevanceTagsInFile: ['ElementKind.CONSTRUCTOR'], requiredParameterCount: 0, - returnType: node.name.name, + returnType: node.name2.lexeme, typeParameters: null, )); } @@ -1625,14 +1622,14 @@ class _File { 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 @@ class _File { addDeclaration( isDeprecated: isDeprecated, kind: DeclarationKind.ENUM_CONSTANT, - name: constant.name, + name: constant.name2, parent: enumDeclaration, relevanceTags: [ 'ElementKind.ENUM_CONSTANT', @@ -1652,7 +1649,7 @@ class _File { ); } } else if (node is ExtensionDeclaration) { - var name = node.name; + var name = node.name2; if (name != null) { addDeclaration( isDeprecated: isDeprecated, @@ -1670,7 +1667,7 @@ class _File { addDeclaration( isDeprecated: isDeprecated, kind: DeclarationKind.GETTER, - name: node.name, + name: node.name2, relevanceTags: ['ElementKind.FUNCTION'], returnType: _getTypeAnnotationString(node.returnType), ); @@ -1678,7 +1675,7 @@ class _File { 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 @@ class _File { 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 @@ class _File { 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 @@ class _File { addDeclaration( isDeprecated: isDeprecated, kind: DeclarationKind.TYPE_ALIAS, - name: node.name, + name: node.name2, relevanceTags: ['ElementKind.TYPE_ALIAS'], ); } @@ -1735,7 +1732,7 @@ class _File { 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 @@ class _File { 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 @@ class _File { 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 @@ class _File { } 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 @@ class _File { var names = []; 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 91ada35e4bc..39760549695 100644 --- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart +++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart @@ -421,7 +421,7 @@ class AstBinaryReader { if (parameter is SimpleFormalParameterImpl) { parameter.declaredElement = element; } - node.identifier?.staticElement = element; + node.declaredElement = element; element.type = nonDefaultElement.type; return node; diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart index 0c7dbe3ab95..e4577c859ed 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 @@ class AstBinaryWriter extends ThrowingAstVisitor { ), ); _writeOptionalNode(node.type); - _writeDeclarationName(node.identifier); + _writeDeclarationName(node.name); _storeDeclaration(node); } @@ -764,7 +764,7 @@ class AstBinaryWriter extends ThrowingAstVisitor { @override void visitTypeParameter(TypeParameter node) { _writeByte(Tag.TypeParameter); - _writeDeclarationName(node.name); + _writeDeclarationName(node.name2); _writeOptionalNode(node.bound); _storeDeclaration(node); } @@ -836,7 +836,7 @@ class AstBinaryWriter extends ThrowingAstVisitor { }) { _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 @@ class AstBinaryWriter extends ThrowingAstVisitor { ); _writeNodeList(node.metadata); - if (node.identifier != null) { - _writeDeclarationName(node.identifier!); + if (node.name != null) { + _writeDeclarationName(node.name!); } _storeFormalParameter(node); } @@ -875,8 +875,8 @@ class AstBinaryWriter extends ThrowingAstVisitor { _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 73d60a8add4..c1c63e06e15 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 @@ class AstTextPrinter extends ThrowingAstVisitor { _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 @@ class AstTextPrinter extends ThrowingAstVisitor { _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 @@ class AstTextPrinter extends ThrowingAstVisitor { _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 @@ class AstTextPrinter extends ThrowingAstVisitor { _declaration(node); _token(node.keyword); node.type?.accept(this); - node.identifier.accept(this); + _token(node.name); } @override @@ -316,7 +316,7 @@ class AstTextPrinter extends ThrowingAstVisitor { @override void visitEnumConstantDeclaration(EnumConstantDeclaration node) { _declaration(node); - node.name.accept(this); + _token(node.name2); node.arguments?.accept(this); } @@ -324,7 +324,7 @@ class AstTextPrinter extends ThrowingAstVisitor { 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 @@ class AstTextPrinter extends ThrowingAstVisitor { _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 @@ class AstTextPrinter extends ThrowingAstVisitor { 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 @@ class AstTextPrinter extends ThrowingAstVisitor { _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 @@ class AstTextPrinter extends ThrowingAstVisitor { _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 @@ class AstTextPrinter extends ThrowingAstVisitor { 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 @@ class AstTextPrinter extends ThrowingAstVisitor { 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 @@ class AstTextPrinter extends ThrowingAstVisitor { 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 @@ class AstTextPrinter extends ThrowingAstVisitor { 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 @@ class AstTextPrinter extends ThrowingAstVisitor { _normalFormalParameter(node); _token(node.keyword); node.type?.accept(this); - node.identifier?.accept(this); + _token(node.name); } @override @@ -907,7 +907,7 @@ class AstTextPrinter extends ThrowingAstVisitor { 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 @@ class AstTextPrinter extends ThrowingAstVisitor { // 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 @@ class AstTextPrinter extends ThrowingAstVisitor { @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/default_types_builder.dart b/pkg/analyzer/lib/src/summary2/default_types_builder.dart index ec3ff9ad922..4ddea7898a4 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 @@ class DefaultTypesBuilder { 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 08751df10f7..07fb46c5ac1 100644 --- a/pkg/analyzer/lib/src/summary2/element_builder.dart +++ b/pkg/analyzer/lib/src/summary2/element_builder.dart @@ -88,17 +88,17 @@ class ElementBuilder extends ThrowingAstVisitor { @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 @@ class ElementBuilder extends ThrowingAstVisitor { @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 @@ class ElementBuilder extends ThrowingAstVisitor { _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 @@ class ElementBuilder extends ThrowingAstVisitor { 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 @@ class ElementBuilder extends ThrowingAstVisitor { @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 @@ class ElementBuilder extends ThrowingAstVisitor { _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 @@ class ElementBuilder extends ThrowingAstVisitor { var valuesElements = []; 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 @@ -389,9 +389,9 @@ class ElementBuilder extends ThrowingAstVisitor { @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 +437,10 @@ class ElementBuilder extends ThrowingAstVisitor { ) { 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 +470,7 @@ class ElementBuilder extends ThrowingAstVisitor { _enclosingContext.addNonSyntheticField(element); _linker.elementNodes[element] = variable; - nameNode.staticElement = element; + variable.declaredElement = element; } _buildType(node.fields.type); } @@ -478,9 +479,9 @@ class ElementBuilder extends ThrowingAstVisitor { 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 +506,7 @@ class ElementBuilder extends ThrowingAstVisitor { 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 +535,9 @@ class ElementBuilder extends ThrowingAstVisitor { @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 +577,7 @@ class ElementBuilder extends ThrowingAstVisitor { _setCodeRange(executableElement, node); _setDocumentation(executableElement, node); - nameNode.staticElement = executableElement; + node.declaredElement = executableElement; _linker.elementNodes[executableElement] = node; _buildExecutableElementChildren( @@ -597,16 +598,16 @@ class ElementBuilder extends ThrowingAstVisitor { @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 +621,7 @@ class ElementBuilder extends ThrowingAstVisitor { }); var aliasedElement = GenericFunctionTypeElementImpl.forOffset( - node.name.offset, + nameToken.offset, ); aliasedElement.parameters = holder.parameters; @@ -632,9 +633,9 @@ class ElementBuilder extends ThrowingAstVisitor { 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 +659,7 @@ class ElementBuilder extends ThrowingAstVisitor { element.metadata = _buildAnnotations(node.metadata); _setCodeRange(element, node); - nameNode.staticElement = element; + node.declaredElement = element; _linker.elementNodes[element] = node; _enclosingContext.addParameter(name, element); @@ -706,15 +707,15 @@ class ElementBuilder extends ThrowingAstVisitor { @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 +769,9 @@ class ElementBuilder extends ThrowingAstVisitor { @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 +828,7 @@ class ElementBuilder extends ThrowingAstVisitor { _setCodeRange(executableElement, node); _setDocumentation(executableElement, node); - nameNode.staticElement = executableElement; + node.declaredElement = executableElement; _linker.elementNodes[executableElement] = node; _buildExecutableElementChildren( @@ -842,15 +843,15 @@ class ElementBuilder extends ThrowingAstVisitor { @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 +904,9 @@ class ElementBuilder extends ThrowingAstVisitor { 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 +935,6 @@ class ElementBuilder extends ThrowingAstVisitor { _setCodeRange(element, node); node.declaredElement = element; - nameNode?.staticElement = element; _buildType(node.type); } @@ -943,9 +943,9 @@ class ElementBuilder extends ThrowingAstVisitor { 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 +970,7 @@ class ElementBuilder extends ThrowingAstVisitor { 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 +1000,10 @@ class ElementBuilder extends ThrowingAstVisitor { 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 +1030,7 @@ class ElementBuilder extends ThrowingAstVisitor { _linker.elementNodes[element] = variable; _enclosingContext.addTopLevelVariable(name, element); - nameNode.staticElement = element; + variable.declaredElement = element; var getter = element.getter; if (getter is PropertyAccessorElementImpl) { @@ -1054,14 +1055,14 @@ class ElementBuilder extends ThrowingAstVisitor { @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); diff --git a/pkg/analyzer/lib/src/summary2/function_type_builder.dart b/pkg/analyzer/lib/src/summary2/function_type_builder.dart index 4ab0f6a4c30..8ecabb3c078 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 @@ class FunctionTypeBuilder extends TypeBuilder { ) { 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 5b53526c6ff..8012584e603 100644 --- a/pkg/analyzer/lib/src/summary2/informative_data.dart +++ b/pkg/analyzer/lib/src/summary2/informative_data.dart @@ -1116,7 +1116,7 @@ class _InformativeDataWriter { sink.writeList2(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 @@ class _InformativeDataWriter { sink.writeList2(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 @@ class _InformativeDataWriter { sink.writeList2(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 @@ class _InformativeDataWriter { sink.writeList2(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 @@ class _InformativeDataWriter { (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 @@ class _InformativeDataWriter { .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 @@ class _InformativeDataWriter { sink.writeList2(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 @@ class _InformativeDataWriter { 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 @@ class _InformativeDataWriter { sink.writeList2(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 @@ class _InformativeDataWriter { 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 @@ class _InformativeDataWriter { 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 @@ class _InformativeDataWriter { 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 @@ class _InformativeDataWriter { sink.writeList(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 @@ class _InformativeDataWriter { (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 @@ class _InformativeDataWriter { (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 @@ class _InformativeDataWriter { 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 @@ class _InformativeDataWriter { sink.writeList(parameters, (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.name2.offset); }); } } @@ -1794,7 +1794,7 @@ class _OffsetsApplier extends _OffsetsAstVisitor { 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 8a7f6e6f3f0..db9df3a1008 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/introspection_impls.dart 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 @@ class DeclarationBuilder { /// 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; @@ -157,9 +163,11 @@ class DeclarationBuilderFromElement { } class DeclarationBuilderFromNode { - final Map _identifierMap = + final Map _referencedIdentifierMap = Map.identity(); + final Map _declaredIdentifierMap = Map.identity(); + final Map _classMap = Map.identity(); @@ -169,6 +177,14 @@ class DeclarationBuilderFromNode { 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 @@ class DeclarationBuilderFromNode { 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 @@ class DeclarationBuilderFromNode { ); } + 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( ast.TypeAnnotation? node) { if (node == null) { @@ -248,7 +265,7 @@ class DeclarationBuilderFromNode { } 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 @@ class DeclarationBuilderFromNode { ) { 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 IdentifierImplFromElement extends IdentifierImpl { }); } -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 IntrospectableClassDeclarationImpl }); } +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 on T? { R? mapOrNull(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 9b4f698c523..184476e6e65 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 @@ class NamedTypeBuilder extends TypeBuilder { List _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 dd7cae3c203..2891f1fd7eb 100644 --- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart +++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart @@ -455,7 +455,7 @@ class _VariableInferenceNode extends _InferenceNode { @override String get displayName { - return _node.name.name; + return _node.name2.lexeme; } @override diff --git a/pkg/analyzer/lib/src/summary2/types_builder.dart b/pkg/analyzer/lib/src/summary2/types_builder.dart index 64d608728b4..28bb1b23169 100644 --- a/pkg/analyzer/lib/src/summary2/types_builder.dart +++ b/pkg/analyzer/lib/src/summary2/types_builder.dart @@ -194,7 +194,7 @@ class TypesBuilder { 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 8c0dcc94618..df8f7f71209 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.dart'; 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 @@ class CodeChecker extends RecursiveAstVisitor { @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 @@ class CodeChecker extends RecursiveAstVisitor { /// /// 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 @@ class CodeChecker extends RecursiveAstVisitor { /// 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 @@ class CodeChecker extends RecursiveAstVisitor { /// /// 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 @@ class CodeChecker extends RecursiveAstVisitor { } void _recordMessage( - AstNode node, ErrorCode errorCode, List arguments) { + SyntacticEntity node, ErrorCode errorCode, List arguments) { var argumentStrings = [ for (var argument in arguments) if (argument is DartType) @@ -761,16 +772,18 @@ class CodeChecker extends RecursiveAstVisitor { ? 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/test_utilities/find_node.dart b/pkg/analyzer/lib/src/test_utilities/find_node.dart index 5ffa8747041..6638cabe68f 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 @@ class FindNode { 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/test/dart/ast/ast_test.dart b/pkg/analyzer/test/dart/ast/ast_test.dart index f70c0a3bb76..a5695008740 100644 --- a/pkg/analyzer/test/dart/ast/ast_test.dart +++ b/pkg/analyzer/test/dart/ast/ast_test.dart @@ -235,7 +235,7 @@ class FieldFormalParameterTest { 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 @@ class SimpleIdentifierTest extends _AstTest { expect(identifier.inGetterContext(), isFalse); } + @deprecated void test_inGetterContext_fieldFormalParameter() { FieldFormalParameter parameter = AstTestFactory.fieldFormalParameter2('test'); @@ -1509,12 +1510,6 @@ class SimpleIdentifierTest extends _AstTest { 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 @@ class SuperFormalParameterTest { 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 bc0e269f286..d766e0e75f3 100644 --- a/pkg/analyzer/test/error/error_test.dart +++ b/pkg/analyzer/test/error/error_test.dart @@ -38,13 +38,13 @@ class ErrorCodeValuesTest extends ParserTestCase { 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 @@ class ErrorCodeValuesTest extends ParserTestCase { TopLevelVariableDeclaration declaration = listingUnit.declarations .whereType() .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()) { diff --git a/pkg/analyzer/test/generated/class_member_parser_test.dart b/pkg/analyzer/test/generated/class_member_parser_test.dart index 7b39f703125..7d55bed8e77 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 @@ class ClassMemberParserTest extends FastaParserTestCase 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 @@ class ClassMemberParserTest extends FastaParserTestCase 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 @@ class ClassMemberParserTest extends FastaParserTestCase 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 @@ class ClassMemberParserTest extends FastaParserTestCase 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 @@ class ClassMemberParserTest extends FastaParserTestCase NodeList 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 @@ class ClassMemberParserTest extends FastaParserTestCase NodeList 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 @@ Function(int, String) v; NodeList 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 @@ Function(int, String) v; NodeList 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 @@ Function(int, String) v; NodeList 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 @@ Function(int, String) v; NodeList 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 @@ Function(int, String) v; NodeList 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 @@ Function(int, String) v; NodeList 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; NodeList 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 @@ void Function(core.List x) m() => null; NodeList 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 @@ void Function(core.List x) m() => null; NodeList 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 @@ void Function(core.List x) m() => null; NodeList 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 @@ void Function(core.List x) m() => null; NodeList 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 @@ void Function(core.List x) m() => null; NodeList 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 @@ void Function(core.List x) m() => null; NodeList 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ void Function(core.List x) m() => null; 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 @@ int f( 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 7e392015886..3c171bb88bc 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 @@ class CollectionLiteralParserTest extends FastaParserTestCase { 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 @@ class CollectionLiteralParserTest extends FastaParserTestCase { 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 @@ class CollectionLiteralParserTest extends FastaParserTestCase { 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/error_parser_test.dart b/pkg/analyzer/test/generated/error_parser_test.dart index a8779b35d2a..da49dd531c1 100644 --- a/pkg/analyzer/test/generated/error_parser_test.dart +++ b/pkg/analyzer/test/generated/error_parser_test.dart @@ -852,7 +852,7 @@ class Foo { 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 @@ class Foo { 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 @@ class Wrong { 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 @@ class Wrong { 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 @@ class Wrong { 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 5c2a5c1802c..3407fe081eb 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 @@ class ExtensionMethodsParserTest extends FastaParserTestCase { ]); 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 @@ class ExtensionMethodsParserTest extends FastaParserTestCase { ]); 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 @@ class ExtensionMethodsParserTest extends FastaParserTestCase { 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'); var namedType = extension.extendedType as NamedType; expect(namedType.name.name, 'C'); @@ -64,7 +64,7 @@ class ExtensionMethodsParserTest extends FastaParserTestCase { 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'); var namedType = extension.extendedType as NamedType; expect(namedType.name.name, 'C'); @@ -76,7 +76,7 @@ class ExtensionMethodsParserTest extends FastaParserTestCase { 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'); var namedType = extension.extendedType as NamedType; expect(namedType.name.name, 'C'); @@ -120,7 +120,7 @@ class 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, ''); expect(extension.members, hasLength(0)); @@ -133,7 +133,7 @@ class 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, ''); expect(extension.members, hasLength(0)); @@ -145,7 +145,7 @@ class 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'); expect(extension.members, hasLength(0)); @@ -159,7 +159,7 @@ class C {} 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 @@ class C {} 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 @@ class 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, 'extends'); expect((extension.extendedType as NamedType).name.name, 'C'); expect(extension.members, hasLength(0)); @@ -200,7 +200,7 @@ class 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, 'implements'); expect((extension.extendedType as NamedType).name.name, 'C'); expect(extension.members, hasLength(0)); @@ -210,7 +210,7 @@ class C {} 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 @@ class 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, 'with'); expect((extension.extendedType as NamedType).name.name, 'C'); expect(extension.members, hasLength(0)); @@ -246,7 +246,7 @@ class C {} 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 64b99881ebc..613e8fc7909 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 @@ class FormalParameterParserTest extends FastaParserTestCase { 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 @@ class FormalParameterParserTest extends FastaParserTestCase { 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 @@ class FormalParameterParserTest extends FastaParserTestCase { 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 @@ class FormalParameterParserTest extends FastaParserTestCase { 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 @@ class FormalParameterParserTest extends FastaParserTestCase { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { // 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 @@ class C { // 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 7beae7f8a00..e50a3a7b4f2 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 54f27bc7b79..8cf5d0aec18 100644 --- a/pkg/analyzer/test/generated/nnbd_parser_test.dart +++ b/pkg/analyzer/test/generated/nnbd_parser_test.dart @@ -395,7 +395,7 @@ class Foo { // 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 @@ class Foo { // 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 @@ class Foo { // 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/recovery_parser_test.dart b/pkg/analyzer/test/generated/recovery_parser_test.dart index 196e3ca2a62..fc3f19331e9 100644 --- a/pkg/analyzer/test/generated/recovery_parser_test.dart +++ b/pkg/analyzer/test/generated/recovery_parser_test.dart @@ -389,7 +389,7 @@ class B = Object with A {}''', codes: 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 @@ class B = Object with A {}''', codes: NodeList 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 @@ Map map) { NodeList 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 @@ Map map) { NodeList 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 @@ Map map) { NodeList 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 @@ Map map) { NodeList 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 @@ class C { NodeList 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 @@ class C { NodeList 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 @@ class C { NodeList 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 @@ class C { NodeList 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 @@ class C { 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 @@ class C { NodeList 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 @@ class C { List 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 @@ class C { 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 @@ class C { ]); 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 @@ class C { ]); 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 @@ class C { ]); 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 @@ class C { ]); 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 @@ class C { ]); 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 @@ class C { 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 @@ class C { 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_case.dart b/pkg/analyzer/test/generated/resolver_test_case.dart index b382aeeba11..6205e1df14c 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/ast.dart'; 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 @@ class ResolutionVerifier extends RecursiveAstVisitor { 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 a8ba8f815f0..01b61eaac34 100644 --- a/pkg/analyzer/test/generated/simple_parser_test.dart +++ b/pkg/analyzer/test/generated/simple_parser_test.dart @@ -108,10 +108,10 @@ class SimpleParserTest extends FastaParserTestCase { 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 @@ class C { 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 @@ Function(core.List x) m() => null; 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 ec1236bf033..f358b2a1213 100644 --- a/pkg/analyzer/test/generated/statement_parser_test.dart +++ b/pkg/analyzer/test/generated/statement_parser_test.dart @@ -278,7 +278,7 @@ main() { 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 @@ main() { 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 @@ main() { assertNoErrors(); List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 @@ main() { VariableDeclarationList variableList = statement.variables; List 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 8bf7ab3a252..c9978a9e18a 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/element.dart'; 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 @@ void main() { test_genericFunction() async { await assertNoErrorsInCode(r'T f(T x) => null;'); - expectFunctionType('f', 'T Function(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'); + 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*)* + declaredElement: self::@function::f + declaredElementType: T* Function(T*)* +'''); } test_genericFunction_bounds() async { await assertNoErrorsInCode(r'T f(T x) => null;'); - expectFunctionType('f', 'T Function(T)', - typeFormals: '[T extends num]'); + + final node = findNode.functionDeclaration('f + 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*)* + declaredElement: self::@function::f + declaredElementType: T* Function(T*)* +'''); } test_genericFunction_parameter() async { @@ -2698,11 +2783,40 @@ class C { static T f(T x) => null; } '''); - expectFunctionType('f', 'T Function(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'); + 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*)* +'''); } test_genericFunction_typedef() async { @@ -3201,15 +3315,42 @@ class C { T f(T x) => null; } class D extends C { - T f(T x) => null; // from D + T f(T y) => null; } '''); - expectFunctionType('f(T x) => null; // from D', 'T Function(T)', - typeFormals: '[T]'); - SimpleIdentifier f = findNode.simple('f(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 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*)* +'''); } 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 f20c30343b6..a628cb62dad 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 @@ class TopLevelParserTest extends FastaParserTestCase { 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 @@ class TopLevelParserTest extends FastaParserTestCase { 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 @@ class TopLevelParserTest extends FastaParserTestCase { 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 @@ class TopLevelParserTest extends FastaParserTestCase { 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 @@ class TopLevelParserTest extends FastaParserTestCase { 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 @@ class TopLevelParserTest extends FastaParserTestCase { 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 @@ class TopLevelParserTest extends FastaParserTestCase { 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 @@ class A native 'something' { 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 @@ class A native 'something' { 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 @@ class A native 'something' { 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 @@ class A native 'something' { 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 @@ class A native 'something' { 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 @@ class A native 'something' { 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 @@ class A native 'something' { 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 @@ class A native 'something' { 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 @@ Function(core.List x) f() => null; 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 @@ Function(core.List x) f() => null; 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 @@ Function(core.List x) f() => null; 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 @@ Function(core.List x) f() => null; 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 @@ Function(core.List x) f() => null; 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 @@ Function(core.List x) f() => null; 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 @@ Function(core.List x) f() => null; assertNoErrors(); expect(member, TypeMatcher()); 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 @@ Function(core.List x) f() => null; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ Function(int, String) v; 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ mixin A { 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 @@ class A< 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 183e6385158..13d6e07a8ba 100644 --- a/pkg/analyzer/test/generated/utilities_test.dart +++ b/pkg/analyzer/test/generated/utilities_test.dart @@ -450,7 +450,6 @@ class B extends B0 with N implements J {} (node) => node.documentationComment!, (node) => node.extendsClause!, (node) => node.implementsClause!, - (node) => node.name, (node) => node.typeParameters!, (node) => node.withClause!, ], @@ -477,7 +476,6 @@ class B = B0 with N implements J; (node) => node.documentationComment!, (node) => node.superclass, (node) => node.implementsClause!, - (node) => node.name, (node) => node.typeParameters!, (node) => node.withClause, ], @@ -566,7 +564,6 @@ class B { source: findNode.constructor('B.named'), childAccessors: [ (node) => node.body, - (node) => node.name!, (node) => node.parameters, (node) => node.returnType, ], @@ -657,7 +654,6 @@ void f() { destination: findNode.declaredIdentifier('i in'), source: findNode.declaredIdentifier('j in'), childAccessors: [ - (node) => node.identifier, (node) => node.type!, ], ); @@ -703,13 +699,6 @@ enum E { _assertAnnotatedNode( findNode.enumConstantDeclaration('aaa'), ); - _assertReplacementForChildren( - destination: findNode.enumConstantDeclaration('aaa'), - source: findNode.enumConstantDeclaration('bbb'), - childAccessors: [ - (node) => node.name, - ], - ); } void test_enumDeclaration() { @@ -721,7 +710,6 @@ enum E2 with M2 implements I2 {one, two} 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 @@ class A { 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 @@ double g() => 0; source: findNode.functionDeclaration('g()'), childAccessors: [ (node) => node.functionExpression, - (node) => node.name, (node) => node.returnType!, ], ); @@ -1064,7 +1050,6 @@ typedef double G(double b); 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 @@ void f( source: findNode.functionTypedFormalParameter('b'), childAccessors: [ (node) => node.returnType!, - (node) => node.identifier, (node) => node.typeParameters!, (node) => node.parameters, ], @@ -1355,7 +1339,6 @@ class A { source: findNode.methodDeclaration('bar'), childAccessors: [ (node) => node.returnType!, - (node) => node.name, (node) => node.typeParameters!, (node) => node.parameters!, (node) => node.body, @@ -1626,7 +1609,6 @@ void f( source: findNode.simpleFormalParameter('int b'), childAccessors: [ (node) => node.type!, - (node) => node.identifier!, ], ); } @@ -1678,7 +1660,6 @@ class B extends A { source: findNode.superFormalParameter('a2'), childAccessors: [ (node) => node.type!, - (node) => node.identifier, ], ); } @@ -1699,7 +1680,6 @@ class B extends A { source: findNode.superFormalParameter('bar2'), childAccessors: [ (node) => node.type!, - (node) => node.identifier, (node) => node.typeParameters!, (node) => node.parameters!, ], @@ -1868,7 +1848,6 @@ class A {} destination: findNode.typeParameter('T extends'), source: findNode.typeParameter('U extends'), childAccessors: [ - (node) => node.name, (node) => node.bound!, ], ); @@ -1897,7 +1876,6 @@ void f() { 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 37c8af37090..358a8676bfb 100644 --- a/pkg/analyzer/test/generated/variance_parser_test.dart +++ b/pkg/analyzer/test/generated/variance_parser_test.dart @@ -64,14 +64,14 @@ class VarianceParserTest extends FastaParserTestCase { var unit = parseCompilationUnit('class A { }'); 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 @@ class VarianceParserTest extends FastaParserTestCase { ]); 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 { }'); 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 @@ class VarianceParserTest extends FastaParserTestCase { var unit = parseCompilationUnit('mixin A { }'); 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/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart index 4a00cd438c6..943c094af8c 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 @@ void main() { 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); } @@ -1729,7 +1728,10 @@ main() { 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 @@ class A { 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 @@ class A { { var a = p.parameters.parameters[0] as SimpleFormalParameter; _assertNamedTypeSimple(a.type!, typeProvider.intType); - expect(a.identifier!.staticType, isNull); } } @@ -1834,15 +1834,11 @@ class A { 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 @@ class A { 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 @@ class A { 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 @@ void main() { 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 @@ void main() { 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)'); + // 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 @@ void main() { 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 @@ void main() { 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 @@ void main() { 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 @@ void main() { 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 @@ void main() { { 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 @@ void main() { 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 @@ void main() { 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 @@ void g(C c) { 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 @@ void main() { 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 @@ void main() { 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 @@ class D extends A with B implements C {} 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 @@ class D = A with B implements C; 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 @@ enum MyEnum { 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 @@ enum MyEnum { 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 @@ enum MyEnum { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ void set topSetter(double p) {} 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 @@ void set topSetter(double p) {} 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 @@ void set topSetter(double p) {} 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 @@ void set topSetter(double p) {} 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 @@ void set topSetter(double p) {} 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ class C { 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 @@ double b = 2.3; 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 @@ double b = 2.3; 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 @@ var a = 1, b = 2.3; 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 @@ var a = 1, b = 2.3; 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 @@ void main() { 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 @@ main() { 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 @@ main() { List _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 c022aa3c93b..06f819246af 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 @@ var v = 0 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 @@ var v = 0 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 @@ var v = 0 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 @@ var v = 0 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 77c78fb1085..c4bf3b8735e 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 @@ class A {} 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 @@ class A {} // 2 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 @@ class A {} // 2 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 @@ part 'a.dart'; 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 @@ class {} 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 @@ class B = A with M; 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 @@ class A { 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 @@ class A { 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 @@ class A { 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 @@ class A { 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 @@ class A { 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 @@ enum MyEnum {a, b, c} 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 @@ enum MyEnum {a, b, c} 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 @@ extension E on int {} 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 @@ class C { 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 @@ main() { 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 @@ void foo() {} 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 @@ class A { 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 @@ int get x => 0; 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 @@ main() { 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 @@ class C { 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 @@ mixin M {} 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 @@ void f(int a) {} 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 @@ void f({@a}) {} 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 @@ void f(@a) {} 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 @@ class A { 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 @@ set x(_) {} 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 @@ int foo; 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 d583870737c..08e34ba8589 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 @@ class A {} 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 0e071ee046b..9c13ede881d 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 @@ class B {} 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 @@ int foo = 0; // 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 @@ class B2 extends X {} 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 @@ int foo = 0; // 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 ab8a0dd21e4..214b03a37ab 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 @@ void main() { 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 @@ class A { 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 81e36e00a7a..7468a58fe6b 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 @@ class NodeLocator2Test extends ParserTestCase { 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 @@ class NodeLocator2Test extends ParserTestCase { 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 913f2423343..8a22db88bdb 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 @@ class ConstantFinderTest { keyword == Keyword.FINAL, keyword == Keyword.CONST, _typeProvider.intType); - variableDeclaration.name.staticElement = fieldElement; + variableDeclaration.declaredElement = fieldElement; FieldDeclaration fieldDeclaration = AstTestFactory.fieldDeclaration2( isStatic, keyword, [variableDeclaration]); var classDeclaration = AstTestFactory.classDeclaration( @@ -212,7 +212,7 @@ class ConstantFinderTest { _node = classDeclaration; ClassElementImpl classElement = ElementFactory.classElement2(className); classElement.fields = [fieldElement]; - classDeclaration.name.staticElement = classElement; + classDeclaration.declaredElement = classElement; if (hasConstConstructor) { var constructorDeclaration = AstTestFactory.constructorDeclaration2( Keyword.CONST, @@ -239,9 +239,8 @@ class ConstantFinderTest { 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/resolution/enum_test.dart b/pkg/analyzer/test/src/dart/resolution/enum_test.dart index a569dbc08aa..dd2db988235 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 8cd9fc4c84e..7e50d1e5297 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 @@ FunctionReference leftBracket: < typeParameters TypeParameter - name: SimpleIdentifier - token: T - staticElement: T@89 - staticType: null + name: T declaredElement: T@89 rightBracket: > parameters: FormalParameterList @@ -287,10 +284,7 @@ FunctionReference leftBracket: < typeParameters TypeParameter - name: SimpleIdentifier - token: T - staticElement: T@37 - staticType: null + name: T declaredElement: T@37 rightBracket: > parameters: FormalParameterList @@ -302,10 +296,7 @@ FunctionReference 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 0402d004624..e575fbf17a6 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 @@ CompilationUnit 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 @@ CompilationUnit 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 @@ CompilationUnit 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 0820f8c73bd..b1ea604ca7f 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 @@ mixin M { 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 @@ mixin M { 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 @@ mixin M { 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 @@ mixin M { 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 @@ mixin M { 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/diagnostics/extraneous_modifier_test.dart b/pkg/analyzer/test/src/diagnostics/extraneous_modifier_test.dart index 99c0eb9ee98..d2c9228bb46 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 @@ class A { assertParsedNodeText(node, r''' SimpleFormalParameter keyword: const - identifier: SimpleIdentifier - token: a + name: a '''); } @@ -46,8 +45,7 @@ class A { assertParsedNodeText(node, r''' SimpleFormalParameter keyword: var - identifier: SimpleIdentifier - token: a + name: a '''); } @@ -67,8 +65,7 @@ SuperFormalParameter 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 9ebed01c3d5..483d18651ff 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 @@ class A { 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 00b7f90fef8..91bb8d8d9be 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 @@ mixin M { 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 b8872b3dc33..fda8d7dc3ee 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 @@ augment class A {} ClassDeclaration augmentKeyword: augment classKeyword: class - name: SimpleIdentifier - token: A + name: A leftBracket: { rightBracket: } '''); @@ -54,8 +53,7 @@ ClassDeclaration offset: 0 abstractKeyword: abstract @16 classKeyword: class @25 - name: SimpleIdentifier - token: A @31 + name: A @31 leftBracket: { @33 rightBracket: } @34 ''', @@ -99,8 +97,7 @@ ClassDeclaration 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 @@ ClassDeclaration 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 @@ macro class A {} ClassDeclaration macroKeyword: macro classKeyword: class - name: SimpleIdentifier - token: A + name: A leftBracket: { rightBracket: } '''); @@ -198,8 +193,7 @@ macro class A = Object with M; assertParsedNodeText(node, r''' ClassTypeAlias typedefKeyword: class - name: SimpleIdentifier - token: A + name: A equals: = macroKeyword: macro superclass: NamedType @@ -284,8 +278,7 @@ enum E { 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 @@ enum E { 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 @@ enum E { 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 @@ enum E { var node = parseResult.findNode.enumConstantDeclaration('v.'); assertParsedNodeText(node, r''' EnumConstantDeclaration - name: SimpleIdentifier - token: v + name: v arguments: EnumConstantArguments typeArguments: TypeArgumentList leftBracket: < @@ -400,8 +390,7 @@ enum E { node, r''' EnumConstantDeclaration - name: SimpleIdentifier - token: v + name: v arguments: EnumConstantArguments typeArguments: TypeArgumentList leftBracket: < @@ -434,8 +423,7 @@ enum E { var node = parseResult.findNode.enumConstantDeclaration('v'); assertParsedNodeText(node, r''' EnumConstantDeclaration - name: SimpleIdentifier - token: v + name: v arguments: EnumConstantArguments typeArguments: TypeArgumentList leftBracket: < @@ -462,13 +450,11 @@ enum E { 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 @@ enum E { 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 @@ class A { assertParsedNodeText(node, r''' MethodDeclaration propertyKeyword: get - name: SimpleIdentifier - token: A + name: A body: ExpressionFunctionBody functionDefinition: => expression: IntegerLiteral @@ -551,8 +534,7 @@ class A { 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 726ed9d74d0..3c3c34d573b 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 @@ class AbstractRecoveryTest extends FastaParserTestCase { var astBuilder = unit.declarations[0] as ClassDeclaration; var method = astBuilder.members .whereType() - .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 61e6024db02..171836ed21c 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 @@ f(a, _s_, b) {} '''); } + @failingTest void test_fieldFormalParameter_noPeriod_last() { testRecovery(''' class C { @@ -579,6 +580,7 @@ class C { '''); } + @failingTest void test_fieldFormalParameter_noPeriod_notLast() { testRecovery(''' class C { diff --git a/pkg/analyzer/test/src/summary/elements_test.dart b/pkg/analyzer/test/src/summary/elements_test.dart index 566a19dadfc..4bc7ee64f34 100644 --- a/pkg/analyzer/test/src/summary/elements_test.dart +++ b/pkg/analyzer/test/src/summary/elements_test.dart @@ -4389,10 +4389,7 @@ library 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 @@ -22789,10 +22786,7 @@ library 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 +22858,7 @@ library 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 +22941,7 @@ library 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 +23023,7 @@ library 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 +23105,7 @@ library 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 +23184,7 @@ library 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 diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart index 99c68fee658..a7a5668b08d 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 @@ var fe1 = (int x) => x; 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 8119c605f43..6a3e71feb2f 100644 --- a/pkg/analyzer/test/util/ast_check.dart +++ b/pkg/analyzer/test/util/ast_check.dart @@ -81,13 +81,6 @@ extension EnumConstantDeclarationExtension (selected) => 'has arguments ${valueStr(selected)}', ); } - - CheckTarget get name { - return nest( - value.name, - (selected) => 'has name ${valueStr(selected)}', - ); - } } extension EnumDeclarationExtension on CheckTarget { @@ -99,15 +92,6 @@ extension EnumDeclarationExtension on CheckTarget { } } -extension FormalParameterExtension on CheckTarget { - CheckTarget get identifier { - return nest( - value.identifier, - (selected) => 'has identifier ${valueStr(selected)}', - ); - } -} - extension SimpleFormalParameterExtension on CheckTarget { CheckTarget get keyword { return nest( @@ -147,13 +131,6 @@ extension SimpleIdentifierExtension on CheckTarget { } extension SuperFormalParameterExtension on CheckTarget { - CheckTarget get identifier { - return nest( - value.identifier, - (selected) => 'has identifier ${valueStr(selected)}', - ); - } - CheckTarget 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 3f9f60828cf..27d9ac89a00 100644 --- a/pkg/analyzer/test/util/id_testing_helper.dart +++ b/pkg/analyzer/test/util/id_testing_helper.dart @@ -213,20 +213,20 @@ class AnalyzerCompiledData extends CompiledData { 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 @@ class AnalyzerCompiledData extends CompiledData { } 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 @@ class AnalyzerCompiledData extends CompiledData { .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 082f9292d56..2adf9cd6e09 100644 --- a/pkg/analyzer/test/utils.dart +++ b/pkg/analyzer/test/utils.dart @@ -30,7 +30,8 @@ class AstFinder { static ClassDeclaration getClass(CompilationUnit unit, String className) { NodeList 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 @@ class AstFinder { NodeList 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 @@ class AstFinder { if (classMember is FieldDeclaration) { NodeList 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 @@ class AstFinder { /// 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 @@ class AstFinder { NodeList 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 @@ class AstFinder { NodeList 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 @@ class AstFinder { NodeList 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 @@ class AstFinder { /// 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 d26eab11ac2..7f1c6fb48b8 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 @@ Map> _findErrorDeclarations() { .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 ec84066f7dc..a706d9ae66f 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 @@ class DartEditBuilderImpl extends EditBuilderImpl implements DartEditBuilder { {ArgumentList? argumentList, void Function()? bodyWriter, String? classNameGroupName, - SimpleIdentifier? constructorName, + String? constructorName, String? constructorNameGroupName, List? fieldNames, void Function()? initializerWriter, @@ -139,9 +139,9 @@ class DartEditBuilderImpl extends EditBuilderImpl implements DartEditBuilder { if (constructorName != null) { write('.'); if (constructorNameGroupName == null) { - write(constructorName.name); + write(constructorName); } else { - addSimpleLinkedEdit(constructorNameGroupName, constructorName.name); + addSimpleLinkedEdit(constructorNameGroupName, constructorName); } } write('('); 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 7257b10a113..df27d1ee0d8 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 @@ class CompletionTarget { // 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/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart index e567a2c7803..69c9428b20f 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 @@ class OpType { 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 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { @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 _OpTypeAstVisitor extends GeneralizingAstVisitor { // 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 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { 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 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { @override void visitFieldFormalParameter(FieldFormalParameter node) { - if (entity == node.identifier) { + if (entity == node.name) { optype.isPrefixed = true; } else { optype.includeReturnValueSuggestions = true; @@ -788,7 +793,7 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { @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 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { @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 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { @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 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { @override void visitNormalFormalParameter(NormalFormalParameter node) { - if (node.identifier != entity) { + if (node.name != entity) { optype.includeReturnValueSuggestions = true; optype.includeTypeNameSuggestions = true; } @@ -1153,7 +1158,7 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { @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 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor { // 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/visitors/local_declaration_visitor.dart b/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart index 996d339e166..7aaab56e776 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 @@ abstract class LocalDeclarationVisitor extends GeneralizingAstVisitor { 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 @@ abstract class LocalDeclarationVisitor extends GeneralizingAstVisitor { 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 @@ abstract class LocalDeclarationVisitor extends GeneralizingAstVisitor { 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 @@ abstract class LocalDeclarationVisitor extends GeneralizingAstVisitor { } 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 @@ abstract class LocalDeclarationVisitor extends GeneralizingAstVisitor { 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/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart index 2082af03402..9574bb54cc4 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 @@ abstract class DartEditBuilder implements EditBuilder { {ArgumentList? argumentList, void Function()? bodyWriter, String? classNameGroupName, - SimpleIdentifier? constructorName, + String? constructorName, String? constructorNameGroupName, List? 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 d3562216fd6..97b1c7f72e8 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 @@ class TypeMemberContributor implements CompletionContributor { // the most likely completion is a super expression with same name var containingMethod = expression.thisOrAncestorOfType(); - 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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @override void declaredClass(ClassDeclaration declaration) { - if (declaration.name.name == targetName) { + if (declaration.name2.lexeme == targetName) { // no type finished(); } @@ -148,7 +148,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @override void declaredClassTypeAlias(ClassTypeAlias declaration) { - if (declaration.name.name == targetName) { + if (declaration.name2.lexeme == targetName) { // no type finished(); } @@ -159,7 +159,7 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { } @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 @@ class _LocalBestTypeVisitor extends LocalDeclarationVisitor { @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 be4d3918942..238032ba7bd 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 @@ NavigationCollector computeDartNavigation( 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); } @@ -271,12 +280,12 @@ class _DartNavigationComputerVisitor extends RecursiveAstVisitor { 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 @@ class _DartNavigationComputerVisitor extends RecursiveAstVisitor { @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 @@ class _DartNavigationComputerVisitor extends RecursiveAstVisitor { 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); @@ -469,7 +478,7 @@ class _DartNavigationComputerVisitor extends RecursiveAstVisitor { 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 5eed266842b..6a8789cb060 100644 --- a/pkg/analyzer_plugin/lib/utilities/range_factory.dart +++ b/pkg/analyzer_plugin/lib/utilities/range_factory.dart @@ -117,6 +117,11 @@ class RangeFactory { 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/visitors/local_declaration_visitor_test.dart b/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart index f06dbb2b938..a9374fc0991 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 @@ class TestVisitor extends LocalDeclarationVisitor { 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/range_factory_test.dart b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart index 28e02056a2a..ad2aacb1767 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 @@ class B {} Future 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 @@ class B {} Future 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 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 @@ const class B {} Future 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 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 test_nodes_empty() async { @@ -567,7 +566,7 @@ const class B {} Future 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 @@ const class B {} Future 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 @@ const class B {} Future 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 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 _deletionRange(String code, diff --git a/pkg/nnbd_migration/lib/src/edge_builder.dart b/pkg/nnbd_migration/lib/src/edge_builder.dart index 6ce51d27aff..95eb275d880 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/nullability_suffix.dart'; 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'; @@ -2784,7 +2785,7 @@ class EdgeBuilder extends GeneralizingAstVisitor 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]; @@ -3062,9 +3063,10 @@ class EdgeBuilder extends GeneralizingAstVisitor 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; } diff --git a/pkg/nnbd_migration/lib/src/fix_aggregator.dart b/pkg/nnbd_migration/lib/src/fix_aggregator.dart index 14750b4e9cd..03b5fd2846d 100644 --- a/pkg/nnbd_migration/lib/src/fix_aggregator.dart +++ b/pkg/nnbd_migration/lib/src/fix_aggregator.dart @@ -1181,7 +1181,7 @@ class NodeChangeForSimpleFormalParameter 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/front_end/info_builder.dart b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart index efef1857566..6e5e0e12b6e 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 @@ class InfoBuilder { 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 @@ class InfoBuilder { 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 @@ class InfoBuilder { 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 @@ class InfoBuilder { 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 @@ class InfoBuilder { } 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 78e0b70723a..c834ce1d06f 100644 --- a/pkg/nnbd_migration/lib/src/node_builder.dart +++ b/pkg/nnbd_migration/lib/src/node_builder.dart @@ -128,7 +128,6 @@ class NodeBuilder extends GeneralizingAstVisitor @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 @@ class NodeBuilder extends GeneralizingAstVisitor @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 @@ class NodeBuilder extends GeneralizingAstVisitor _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 @@ class NodeBuilder extends GeneralizingAstVisitor @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 @@ class NodeBuilder extends GeneralizingAstVisitor @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, diff --git a/pkg/nnbd_migration/lib/src/utilities/hint_utils.dart b/pkg/nnbd_migration/lib/src/utilities/hint_utils.dart index 79d4eddfd63..a6585e600de 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 @@ extension FormalParameterExtensions on FormalParameter { } 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 @@ extension FormalParameterExtensions on FormalParameter { } 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/tool/codegen/extract_resource.dart b/pkg/nnbd_migration/tool/codegen/extract_resource.dart index 60b1719dc9b..bfc24903e97 100644 --- a/pkg/nnbd_migration/tool/codegen/extract_resource.dart +++ b/pkg/nnbd_migration/tool/codegen/extract_resource.dart @@ -38,7 +38,7 @@ main(List args) { 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 de5923e9ab1..b242525e2ea 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 @@ class SuperclassParameterVisitor extends ScrapeVisitor { // 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 @@ class SuperclassParameterVisitor extends ScrapeVisitor { 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 @@ class SuperclassParameterVisitor extends ScrapeVisitor { (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 7869df9fa76..789ed3ae28e 100644 --- a/pkg/scrape/lib/src/scrape_visitor.dart +++ b/pkg/scrape/lib/src/scrape_visitor.dart @@ -46,8 +46,8 @@ class ScrapeVisitor extends RecursiveAstVisitor { /// "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 @@ class ScrapeVisitor extends RecursiveAstVisitor { @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 @@ class ScrapeVisitor extends RecursiveAstVisitor { @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 {