Elements. Migrate ResolvedAstPrinter

Change-Id: Ie8090edb94063060da3eafbb37f469947e49bb0b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/418700
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index 09f2a92..af719ed 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -2,18 +2,15 @@
 // 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
-// ignore_for_file: deprecated_member_use_from_same_package
-
 import 'package:analyzer/dart/ast/doc_comment.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';
 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/src/utilities/extensions/string.dart';
 import 'package:analyzer_utilities/testing/tree_string_sink.dart';
 import 'package:test/test.dart';
@@ -244,7 +241,7 @@
     _sink.writeln('CatchClauseParameter');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -253,7 +250,7 @@
     _sink.writeln('ClassDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -262,7 +259,7 @@
     _sink.writeln('ClassTypeAlias');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -370,7 +367,7 @@
     _sink.writeln('ConstructorDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -423,7 +420,7 @@
     _sink.writeln('DeclaredIdentifier');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -435,14 +432,14 @@
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
       if (_withResolution) {
-        var element = node.declaredElement;
-        if (element != null) {
+        var fragment = node.declaredFragment;
+        if (fragment != null) {
           _sink.writeWithIndent('declaredElement: ');
-          _sink.writeIf(element.hasImplicitType, 'hasImplicitType ');
-          _sink.writeIf(element.isFinal, 'isFinal ');
-          _sink.writeln('${element.name}@${element.nameOffset}');
+          _sink.writeIf(fragment.hasImplicitType, 'hasImplicitType ');
+          _sink.writeIf(fragment.isFinal, 'isFinal ');
+          _sink.writeln('${fragment.name}@${fragment.nameOffset}');
           _sink.withIndent(() {
-            _writeType('type', element.type);
+            _writeType('type', fragment.type);
           });
         }
         _writePatternMatchedValueType(node);
@@ -456,7 +453,7 @@
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
       _assertFormalParameterDeclaredElement(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -513,7 +510,7 @@
       _writeNamedChildEntities(node);
       if (_withResolution) {
         _writeElement2('constructorElement2', node.constructorElement2);
-        _writeDeclaredElement(node.declaredElement);
+        _writeDeclaredFragment(node.declaredFragment);
       }
     });
   }
@@ -523,7 +520,7 @@
     _sink.writeln('EnumDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -567,7 +564,7 @@
     _sink.writeln('ExtensionDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -596,7 +593,7 @@
     _sink.writeln('ExtensionTypeDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -605,7 +602,7 @@
     _sink.writeln('FieldDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -615,7 +612,7 @@
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
       _assertFormalParameterDeclaredElement(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -696,7 +693,7 @@
     _sink.writeln('FunctionDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -713,7 +710,7 @@
     _sink.writeln('FunctionExpression');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
       _writeParameterElement(node);
       _writeType('staticType', node.staticType);
     });
@@ -747,7 +744,7 @@
     _sink.writeln('FunctionTypeAlias');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -757,7 +754,7 @@
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
       _assertFormalParameterDeclaredElement(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -781,7 +778,7 @@
     _sink.writeln('GenericTypeAlias');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -1018,7 +1015,7 @@
     _sink.writeln('MethodDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -1039,7 +1036,7 @@
     _sink.writeln('MixinDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -1408,7 +1405,7 @@
     _sink.writeln('SimpleFormalParameter');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -1481,7 +1478,7 @@
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
       _assertFormalParameterDeclaredElement(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -1569,7 +1566,7 @@
     _sink.writeln('TopLevelVariableDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -1604,7 +1601,7 @@
     _sink.writeln('TypeParameter');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -1621,7 +1618,7 @@
     _sink.writeln('VariableDeclaration');
     _sink.withIndent(() {
       _writeNamedChildEntities(node);
-      _writeDeclaredElement(node.declaredElement);
+      _writeDeclaredFragment(node.declaredFragment);
     });
   }
 
@@ -1686,9 +1683,9 @@
 
   void _assertFormalParameterDeclaredElement(FormalParameter node) {
     if (_withResolution) {
-      var declaredElement = node.declaredElement;
+      var declaredFragment = node.declaredFragment;
       var expected = _expectedFormalParameterElements(node);
-      _assertHasIdenticalElement(expected, declaredElement);
+      _assertHasIdenticalElement(expected, declaredFragment);
     }
   }
 
@@ -1731,29 +1728,29 @@
     return _tokenIdMap[token] ??= 'T${_tokenIdMap.length}';
   }
 
-  void _writeDeclaredElement(Element? element) {
+  void _writeDeclaredFragment(Fragment? fragment) {
     if (_withResolution) {
-      if (element is LocalVariableElement) {
+      if (fragment is LocalVariableElementImpl) {
         _sink.writeWithIndent('declaredElement:');
-        _sink.writeIf(element.hasImplicitType, ' hasImplicitType');
-        _sink.writeIf(element.isConst, ' isConst');
-        _sink.writeIf(element.isFinal, ' isFinal');
-        _sink.writeIf(element.isLate, ' isLate');
+        _sink.writeIf(fragment.hasImplicitType, ' hasImplicitType');
+        _sink.writeIf(fragment.isConst, ' isConst');
+        _sink.writeIf(fragment.isFinal, ' isFinal');
+        _sink.writeIf(fragment.isLate, ' isLate');
         // TODO(scheglov): This crashes.
         // _writeIf(element.hasInitializer, ' hasInitializer');
-        _sink.writeln(' ${element.name}@${element.nameOffset}');
+        _sink.writeln(' ${fragment.name}@${fragment.nameOffset}');
         _sink.withIndent(() {
-          _writeType('type', element.type);
+          _writeType('type', fragment.type);
         });
       } else {
-        _writeFragment('declaredElement', element as Fragment?);
-        if (element is ExecutableElement) {
+        _writeFragment('declaredElement', fragment);
+        if (fragment is ExecutableElementImpl) {
           _sink.withIndent(() {
-            _writeType('type', element.type);
+            _writeType('type', fragment.type);
           });
-        } else if (element is ParameterElement) {
+        } else if (fragment is ParameterElementImpl) {
           _sink.withIndent(() {
-            _writeType('type', element.type);
+            _writeType('type', fragment.type);
           });
         }
       }
@@ -1807,7 +1804,7 @@
 
   void _writeGenericFunctionTypeElement(
     String name,
-    GenericFunctionTypeElement? element,
+    GenericFunctionTypeElementImpl? element,
   ) {
     _sink.writeWithIndent('$name: ');
     if (element == null) {
@@ -1902,7 +1899,7 @@
     }
   }
 
-  void _writeParameterElements(List<ParameterElement> parameters) {
+  void _writeParameterElements(List<ParameterElementImpl> parameters) {
     _sink.writelnWithIndent('parameters');
     _sink.withIndent(() {
       for (var parameter in parameters) {
@@ -1916,7 +1913,7 @@
     });
   }
 
-  void _writeParameterKind(ParameterElement parameter) {
+  void _writeParameterKind(ParameterElementImpl parameter) {
     if (parameter.isOptionalNamed) {
       _sink.writelnWithIndent('kind: optional named');
     } else if (parameter.isOptionalPositional) {
@@ -2053,25 +2050,26 @@
   /// in the list of formal parameter elements of some declaration, e.g. of
   /// [ConstructorDeclaration], [MethodDeclaration], or a local
   /// [FunctionDeclaration].
-  static List<ParameterElement> _expectedFormalParameterElements(
+  static List<FormalParameterFragment> _expectedFormalParameterElements(
     FormalParameter node,
   ) {
     var parametersParent = node.parentFormalParameterList.parent;
     if (parametersParent is ConstructorDeclaration) {
-      var declaredElement = parametersParent.declaredElement!;
-      return declaredElement.parameters;
+      var declaredFragment = parametersParent.declaredFragment!;
+      return declaredFragment.formalParameters;
     } else if (parametersParent is FormalParameter) {
-      var declaredElement = parametersParent.declaredElement!;
-      return declaredElement.parameters;
+      var declaredFragment = parametersParent.declaredFragment!;
+      declaredFragment as ParameterElementImpl;
+      return declaredFragment.parameters;
     } else if (parametersParent is FunctionExpression) {
-      var declaredElement = parametersParent.declaredElement!;
-      return declaredElement.parameters;
+      var declaredFragment = parametersParent.declaredFragment!;
+      return declaredFragment.formalParameters;
     } else if (parametersParent is GenericFunctionTypeImpl) {
       var declaredFragment = parametersParent.declaredFragment!;
       return declaredFragment.parameters;
     } else if (parametersParent is MethodDeclaration) {
-      var declaredElement = parametersParent.declaredElement!;
-      return declaredElement.parameters;
+      var declaredFragment = parametersParent.declaredFragment!;
+      return declaredFragment.formalParameters;
     }
     throw UnimplementedError(
       '(${parametersParent.runtimeType}) $parametersParent',
@@ -2089,14 +2087,14 @@
   /// If `true`, elements of [InterfaceType] should be printed.
   bool withInterfaceTypeElements = false;
 
-  /// If `true`, [Expression.staticParameterElement] should be printed.
+  /// If `true`, [Expression.correspondingParameter] should be printed.
   bool withParameterElements = true;
 
-  /// If `true`, `redirectedConstructor` properties of [ConstructorElement]s
+  /// If `true`, `redirectedConstructor` properties of [ConstructorElement2]s
   /// should be printer.
   bool withRedirectedConstructors = false;
 
-  /// If `true`, `superConstructor` properties of [ConstructorElement]s
+  /// If `true`, `superConstructor` properties of [ConstructorElement2]s
   /// should be printer.
   bool withSuperConstructors = false;