Elements. Migrate CompletionTarget.
Change-Id: I3a7f4d13d0174ff282a1ead65616a8db685ef0d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/403903
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 7898075..df04de5 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -15928,6 +15928,10 @@
@override
Token get beginToken => token;
+ set element(Element2? element) {
+ staticElement = element?.asElement;
+ }
+
@override
Token get endToken => token;
diff --git a/pkg/analyzer_plugin/analyzer_use_new_elements.txt b/pkg/analyzer_plugin/analyzer_use_new_elements.txt
index b4dd1f2..3acbf58 100644
--- a/pkg/analyzer_plugin/analyzer_use_new_elements.txt
+++ b/pkg/analyzer_plugin/analyzer_use_new_elements.txt
@@ -1,6 +1,4 @@
-lib/src/utilities/completion/completion_target.dart
lib/src/utilities/completion/optype.dart
lib/src/utilities/navigation/navigation_dart.dart
lib/utilities/analyzer_converter.dart
-test/src/utilities/completion/completion_target_test.dart
test/utilities/analyzer_converter_test.dart
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 bdad033..1fd096c 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/dart/ast/syntactic_entity.dart';
import 'package:analyzer/dart/ast/token.dart';
-import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/source/source_range.dart';
@@ -106,8 +105,8 @@
final int? argIndex;
/// If the target is an argument in an [ArgumentList], then this is the
- /// invoked [ExecutableElement], otherwise this is `null`.
- ExecutableElement? _executableElement;
+ /// invoked [ExecutableElement2], otherwise this is `null`.
+ ExecutableElement2? _executableElement;
/// If the target is in an argument list of a [FunctionExpressionInvocation],
/// then this is the static type of the function being invoked, otherwise this
@@ -115,9 +114,9 @@
FunctionType? _functionType;
/// If the target is an argument in an [ArgumentList], then this is the
- /// corresponding [ParameterElement] in the invoked [ExecutableElement],
- /// otherwise this is `null`.
- ParameterElement? _parameterElement;
+ /// corresponding [FormalParameterElement] in the invoked
+ /// [ExecutableElement2], otherwise this is `null`.
+ FormalParameterElement? _parameterElement;
/// The enclosing [InterfaceElement2], or `null` if not in a class.
late final InterfaceElement2? enclosingInterfaceElement = () {
@@ -132,10 +131,11 @@
}
}();
- /// The enclosing [ExtensionElement], or `null` if not in an extension.
- late final ExtensionElement? enclosingExtensionElement = containingNode
+ /// The enclosing [ExtensionElement2], or `null` if not in an extension.
+ late final ExtensionElement2? enclosingExtensionElement = containingNode
.thisOrAncestorOfType<ExtensionDeclaration>()
- ?.declaredElement;
+ ?.declaredFragment
+ ?.element;
/// Compute the appropriate [CompletionTarget] for the given [offset] within
/// the [entryPoint].
@@ -282,7 +282,7 @@
var importPrefix = node.importPrefix;
if (importPrefix != null && identical(node.name2, entity)) {
return SimpleIdentifierImpl(importPrefix.name)
- ..staticElement = importPrefix.element;
+ ..element = importPrefix.element2;
}
}
if (node is PropertyAccess) {
@@ -301,8 +301,8 @@
}
/// If the target is an argument in an argument list, and the invocation is
- /// resolved, return the invoked [ExecutableElement].
- ExecutableElement? get executableElement {
+ /// resolved, return the invoked [ExecutableElement2].
+ ExecutableElement2? get executableElement {
if (_executableElement == null) {
AstNode? argumentList = containingNode;
if (argumentList is NamedExpression) {
@@ -314,26 +314,26 @@
var invocation = argumentList.parent;
- Element? executable;
+ Element2? executable;
if (invocation is Annotation) {
- executable = invocation.element;
+ executable = invocation.element2;
} else if (invocation is EnumConstantArguments) {
var enumConstant = invocation.parent;
if (enumConstant is! EnumConstantDeclaration) {
return null;
}
- executable = enumConstant.constructorElement;
+ executable = enumConstant.constructorElement2;
} else if (invocation is InstanceCreationExpression) {
- executable = invocation.constructorName.staticElement;
+ executable = invocation.constructorName.element;
} else if (invocation is MethodInvocation) {
- executable = invocation.methodName.staticElement;
+ executable = invocation.methodName.element;
} else if (invocation is RedirectingConstructorInvocation) {
- executable = invocation.staticElement;
+ executable = invocation.element;
} else if (invocation is SuperConstructorInvocation) {
- executable = invocation.staticElement;
+ executable = invocation.element;
}
- if (executable is ExecutableElement) {
+ if (executable is ExecutableElement2) {
_executableElement = executable;
}
}
@@ -453,13 +453,13 @@
}
/// If the target is an argument in an argument list, and the invocation is
- /// resolved, return the corresponding [ParameterElement].
- ParameterElement? get parameterElement {
+ /// resolved, return the corresponding [FormalParameterElement].
+ FormalParameterElement? get parameterElement {
if (_parameterElement == null) {
var executable = executableElement;
if (executable != null) {
_parameterElement = _getParameterElement(
- executable.parameters, containingNode, argIndex);
+ executable.formalParameters, containingNode, argIndex);
}
}
return _parameterElement;
@@ -699,17 +699,17 @@
return null;
}
- /// Return the [ParameterElement] that corresponds to the given [argumentNode]
- /// at the given [argumentIndex].
- static ParameterElement? _getParameterElement(
- List<ParameterElement> parameters,
+ /// Return the [FormalParameterElement] that corresponds to the given
+ /// [argumentNode] at the given [argumentIndex].
+ static FormalParameterElement? _getParameterElement(
+ List<FormalParameterElement> parameters,
AstNode argumentNode,
int? argumentIndex,
) {
if (argumentNode is NamedExpression) {
var name = argumentNode.name.label.name;
for (var parameter in parameters) {
- if (parameter.name == name) {
+ if (parameter.name3 == name) {
return parameter;
}
}
diff --git a/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart b/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
index 2412cfc..202095f 100644
--- a/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/src/test_utilities/find_element.dart';
import 'package:analyzer/src/test_utilities/find_element2.dart';
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
@@ -962,30 +962,30 @@
target = CompletionTarget.forOffset(result.unit, offset!);
}
- static String _executableNameStr(ExecutableElement executable) {
- var executableEnclosing = executable.enclosingElement3;
- if (executableEnclosing is CompilationUnitElement) {
- return executable.name;
- } else if (executable is ConstructorElement) {
- if (executable.name == '') {
- return '${executableEnclosing.name}.<init>';
+ static String _executableNameStr(ExecutableElement2 executable) {
+ var executableEnclosing = executable.enclosingElement2;
+ if (executableEnclosing is LibraryElement2) {
+ return executable.name3!;
+ } else if (executable is ConstructorElement2) {
+ if (executable.name3 == 'new') {
+ return '${executableEnclosing!.name3}.<init>';
} else {
- return '${executableEnclosing.name}.${executable.name}';
+ return '${executableEnclosing!.name3}.${executable.name3}';
}
- } else if (executable is MethodElement) {
- return '${executableEnclosing.name}.${executable.name}';
+ } else if (executable is MethodElement2) {
+ return '${executableEnclosing!.name3}.${executable.name3}';
}
fail('Unexpected element: $executable');
}
- static String _executableStr(ExecutableElement element) {
+ static String _executableStr(ExecutableElement2 element) {
var executableStr = _executableNameStr(element);
var typeStr = element.type.getDisplayString();
return '$executableStr: $typeStr';
}
- static String _parameterStr(ParameterElement element) {
+ static String _parameterStr(FormalParameterElement element) {
var typeStr = element.type.getDisplayString();
- return '${element.name}: $typeStr';
+ return '${element.name3}: $typeStr';
}
}