Migrate two builder tests

Change-Id: I2886e2f50e5974185709716f01fd4defc74126fc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/400801
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analyzer/analyzer_use_new_elements.txt b/pkg/analyzer/analyzer_use_new_elements.txt
index ad0a001..aa6eeb4 100644
--- a/pkg/analyzer/analyzer_use_new_elements.txt
+++ b/pkg/analyzer/analyzer_use_new_elements.txt
@@ -172,8 +172,6 @@
 test/generated/type_system_test.dart
 test/id_tests/assigned_variables_test.dart
 test/id_tests/type_constraint_generation_test.dart
-test/src/dart/analysis/driver_caching_test.dart
-test/src/dart/analysis/driver_test.dart
 test/src/dart/analysis/index_test.dart
 test/src/dart/analysis/result_printer.dart
 test/src/dart/analysis/results/get_element_declaration_test.dart
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart
index ce6ae1a..ec68984 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart
@@ -6,7 +6,7 @@
 import 'dart:collection';
 
 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/src/dart/analysis/driver.dart';
@@ -141,7 +141,7 @@
 ''');
 
     await resolveTestFile();
-    assertType(findElement.field('f').type, 'Set<int>');
+    assertType(findElement2.field('f').type, 'Set<int>');
 
     // The summary for the library was linked.
     _assertContainsLinkedCycle({testFile}, andClear: true);
@@ -161,7 +161,7 @@
 ''');
 
     await resolveTestFile();
-    assertType(findElement.field('f').type, 'Set<int>');
+    assertType(findElement2.field('f').type, 'Set<int>');
 
     // We changed the initializer of the final field. But it is static, so
     // even though the class hsa a constant constructor, we don't need its
@@ -225,7 +225,7 @@
     // from the `LibraryReader` current at the moment of `exportNamespace`
     // access, not necessary the same that created this instance.
     var aResult = await driver.getLibraryByUri('package:test/a.dart');
-    var aElement = (aResult as LibraryElementResult).element;
+    var aElement = (aResult as LibraryElementResult).element2;
 
     // The element is valid at this point.
     expect(driver.isValidLibraryElement(aElement), isTrue);
@@ -241,7 +241,7 @@
     expect(driver.isValidLibraryElement(aElement), isFalse);
 
     // But its `exportNamespace` can be accessed.
-    expect(aElement.exportNamespace.definedNames, isNotEmpty);
+    expect(aElement.exportNamespace.definedNames2, isNotEmpty);
 
     // TODO(scheglov): This is not quite right.
     // When we return `LibraryElement` that is not fully read, and read
@@ -361,21 +361,21 @@
 
     var analysisContext = contextFor(macroFile);
 
