Elements. Migrate lib/src/cider/fixes.dart

Change-Id: I01867f48ac6d39c65a9a21961079232399e05c1b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/399029
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analysis_server/analyzer_use_new_elements.txt b/pkg/analysis_server/analyzer_use_new_elements.txt
index 00c26e4..b6bf96e 100644
--- a/pkg/analysis_server/analyzer_use_new_elements.txt
+++ b/pkg/analysis_server/analyzer_use_new_elements.txt
@@ -1,12 +1,10 @@
 lib/plugin/protocol/protocol_dart.dart
 lib/src/analysis_server.dart
-lib/src/cider/fixes.dart
 lib/src/cider/rename.dart
 lib/src/computer/computer_call_hierarchy.dart
 lib/src/computer/computer_documentation.dart
 lib/src/domains/analysis/implemented_dart.dart
 lib/src/domains/analysis/occurrences_dart.dart
-lib/src/handler/legacy/completion_get_suggestions2.dart
 lib/src/handler/legacy/edit_get_available_refactorings.dart
 lib/src/handler/legacy/legacy_handler.dart
 lib/src/handler/legacy/search_find_element_references.dart
diff --git a/pkg/analysis_server/lib/src/cider/fixes.dart b/pkg/analysis_server/lib/src/cider/fixes.dart
index ec1c45a6..87fb28b 100644
--- a/pkg/analysis_server/lib/src/cider/fixes.dart
+++ b/pkg/analysis_server/lib/src/cider/fixes.dart
@@ -6,7 +6,7 @@
 import 'package:analysis_server_plugin/edit/fix/fix.dart';
 import 'package:analysis_server_plugin/src/correction/dart_change_workspace.dart';
 import 'package:analysis_server_plugin/src/correction/fix_processor.dart';
-import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/element2.dart';
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/instrumentation/service.dart';
 import 'package:analyzer/source/line_info.dart';
@@ -83,10 +83,10 @@
   }) : super(instrumentationService: InstrumentationService.NULL_SERVICE);
 
   @override
-  Future<Map<LibraryElement, Element>> getTopLevelDeclarations(
+  Future<Map<LibraryElement2, Element2>> getTopLevelDeclarations(
     String name,
   ) async {
-    var result = <LibraryElement, Element>{};
+    var result = <LibraryElement2, Element2>{};
     var files = _fileResolver.getFilesWithTopLevelDeclarations(name);
     for (var file in files) {
       var kind = file.kind;
@@ -94,12 +94,12 @@
         var libraryElement = await _fileResolver.getLibraryByUri2(
           uriStr: file.uriStr,
         );
-        TopLevelDeclarations.addElement(result, libraryElement, name);
+        TopLevelDeclarations.addElement2(result, libraryElement, name);
       }
     }
     return result;
   }
 
   @override
-  Stream<LibraryElement> librariesWithExtensions(String memberName) async* {}
+  Stream<LibraryElement2> librariesWithExtensions(String memberName) async* {}
 }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart b/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
index 88a0c61..605a83b 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
@@ -287,7 +287,7 @@
       }
     }
     // Find new top-level declarations.
-    var librariesWithElements = await getTopLevelDeclarations2(name);
+    var librariesWithElements = await getTopLevelDeclarations(name);
     for (var libraryEntry in librariesWithElements.entries) {
       var libraryElement = libraryEntry.key;
       var declaration = libraryEntry.value;
@@ -426,7 +426,7 @@
       memberName,
     );
     var producers = <ResolvedCorrectionProducer>[];
