[Migrate] CorrectionProducer
Change-Id: Ia8fba6d745d04cef88d1beb7e6da7ed15d23fcb2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/402588
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server_plugin/analyzer_use_new_elements.txt b/pkg/analysis_server_plugin/analyzer_use_new_elements.txt
index 84fab9b..e69de29 100644
--- a/pkg/analysis_server_plugin/analyzer_use_new_elements.txt
+++ b/pkg/analysis_server_plugin/analyzer_use_new_elements.txt
@@ -1 +0,0 @@
-lib/edit/dart/correction_producer.dart
diff --git a/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart b/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart
index 81e8f29..268865b 100644
--- a/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart
+++ b/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/dart/analysis/analysis_options.dart';
import 'package:analyzer/dart/analysis/code_style_options.dart';
import 'package:analyzer/dart/analysis/results.dart';
-import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -341,10 +340,6 @@
/// The library element for the library in which a correction is being
/// produced.
- LibraryElement get libraryElement => unitResult.libraryElement;
-
- /// The library element for the library in which a correction is being
- /// produced.
LibraryElement2 get libraryElement2 => unitResult.libraryElement2;
@override
@@ -375,7 +370,7 @@
.getAnalysisOptionsForFile(unitResult.file);
InheritanceManager3 get inheritanceManager {
- return (libraryElement as LibraryElementImpl).session.inheritanceManager;
+ return (libraryElement2 as LibraryElementImpl).session.inheritanceManager;
}
/// Whether [node] is in a static context.
@@ -396,10 +391,6 @@
/// The library element for the library in which a correction is being
/// produced.
- LibraryElement get libraryElement => unitResult.libraryElement;
-
- /// The library element for the library in which a correction is being
- /// produced.
LibraryElement2 get libraryElement2 => unitResult.libraryElement2;
@override
@@ -466,21 +457,6 @@
/// Returns the class element associated with the [target], or `null` if there
/// is no such element.
- InterfaceElement? getTargetInterfaceElement(Expression target) {
- var type = target.staticType;
- if (type is InterfaceType) {
- return type.element;
- } else if (target is Identifier) {
- var element = target.staticElement;
- if (element is InterfaceElement) {
- return element;
- }
- }
- return null;
- }
-
- /// Returns the class element associated with the [target], or `null` if there
- /// is no such element.
InterfaceElement2? getTargetInterfaceElement2(Expression target) {
var type = target.staticType;
if (type is InterfaceType) {
@@ -512,7 +488,7 @@
if (conditionalExpression.condition == expression) {
return _coreTypeBool;
} else {
- var type = conditionalExpression.staticParameterElement?.type;
+ var type = conditionalExpression.correspondingParameter?.type;
if (type is InterfaceType && type.isDartCoreFunction) {
return FunctionTypeImpl(
typeFormals: const [],
@@ -526,19 +502,19 @@
}
// `=> myFunction();`.
if (parent is ExpressionFunctionBody) {
- var executable = expression.enclosingExecutableElement;
+ var executable = expression.enclosingExecutableElement2;
return executable?.returnType;
}
// `return myFunction();`.
if (parent is ReturnStatement) {
- var executable = expression.enclosingExecutableElement;
+ var executable = expression.enclosingExecutableElement2;
return executable?.returnType;
}
// `int v = myFunction();`.
if (parent is VariableDeclaration) {
var variableDeclaration = parent;
if (variableDeclaration.initializer == expression) {
- var variableElement = variableDeclaration.declaredElement;
+ var variableElement = variableDeclaration.declaredFragment?.element;
if (variableElement != null) {
return variableElement.type;
}
@@ -561,9 +537,9 @@
return assignment.writeType;
} else {
// `v += myFunction();`.
- var method = assignment.staticElement;
+ var method = assignment.element;
if (method != null) {
- var parameters = method.parameters;
+ var parameters = method.formalParameters;
if (parameters.length == 1) {
return parameters[0].type;
}
@@ -574,17 +550,17 @@
// `v + myFunction();`.
if (parent is BinaryExpression) {
var binary = parent;
- var method = binary.staticElement;
+ var method = binary.element;
if (method != null) {
if (binary.rightOperand == expression) {
- var parameters = method.parameters;
+ var parameters = method.formalParameters;
return parameters.length == 1 ? parameters[0].type : null;
}
}
}
// `foo( myFunction() );`.
if (parent is ArgumentList) {
- var parameter = expression.staticParameterElement;
+ var parameter = expression.correspondingParameter;
return parameter?.type;
}
// `bool`.
diff --git a/pkg/analyzer/lib/src/utilities/extensions/ast.dart b/pkg/analyzer/lib/src/utilities/extensions/ast.dart
index ae5df27..ebb8eec 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/ast.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/ast.dart
@@ -5,6 +5,7 @@
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/element2.dart';
import 'package:analyzer/src/dart/element/element.dart';
extension AstNodeExtension on AstNode {
@@ -42,6 +43,22 @@
return null;
}
+ /// The [ExecutableElement2] of the enclosing executable [AstNode].
+ ExecutableElement2? get enclosingExecutableElement2 {
+ for (var node in withParents) {
+ if (node is FunctionDeclaration) {
+ return node.declaredFragment?.element;
+ }
+ if (node is ConstructorDeclaration) {
+ return node.declaredFragment?.element;
+ }
+ if (node is MethodDeclaration) {
+ return node.declaredFragment?.element;
+ }
+ }
+ return null;
+ }
+
AstNode? get enclosingUnitChild {
for (var node in withParents) {
if (node.parent is CompilationUnit) {
diff --git a/pkg/linter/analyzer_use_new_elements.txt b/pkg/linter/analyzer_use_new_elements.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/pkg/linter/analyzer_use_new_elements.txt