Elements. Migrate lib/src/utilities/completion/optype.dart

Change-Id: I46f1f2e6de31d2583b21c3f96699e85e0b4feab6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/403840
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
index 9e364cf..19e2da8 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
@@ -2,16 +2,13 @@
 // 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.
 
-// ignore_for_file: analyzer_use_new_elements
-
 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';
+import 'package:analyzer/dart/element/element2.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/ast/ast.dart';
 import 'package:analyzer/src/dart/ast/extensions.dart';
-import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
 import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
 import 'package:analyzer_plugin/src/utilities/extensions/token.dart';
@@ -218,20 +215,20 @@
   void visitArgumentList(ArgumentList node) {
     final entity = this.entity;
     var parent = node.parent;
-    List<ParameterElement>? parameters;
+    List<FormalParameterElement>? parameters;
     if (parent is InstanceCreationExpression) {
-      Element? constructor;
+      Element2? constructor;
       var name = parent.constructorName.name;
       if (name != null) {
-        constructor = name.staticElement;
+        constructor = name.element;
       } else {
-        var classElem = parent.constructorName.type.element;
-        if (classElem is ClassElement) {
-          constructor = classElem.unnamedConstructor;
+        var classElem = parent.constructorName.type.element2;
+        if (classElem is ClassElement2) {
+          constructor = classElem.unnamedConstructor2;
         }
       }
-      if (constructor is ConstructorElement) {
-        parameters = constructor.parameters;
+      if (constructor is ConstructorElement2) {
+        parameters = constructor.formalParameters;
       } else if (constructor == null) {
         // If unresolved, then include named arguments
         optype.includeNamedArgumentSuggestions = true;
@@ -239,22 +236,22 @@
     } else if (parent is InvocationExpression) {
       var function = parent.function;
       if (function is SimpleIdentifier) {
-        var elem = function.staticElement;
-        if (elem is FunctionTypedElement) {
-          parameters = elem.parameters;
+        var elem = function.element;
+        if (elem is FunctionTypedElement2) {
+          parameters = elem.formalParameters;
         } else if (elem == null) {
           // If unresolved, then include named arguments
           optype.includeNamedArgumentSuggestions = true;
         }
       }
     } else if (parent is SuperConstructorInvocation) {
-      parameters = parent.staticElement?.parameters;
+      parameters = parent.element?.formalParameters;
     } else if (parent is RedirectingConstructorInvocation) {
-      parameters = parent.staticElement?.parameters;
+      parameters = parent.element?.formalParameters;
     } else if (parent is Annotation) {
-      var constructor = parent.element;
-      if (constructor is ConstructorElement) {
-        parameters = constructor.parameters;
+      var constructor = parent.element2;
+      if (constructor is ConstructorElement2) {
+        parameters = constructor.formalParameters;
       } else if (constructor == null) {
         // If unresolved, then include named arguments
         optype.includeNamedArgumentSuggestions = true;
@@ -651,7 +648,7 @@
           } else {
             var grandparent = parent.parent;
             if (grandparent is ArgumentList) {
-              var parameter = parent.staticParameterElement;
+              var parameter = parent.correspondingParameter;
               if (parameter != null) {
                 var parameterType = parameter.type;
                 if (parameterType is FunctionType &&
@@ -663,7 +660,7 @@
           }
         }
       } else if (parent is MethodDeclaration) {
-        type = parent.declaredElement?.returnType;
+        type = parent.declaredFragment?.element.returnType;
         if (type != null && type is VoidType) {
           optype.includeVoidReturnSuggestions = true;
         }
@@ -1155,10 +1152,10 @@
         optype.completionLocation = 'TypeArgumentList_argument';
       } else {
         var argKind = 'unnamed';
-        var method = node.methodName.staticElement;
-        if (method is MethodElement &&
-            method.parameters.isNotEmpty &&
-            method.parameters[0].isNamed) {
+        var method = node.methodName.element;
+        if (method is MethodElement2 &&
+            method.formalParameters.isNotEmpty &&
+            method.formalParameters[0].isNamed) {
           argKind = 'named';
         }
         optype.completionLocation = 'ArgumentList_method_$argKind';
@@ -1192,21 +1189,21 @@
 
       // Check for named parameters in constructor calls.
       var grandparent = node.parent?.parent;
-      Element? element;
+      Element2? element;
       if (grandparent is ConstructorReferenceNode) {
-        element = grandparent.staticElement;
+        element = grandparent.element;
       } else if (grandparent is InstanceCreationExpression) {
-        element = grandparent.constructorName.staticElement;
+        element = grandparent.constructorName.element;
       } else if (grandparent is MethodInvocation) {
-        element = grandparent.methodName.staticElement;
+        element = grandparent.methodName.element;
       }
-      if (element is ExecutableElement) {
-        var parameters = element.parameters;
+      if (element is ExecutableElement2) {
+        var parameters = element.formalParameters;
         var parameterElement = parameters.firstWhereOrNull((e) {
-          if (e is DefaultFieldFormalParameterElementImpl) {
-            return e.field?.name == node.name.label.name;
+          if (e is FieldFormalParameterElement2) {
+            return e.field2?.name3 == node.name.label.name;
           }
-          return e.isNamed && e.name == node.name.label.name;
+          return e.isNamed && e.name3 == node.name.label.name;
         });
         // Suggest tear-offs.
         if (parameterElement?.type is FunctionType) {