-    await for (var libraryToImport in librariesWithExtensions2(memberName)) {
+    await for (var libraryToImport in librariesWithExtensions(memberName)) {
       producers.addAll(
         _importExtensionInLibrary(libraryToImport, targetType, name),
       );
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart b/pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart
index 6ba8ffc..f10bbc7 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/use_different_division_operator.dart
@@ -108,7 +108,7 @@
       otherOperator.lexeme,
     );
     var hasNoExtensionWithOtherDivisionOperator =
-        await librariesWithExtensions2(otherOperator.lexeme).where((library) {
+        await librariesWithExtensions(otherOperator.lexeme).where((library) {
           return library.exportedExtensions
               .havingMemberWithBaseName(name)
               .applicableTo(
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 f9862a6..27e65fe2 100644
--- a/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart
+++ b/pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart
@@ -27,7 +27,6 @@
 import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/utilities/extensions/ast.dart';
-import 'package:analyzer/src/utilities/extensions/element.dart';
 import 'package:analyzer_plugin/utilities/assist/assist.dart';
 import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
@@ -775,21 +774,10 @@
   /// library, and has the requested base name.
   ///
   /// For getters and setters the corresponding top-level variable is returned.
-  Future<Map<LibraryElement, Element>> getTopLevelDeclarations(
-    String baseName,
-  ) =>
-      _context.dartFixContext!.getTopLevelDeclarations(baseName);
-
-  /// Returns the mapping from a library (that is available to this context) to
-  /// a top-level declaration that is exported (not necessary declared) by this
-  /// library, and has the requested base name.
-  ///
-  /// For getters and setters the corresponding top-level variable is returned.
-  Future<Map<LibraryElement2, Element2>> getTopLevelDeclarations2(
+  Future<Map<LibraryElement2, Element2>> getTopLevelDeclarations(
     String baseName,
   ) async {
-    var map = await _context.dartFixContext!.getTopLevelDeclarations(baseName);
-    return map.map((key, value) => MapEntry(key.asElement2, value.asElement2!));
+    return await _context.dartFixContext!.getTopLevelDeclarations(baseName);
   }
 
   /// Returns whether the selection covers an operator of the given
@@ -816,13 +804,7 @@
 
   /// Returns libraries with extensions that declare non-static public
   /// extension members with the [memberName].
-  Stream<LibraryElement> librariesWithExtensions(String memberName) {
+  Stream<LibraryElement2> librariesWithExtensions(String memberName) {
     return _context.dartFixContext!.librariesWithExtensions(memberName);
   }
-
-  /// Returns libraries with extensions that declare non-static public
-  /// extension members with the [memberName].
-  Stream<LibraryElement2> librariesWithExtensions2(String memberName) {
-    return _context.dartFixContext!.librariesWithExtensions2(memberName);
-  }
 }
diff --git a/pkg/analysis_server_plugin/lib/edit/fix/dart_fix_context.dart b/pkg/analysis_server_plugin/lib/edit/fix/dart_fix_context.dart
index f460e48..f0652e5 100644
--- a/pkg/analysis_server_plugin/lib/edit/fix/dart_fix_context.dart
+++ b/pkg/analysis_server_plugin/lib/edit/fix/dart_fix_context.dart
@@ -5,7 +5,6 @@
 import 'package:analysis_server_plugin/edit/fix/fix_context.dart';
 import 'package:analysis_server_plugin/src/correction/change_workspace.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/error/error.dart';
 import 'package:analyzer/instrumentation/service.dart';
@@ -56,7 +55,7 @@
   /// this library, and has the requested base name.
   ///
   /// For getters and setters the corresponding top-level variable is returned.
-  Future<Map<LibraryElement, Element>> getTopLevelDeclarations(
+  Future<Map<LibraryElement2, Element2>> getTopLevelDeclarations(
       String name) async {
     return TopLevelDeclarations(unitResult).withName(name);
   }
@@ -64,34 +63,7 @@
   /// Returns libraries with extensions that declare non-static public
   /// extension members with the [memberName].
   // TODO(srawlins): The documentation above is wrong; `memberName` is unused.
-  Stream<LibraryElement> librariesWithExtensions(String memberName) async* {
-    var analysisContext = unitResult.session.analysisContext;
-    var analysisDriver = (analysisContext as DriverBasedAnalysisContext).driver;
-    await analysisDriver.discoverAvailableFiles();
-
-    var fsState = analysisDriver.fsState;
-    var filter = FileStateFilter(
-      fsState.getFileForPath(unitResult.path),
-    );
-
-    for (var file in fsState.knownFiles.toList()) {
-      if (!filter.shouldInclude(file)) {
-        continue;
-      }
-
-      var elementResult = await analysisDriver.getLibraryByUri(file.uriStr);
-      if (elementResult is! LibraryElementResult) {
-        continue;
-      }
-
-      yield elementResult.element;
-    }
-  }
-
-  /// Returns libraries with extensions that declare non-static public
-  /// extension members with the [memberName].
-  // TODO(srawlins): The documentation above is wrong; `memberName` is unused.
-  Stream<LibraryElement2> librariesWithExtensions2(String memberName) async* {
+  Stream<LibraryElement2> librariesWithExtensions(String memberName) async* {
     var analysisContext = unitResult.session.analysisContext;
     if (analysisContext is! DriverBasedAnalysisContext) {
       return;
diff --git a/pkg/analyzer/lib/src/dart/micro/analysis_context.dart b/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
index c32de27..d6d165a 100644
--- a/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
+++ b/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
@@ -19,6 +19,7 @@
 import 'package:analyzer/src/dart/micro/resolve_file.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/summary2/linked_element_factory.dart';
+import 'package:analyzer/src/utilities/extensions/element.dart';
 
 MicroContextObjects createMicroContextObjects({
   required FileResolver fileResolver,
@@ -162,7 +163,7 @@
     var element = await analysisContext.fileResolver.getLibraryByUri2(
       uriStr: uriStr,
     );
-    return LibraryElementResultImpl(element);
+    return LibraryElementResultImpl(element.asElement);
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index b0629a2..1fb3adb 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -8,6 +8,7 @@
 import 'package:analyzer/dart/analysis/features.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/error/error.dart';
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/source/line_info.dart';
@@ -389,7 +390,7 @@
     return fsState.getFilesWithTopLevelDeclarations(name);
   }
 
-  Future<LibraryElement> getLibraryByUri2({
+  Future<LibraryElement2> getLibraryByUri2({
     required String uriStr,
     OperationPerformanceImpl? performance,
   }) async {
diff --git a/pkg/analyzer/lib/src/services/top_level_declarations.dart b/pkg/analyzer/lib/src/services/top_level_declarations.dart
index ec6a75a..5e60820 100644
--- a/pkg/analyzer/lib/src/services/top_level_declarations.dart
+++ b/pkg/analyzer/lib/src/services/top_level_declarations.dart
@@ -112,7 +112,7 @@
   /// a top-level declaration that is exported (not necessary declared) by this
   /// library, and has the requested base name. For getters and setters the
   /// corresponding top-level variable is returned.
-  Future<Map<LibraryElement, Element>> withName(String baseName) async {
+  Future<Map<LibraryElement2, Element2>> withName(String baseName) async {
     var analysisDriver = _analysisContext.driver;
     await analysisDriver.discoverAvailableFiles();
 
@@ -121,7 +121,7 @@
       fsState.getFileForPath(resolvedUnit.path),
     );
 
-    var result = <LibraryElement, Element>{};
+    var result = <LibraryElement2, Element2>{};
 
     for (var file in fsState.knownFiles.toList()) {
       if (!filter.shouldInclude(file)) {
@@ -133,7 +133,7 @@
         continue;
       }
 
-      addElement(result, elementResult.element, baseName);
+      addElement2(result, elementResult.element2, baseName);
     }
 
     return result;
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index 43f8965..ab321e2 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -1479,14 +1479,14 @@
     var element = await fileResolver.getLibraryByUri2(
       uriStr: 'package:dart.my/a.dart',
     );
-    expect(element.definingCompilationUnit.classes, hasLength(1));
+    expect(element.classes, hasLength(1));
   }
 
   test_getLibraryByUri_notExistingFile() async {
     var element = await fileResolver.getLibraryByUri2(
       uriStr: 'package:dart.my/a.dart',
     );
-    expect(element.definingCompilationUnit.classes, isEmpty);
+    expect(element.classes, isEmpty);
   }
 
   test_getLibraryByUri_partOf() async {
@@ -1663,8 +1663,7 @@
     );
 
     // Ask types for top-level variables.
-    var b_unit = b_library.definingCompilationUnit;
-    for (var topLevelVariable in b_unit.topLevelVariables) {
+    for (var topLevelVariable in b_library.topLevelVariables) {
       topLevelVariable.type;
     }