Elements. Migrate RemoveLeadingUnderscore. Change-Id: I09535fc1fc2a65e2ed370e3fabe75a81a8f579fc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/387411 Reviewed-by: Samuel Rawlins <srawlins@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analysis_server/analyzer_use_new_elements.txt b/pkg/analysis_server/analyzer_use_new_elements.txt index 647da81..12d37c8 100644 --- a/pkg/analysis_server/analyzer_use_new_elements.txt +++ b/pkg/analysis_server/analyzer_use_new_elements.txt
@@ -341,6 +341,7 @@ lib/src/services/correction/dart/remove_interpolation_braces.dart lib/src/services/correction/dart/remove_invocation.dart lib/src/services/correction/dart/remove_late.dart +lib/src/services/correction/dart/remove_leading_underscore.dart lib/src/services/correction/dart/remove_lexeme.dart lib/src/services/correction/dart/remove_library_name.dart lib/src/services/correction/dart/remove_method_declaration.dart
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart index 8818208..607fb00 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart
@@ -6,7 +6,7 @@ import 'package:analysis_server/src/services/correction/util.dart'; import 'package:analysis_server_plugin/edit/dart/correction_producer.dart'; import 'package:analyzer/dart/ast/token.dart'; -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/src/dart/ast/ast.dart'; import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart'; import 'package:analyzer_plugin/utilities/fixes/fixes.dart'; @@ -29,22 +29,22 @@ Future<void> compute(ChangeBuilder builder) async { var node = this.node; Token? nameToken; - Element? element; + Element2? element; if (node is SimpleIdentifier) { nameToken = node.token; - element = node.staticElement; + element = node.element; } else if (node is FormalParameter) { nameToken = node.name; - element = node.declaredElement; + element = node.declaredFragment?.element; } else if (node is VariableDeclaration) { nameToken = node.name; - element = node.declaredElement; + element = node.declaredElement2 ?? node.declaredFragment?.element; } else if (node is DeclaredVariablePattern) { nameToken = node.name; - element = node.declaredElement; + element = node.declaredElement2; } else if (node is FunctionDeclaration) { nameToken = node.name; - element = node.declaredElement; + element = node.declaredElement2 ?? node.declaredFragment?.element; } else { return; } @@ -61,11 +61,11 @@ var newName = oldName.substring(1); // Find references to the identifier. - List<SimpleIdentifier>? references; - if (element is LocalVariableElement || element is FunctionElement) { + List<AstNode>? references; + if (element is LocalVariableElement2 || element is LocalFunctionElement) { var block = node.thisOrAncestorOfType<Block>(); if (block != null) { - references = findLocalElementReferences(block, element as LocalElement); + references = findLocalElementReferences3(block, element); var declaration = block.thisOrAncestorOfType<MethodDeclaration>() ?? block.thisOrAncestorOfType<FunctionDeclaration>(); @@ -80,7 +80,7 @@ } } } - } else if (element is ParameterElement) { + } else if (element is FormalParameterElement) { if (!element.isNamed) { var root = node .thisOrAncestorMatching((node) => @@ -89,13 +89,13 @@ node.parent is ConstructorDeclaration) ?.parent; if (root != null) { - references = findLocalElementReferences(root, element); + references = findLocalElementReferences3(root, element); } } - } else if (element is PrefixElement) { + } else if (element is PrefixElement2) { var root = node.thisOrAncestorOfType<CompilationUnit>(); if (root != null) { - references = findPrefixElementReferences(root, element); + references = findPrefixElementReferences2(root, element); } } if (references == null) {
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart index aa708a6..ca7de04 100644 --- a/pkg/analysis_server/lib/src/services/correction/util.dart +++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -52,8 +52,7 @@ /// Return references to the [element] inside the [root] node. /// (Unlike [findLocalElementReferences], visits list and record pattern assignments). -List<AstNode> findLocalElementReferences3( - AstNode root, LocalVariableElement2 element) { +List<AstNode> findLocalElementReferences3(AstNode root, Element2 element) { var collector = _ElementReferenceCollector3(element); root.accept(collector); return collector.references; @@ -67,6 +66,14 @@ return collector.references; } +/// Return references to the [element] inside the [root] node. +List<AstNode> findPrefixElementReferences2( + AstNode root, PrefixElement2 element) { + var collector = _ElementReferenceCollector3(element); + root.accept(collector); + return collector.references; +} + // TODO(scheglov): replace with nodes once there will be // [CompilationUnit.getComments]. /// Returns [SourceRange]s of all comments in [unit].
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart index cb71fda..4bfa225 100644 --- a/pkg/analyzer/lib/src/dart/ast/ast.dart +++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -5037,10 +5037,7 @@ @experimental @override BindPatternVariableElement2? get declaredElement2 { - if (declaredElement case BindPatternVariableElementImpl declaredElement) { - return BindPatternVariableElementImpl2(declaredElement); - } - return null; + return declaredElement?.element2; } @override
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index 1a68e7c..f2e04ee 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -189,7 +189,14 @@ /// pattern variable with the same name within the same pattern. bool isDuplicate = false; - BindPatternVariableElementImpl(this.node, super.name, super.offset); + BindPatternVariableElementImpl(this.node, super.name, super.offset) { + _element2 = BindPatternVariableElementImpl2(this); + } + + @override + BindPatternVariableElementImpl2 get element2 { + return _element2 as BindPatternVariableElementImpl2; + } } class BindPatternVariableElementImpl2 extends PatternVariableElementImpl2 @@ -6512,8 +6519,7 @@ /// A concrete implementation of a [LocalVariableElement]. class LocalVariableElementImpl extends NonParameterVariableElementImpl implements LocalVariableElement { - late final LocalVariableElementImpl2? element2 = - LocalVariableElementImpl2(this); + late LocalVariableElementImpl2 _element2 = LocalVariableElementImpl2(this); @override late bool hasInitializer; @@ -6522,6 +6528,8 @@ /// [offset]. LocalVariableElementImpl(super.name, super.offset); + LocalVariableElementImpl2 get element2 => _element2; + @override String get identifier { return '$name$nameOffset';
diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart index 8ae77ee..5ff6680 100644 --- a/pkg/analyzer/lib/src/utilities/extensions/element.dart +++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart
@@ -118,7 +118,7 @@ } else if (self is FunctionElementImpl && self.enclosingElement3 is! CompilationUnitElement) { // TODO(scheglov): update `FunctionElementImpl.element` return type? - return LocalFunctionElementImpl(self); + return self.element2; } else if (self is LabelElementImpl) { return self.element2; } else if (self is LocalVariableElementImpl) {