-    Future<LibraryElement> getLibrary(String uriStr) async {
+    Future<LibraryElement2> getLibrary(String uriStr) async {
       var result = await analysisContext.currentSession.getLibraryByUri(uriStr)
           as LibraryElementResult;
-      return result.element;
+      return result.element2;
     }
 
     // This macro generates `MacroA`, but not `MacroB`.
     {
       var libraryA = await getLibrary('package:test/a.dart');
-      expect(libraryA.getClass('MacroA'), isNotNull);
-      expect(libraryA.getClass('MacroB'), isNull);
+      expect(libraryA.getClass2('MacroA'), isNotNull);
+      expect(libraryA.getClass2('MacroB'), isNull);
       // This propagates transitively.
       var libraryB = await getLibrary('package:test/b.dart');
-      expect(libraryB.exportNamespace.get('MacroA'), isNotNull);
-      expect(libraryB.exportNamespace.get('MacroB'), isNull);
+      expect(libraryB.exportNamespace.get2('MacroA'), isNotNull);
+      expect(libraryB.exportNamespace.get2('MacroB'), isNull);
     }
 
     _assertContainsLinkedCycle({a});
@@ -391,12 +391,12 @@
     // This macro generates `MacroB`, but not `MacroA`.
     {
       var libraryA = await getLibrary('package:test/a.dart');
-      expect(libraryA.getClass('MacroA'), isNull);
-      expect(libraryA.getClass('MacroB'), isNotNull);
+      expect(libraryA.getClass2('MacroA'), isNull);
+      expect(libraryA.getClass2('MacroB'), isNotNull);
       // This propagates transitively.
       var libraryB = await getLibrary('package:test/b.dart');
-      expect(libraryB.exportNamespace.get('MacroA'), isNull);
-      expect(libraryB.exportNamespace.get('MacroB'), isNotNull);
+      expect(libraryB.exportNamespace.get2('MacroA'), isNull);
+      expect(libraryB.exportNamespace.get2('MacroB'), isNotNull);
     }
 
     _assertContainsLinkedCycle({a});
@@ -665,7 +665,7 @@
 }
 
 extension on AnalysisDriver {
-  bool isValidLibraryElement(LibraryElement element) {
+  bool isValidLibraryElement(LibraryElement2 element) {
     return identical(element.session, currentSession);
   }
 }
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 571f19a..b8a06e0 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -7,6 +7,7 @@
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/visitor.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/src/dart/analysis/analysis_context_collection.dart';
@@ -14,7 +15,6 @@
 import 'package:analyzer/src/dart/analysis/driver_event.dart' as driver_events;
 import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/dart/analysis/status.dart';
-import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/lint/linter.dart';
 import 'package:analyzer/src/lint/registry.dart';
@@ -1421,10 +1421,10 @@
 
     var driver = driverFor(testFile);
 
-    Future<LibraryElementImpl> getLibrary(String shortName) async {
+    Future<LibraryElement2> getLibrary(String shortName) async {
       var uriStr = 'package:test/$shortName';
       var result = await driver.getLibraryByUriValid(uriStr);
-      return result.element as LibraryElementImpl;
+      return result.element2;
     }
 
     var a_element = await getLibrary('a.dart');
@@ -1500,10 +1500,10 @@
 
     var driver = driverFor(testFile);
 
-    Future<LibraryElementImpl> getLibrary(String shortName) async {
+    Future<LibraryElement2> getLibrary(String shortName) async {
       var uriStr = 'package:test/$shortName';
       var result = await driver.getLibraryByUriValid(uriStr);
-      return result.element as LibraryElementImpl;
+      return result.element2;
     }
 
     var b_element = await getLibrary('b.dart');
@@ -1572,21 +1572,18 @@
     driver.addFile2(a);
     driver.addFile2(b);
 
-    configuration.libraryConfiguration.unitConfiguration.variableTypesSelector =
-        (result) {
-      switch (result.uriStr) {
-        case 'package:test/a.dart':
-          return [
-            result.findElement.topVar('A1'),
-            result.findElement.topVar('A2'),
-          ];
-        case 'package:test/b.dart':
-          return [
-            result.findElement.topVar('B1'),
-          ];
-        default:
-          return [];
-      }
+    configuration.libraryConfiguration.unitConfiguration
+        .variableTypesSelector2 = (result) {
+      return switch (result.uriStr) {
+        'package:test/a.dart' => [
+            result.findElement2.topVar('A1'),
+            result.findElement2.topVar('A2'),
+          ],
+        'package:test/b.dart' => [
+            result.findElement2.topVar('B1'),
+          ],
+        _ => []
+      };
     };
 
     // We have results for both "a" and "b".
@@ -1662,12 +1659,12 @@
     driver.addFile2(a);
     driver.priorityFiles2 = [a];
 
-    configuration.libraryConfiguration.unitConfiguration.variableTypesSelector =
-        (result) {
+    configuration.libraryConfiguration.unitConfiguration
+        .variableTypesSelector2 = (result) {
       switch (result.uriStr) {
         case 'package:test/a.dart':
           return [
-            result.findElement.topVar('V'),
+            result.findElement2.topVar('V'),
           ];
         default:
           return [];
@@ -2470,8 +2467,8 @@
 
     var result = await driver.getLibraryByUri(aUriStr);
     result as LibraryElementResult;
-    expect(result.element.getClass('A'), isNotNull);
-    expect(result.element.getClass('B'), isNotNull);
+    expect(result.element2.getClass2('A'), isNotNull);
+    expect(result.element2.getClass2('B'), isNotNull);
 
     // It is an error to ask for a library when we know that it is a part.
     expect(
@@ -3359,10 +3356,10 @@
     var driver = driverFor(testFile);
     var collector = DriverEventCollector(driver);
 
-    configuration.libraryConfiguration.unitConfiguration.variableTypesSelector =
-        (result) {
+    configuration.libraryConfiguration.unitConfiguration
+        .variableTypesSelector2 = (result) {
       return [
-        result.findElement.topVar('foo'),
+        result.findElement2.topVar('foo'),
       ];
     };
 
@@ -3696,8 +3693,10 @@
     var driver = driverFor(testFile);
     var collector = DriverEventCollector(driver);
 
-    configuration.unitElementConfiguration.elementSelector = (unitElement) {
-      return unitElement.functions;
+    configuration.unitElementConfiguration.elementSelector2 = (unitFragment) {
+      return unitFragment.functions2
+          .map((fragment) => fragment.element)
+          .toList();
     };
 
     collector.getUnitElement('A1', a);
@@ -3709,8 +3708,8 @@
   flags: isLibrary
   enclosing: <null>
   selectedElements
-    package:test/a.dart::<fragment>::@function::foo
-    package:test/a.dart::<fragment>::@function::bar
+    package:test/a.dart::@function::foo
+    package:test/a.dart::@function::bar
 [status] idle
 ''');
   }
@@ -3781,8 +3780,8 @@
     collector.getUnitElement('AM1', a_macro);
     await collector.nextStatusIdle();
 
-    configuration.unitElementConfiguration.elementSelector = (unitElement) {
-      return unitElement.classes;
+    configuration.unitElementConfiguration.elementSelector2 = (fragment) {
+      return fragment.classes2.map((fragment) => fragment.element).toList();
     };
 
     // The enclosing element is an augmentation library, in a library.
@@ -3795,7 +3794,7 @@
   flags: isMacroPart isPart
   enclosing: package:test/a.dart::<fragment>
   selectedElements
-    package:test/a.dart::@fragment::package:test/a.macro.dart::@class::B
+    package:test/a.dart::@class::B
 [status] idle
 ''');
   }
@@ -3814,12 +3813,12 @@
     var driver = driverFor(testFile);
     var collector = DriverEventCollector(driver);
 
-    configuration.libraryConfiguration.unitConfiguration.variableTypesSelector =
-        (result) {
+    configuration.libraryConfiguration.unitConfiguration
+        .variableTypesSelector2 = (result) {
       switch (result.uriStr) {
         case 'package:test/b.dart':
           return [
-            result.findElement.topVar('B'),
+            result.findElement2.topVar('B'),
           ];
         default:
           return [];
@@ -5324,16 +5323,16 @@
     driver.addFile2(a);
     driver.addFile2(b);
 
-    configuration.libraryConfiguration.unitConfiguration.variableTypesSelector =
-        (result) {
+    configuration.libraryConfiguration.unitConfiguration
+        .variableTypesSelector2 = (result) {
       switch (result.uriStr) {
         case 'package:test/a.dart':
           return [
-            result.findElement.topVar('A'),
+            result.findElement2.topVar('A'),
           ];
         case 'package:test/b.dart':
           return [
-            result.findElement.topVar('B'),
+            result.findElement2.topVar('B'),
           ];
         default:
           return [];
diff --git a/pkg/analyzer/test/src/dart/analysis/result_printer.dart b/pkg/analyzer/test/src/dart/analysis/result_printer.dart
index 473642d..42e4837 100644
--- a/pkg/analyzer/test/src/dart/analysis/result_printer.dart
+++ b/pkg/analyzer/test/src/dart/analysis/result_printer.dart
@@ -5,6 +5,7 @@
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/ast/ast.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/error/error.dart';
 import 'package:analyzer/src/dart/analysis/driver_event.dart' as events;
@@ -287,6 +288,10 @@
     var elementsToWrite =
         configuration.unitElementConfiguration.elementSelector(unitElement);
     elementPrinter.writeElementList('selectedElements', elementsToWrite);
+
+    var elementsToWrite2 = configuration.unitElementConfiguration
+        .elementSelector2(unitElement as LibraryFragment);
+    elementPrinter.writeElementList2('selectedElements', elementsToWrite2);
   }
 }
 
@@ -580,6 +585,21 @@
           elementPrinter.writeType(variable.type);
         },
       );
+
+      var variableTypesToWrite2 = configuration.variableTypesSelector2(result);
+      sink.writeElements(
+        'selectedVariableTypes',
+        variableTypesToWrite2,
+        (variable) {
+          sink.writeIndent();
+          sink.write('${variable.name3}: ');
+          if (variable is LocalVariableElement2) {
+            elementPrinter.writeType(variable.type);
+          } else if (variable is TopLevelVariableElement2) {
+            elementPrinter.writeType(variable.type);
+          }
+        },
+      );
     });
   }
 }
@@ -590,6 +610,8 @@
   Map<String, DartType> Function(ResolvedUnitResult) typesSelector = (_) => {};
   List<VariableElement> Function(ResolvedUnitResult) variableTypesSelector =
       (_) => [];
+  List<Element2> Function(ResolvedUnitResult) variableTypesSelector2 =
+      (_) => [];
   bool Function(FileResult) withContentPredicate = (_) => false;
 }
 
@@ -610,4 +632,5 @@
 
 class UnitElementPrinterConfiguration {
   List<Element> Function(CompilationUnitElement) elementSelector = (_) => [];
+  List<Element2> Function(LibraryFragment) elementSelector2 = (_) => [];
 }