Elements. Remove InterfaceFragmentImpl.instantiateImpl()

Change-Id: I245cb954a12fa7c777855066423b83a1d6008586
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/431681
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index d685039..829902f 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -5108,7 +5108,7 @@
       } else {
         typeArguments = const [];
       }
-      return _thisType = firstFragment.instantiateImpl(
+      return _thisType = instantiateImpl(
         typeArguments: typeArguments,
         nullabilitySuffix: NullabilitySuffix.none,
       );
@@ -5477,16 +5477,6 @@
     _supertype = value as InterfaceTypeImpl?;
   }
 
-  InterfaceTypeImpl instantiateImpl({
-    required List<TypeImpl> typeArguments,
-    required NullabilitySuffix nullabilitySuffix,
-  }) {
-    return element.instantiateImpl(
-      typeArguments: typeArguments,
-      nullabilitySuffix: nullabilitySuffix,
-    );
-  }
-
   /// Builds constructors for this mixin application.
   void _buildMixinAppConstructors() {}
 
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index d8d4845..046ffad 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -2076,24 +2076,23 @@
       var type = _readFunctionType();
       return _readAliasElementArguments(type);
     } else if (tag == Tag.InterfaceType) {
-      var element = readElement() as InterfaceFragmentImpl;
+      var element = readElement2() as InterfaceElementImpl2;
       var typeArguments = _readTypeList();
       var nullability = _readNullability();
-      var type = InterfaceTypeImpl(
-        element: element.asElement2,
+      var type = element.instantiateImpl(
         typeArguments: typeArguments,
         nullabilitySuffix: nullability,
       );
       return _readAliasElementArguments(type);
     } else if (tag == Tag.InterfaceType_noTypeArguments_none) {
-      var element = readElement() as InterfaceFragmentImpl;
+      var element = readElement2() as InterfaceElementImpl2;
       var type = element.instantiateImpl(
         typeArguments: const [],
         nullabilitySuffix: NullabilitySuffix.none,
       );
       return _readAliasElementArguments(type);
     } else if (tag == Tag.InterfaceType_noTypeArguments_question) {
-      var element = readElement() as InterfaceFragmentImpl;
+      var element = readElement2() as InterfaceElementImpl2;
       var type = element.instantiateImpl(
         typeArguments: const [],
         nullabilitySuffix: NullabilitySuffix.question,
@@ -2110,12 +2109,9 @@
       var type = _readRecordType();
       return _readAliasElementArguments(type);
     } else if (tag == Tag.TypeParameterType) {
-      var element = readElement() as TypeParameterFragmentImpl;
+      var element = readElement2() as TypeParameterElementImpl2;
       var nullability = _readNullability();
-      var type = TypeParameterTypeImpl(
-        element3: element.asElement2,
-        nullabilitySuffix: nullability,
-      );
+      var type = element.instantiate(nullabilitySuffix: nullability);
       return _readAliasElementArguments(type);
     } else if (tag == Tag.VoidType) {
       var type = VoidTypeImpl.instance;
diff --git a/pkg/analyzer/test/generated/elements_types_mixin.dart b/pkg/analyzer/test/generated/elements_types_mixin.dart
index 543b9b3..66c6c75 100644
--- a/pkg/analyzer/test/generated/elements_types_mixin.dart
+++ b/pkg/analyzer/test/generated/elements_types_mixin.dart
@@ -27,7 +27,7 @@
 
   InterfaceTypeImpl get boolQuestion {
     var element = typeProvider.boolElement2;
-    return interfaceTypeQuestion2(element);
+    return interfaceTypeQuestion(element);
   }
 
   InterfaceTypeImpl get doubleNone {
@@ -37,7 +37,7 @@
 
   InterfaceTypeImpl get doubleQuestion {
     var element = typeProvider.doubleElement2;
-    return interfaceTypeQuestion2(element);
+    return interfaceTypeQuestion(element);
   }
 
   TypeImpl get dynamicType => DynamicTypeImpl.instance;
@@ -49,7 +49,7 @@
 
   InterfaceTypeImpl get functionQuestion {
     var element = typeProvider.functionElement2;
-    return interfaceTypeQuestion2(element);
+    return interfaceTypeQuestion(element);
   }
 
   InterfaceTypeImpl get intNone {
@@ -59,7 +59,7 @@
 
   InterfaceTypeImpl get intQuestion {
     var element = typeProvider.intElement2;
-    return interfaceTypeQuestion2(element);
+    return interfaceTypeQuestion(element);
   }
 
   TypeImpl get invalidType => InvalidTypeImpl.instance;
@@ -80,7 +80,7 @@
 
   InterfaceTypeImpl get numQuestion {
     var element = typeProvider.numElement2;
-    return interfaceTypeQuestion2(element);
+    return interfaceTypeQuestion(element);
   }
 
   InterfaceTypeImpl get objectNone {
@@ -90,7 +90,7 @@
 
   InterfaceTypeImpl get objectQuestion {
     var element = typeProvider.objectElement2;
-    return interfaceTypeQuestion2(element);
+    return interfaceTypeQuestion(element);
   }
 
   InterfaceTypeImpl get recordNone {
@@ -105,7 +105,7 @@
 
   InterfaceTypeImpl get stringQuestion {
     var element = typeProvider.stringElement2;
-    return interfaceTypeQuestion2(element);
+    return interfaceTypeQuestion(element);
   }
 
   LibraryElementImpl get testLibrary => throw UnimplementedError();
@@ -345,17 +345,6 @@
     );
   }
 
-  InterfaceTypeImpl interfaceType(
-    InterfaceFragmentImpl element, {
-    List<TypeImpl> typeArguments = const [],
-    required NullabilitySuffix nullabilitySuffix,
-  }) {
-    return element.instantiateImpl(
-      typeArguments: typeArguments,
-      nullabilitySuffix: nullabilitySuffix,
-    );
-  }
-
   InterfaceTypeImpl interfaceTypeNone(
     InterfaceElementImpl2 element, {
     List<TypeImpl> typeArguments = const [],
@@ -367,16 +356,6 @@
   }
 
   InterfaceTypeImpl interfaceTypeQuestion(
-    InterfaceFragmentImpl element, {
-    List<TypeImpl> typeArguments = const [],
-  }) {
-    return element.instantiateImpl(
-      typeArguments: typeArguments,
-      nullabilitySuffix: NullabilitySuffix.question,
-    );
-  }
-
-  InterfaceTypeImpl interfaceTypeQuestion2(
     InterfaceElementImpl2 element, {
     List<TypeImpl> typeArguments = const [],
   }) {
diff --git a/pkg/analyzer/test/src/dart/element/always_exhaustive_test.dart b/pkg/analyzer/test/src/dart/element/always_exhaustive_test.dart
index e99ab1a..e074216 100644
--- a/pkg/analyzer/test/src/dart/element/always_exhaustive_test.dart
+++ b/pkg/analyzer/test/src/dart/element/always_exhaustive_test.dart
@@ -41,13 +41,13 @@
   test_class_sealed() {
     var A = class_2(name: 'A', isSealed: true);
     isAlwaysExhaustive(interfaceTypeNone(A));
-    isAlwaysExhaustive(interfaceTypeQuestion2(A));
+    isAlwaysExhaustive(interfaceTypeQuestion(A));
   }
 
   test_enum() {
     var E = enum_2(name: 'E', constants: []);
     isAlwaysExhaustive(interfaceTypeNone(E));
-    isAlwaysExhaustive(interfaceTypeQuestion2(E));
+    isAlwaysExhaustive(interfaceTypeQuestion(E));
   }
 
   test_extensionType() {
diff --git a/pkg/analyzer/test/src/dart/element/flatten_type_test.dart b/pkg/analyzer/test/src/dart/element/flatten_type_test.dart
index 5af8c1c..4969a81 100644
--- a/pkg/analyzer/test/src/dart/element/flatten_type_test.dart
+++ b/pkg/analyzer/test/src/dart/element/flatten_type_test.dart
@@ -134,7 +134,7 @@
     var A = class_2(name: 'A', interfaces: [futureNone(intNone)]);
 
     _check(interfaceTypeNone(A), 'Future<int>');
-    _check(interfaceTypeQuestion2(A), null);
+    _check(interfaceTypeQuestion(A), null);
   }
 
   test_interfaceType() {
diff --git a/pkg/analyzer/test/src/dart/element/nullable_test.dart b/pkg/analyzer/test/src/dart/element/nullable_test.dart
index e55f89a..dfde08e 100644
--- a/pkg/analyzer/test/src/dart/element/nullable_test.dart
+++ b/pkg/analyzer/test/src/dart/element/nullable_test.dart
@@ -180,7 +180,7 @@
     );
 
     isNullable(
-      interfaceTypeQuestion2(
+      interfaceTypeQuestion(
         extensionType2('A', representationType: intNone, interfaces: [intNone]),
       ),
     );
@@ -317,7 +317,7 @@
 
   test_interface_extensionType2() {
     isPotentiallyNullable(
-      interfaceTypeQuestion2(extensionType2('A', representationType: intNone)),
+      interfaceTypeQuestion(extensionType2('A', representationType: intNone)),
     );
 
     isPotentiallyNullable(
diff --git a/pkg/analyzer/test/src/dart/element/upper_lower_bound_test.dart b/pkg/analyzer/test/src/dart/element/upper_lower_bound_test.dart
index 9b1a8a7..ab17853 100644
--- a/pkg/analyzer/test/src/dart/element/upper_lower_bound_test.dart
+++ b/pkg/analyzer/test/src/dart/element/upper_lower_bound_test.dart
@@ -1783,12 +1783,12 @@
 
   void test_directSuperclass_nullability() {
     var aElement = class_2(name: 'A');
-    var aQuestion = interfaceTypeQuestion2(aElement);
+    var aQuestion = interfaceTypeQuestion(aElement);
     var aNone = interfaceTypeNone(aElement);
 
     var bElementNone = class_2(name: 'B', superType: aNone);
 
-    var bNoneQuestion = interfaceTypeQuestion2(bElementNone);
+    var bNoneQuestion = interfaceTypeQuestion(bElementNone);
 
     var bNoneNone = interfaceTypeNone(bElementNone);
 
@@ -1842,7 +1842,7 @@
   void test_sameElement_nullability() {
     var aElement = class_2(name: 'A');
 
-    var aQuestion = interfaceTypeQuestion2(aElement);
+    var aQuestion = interfaceTypeQuestion(aElement);
     var aNone = interfaceTypeNone(aElement);
 
     void assertLUB(TypeImpl type1, TypeImpl type2, TypeImpl expected) {
@@ -1943,16 +1943,16 @@
 
   void test_sharedSuperclass1_nullability() {
     var aElement = class_2(name: 'A');
-    var aQuestion = interfaceTypeQuestion2(aElement);
+    var aQuestion = interfaceTypeQuestion(aElement);
     var aNone = interfaceTypeNone(aElement);
 
     var bElementNone = class_2(name: 'B', superType: aNone);
     var cElementNone = class_2(name: 'C', superType: aNone);
 
-    var bNoneQuestion = interfaceTypeQuestion2(bElementNone);
+    var bNoneQuestion = interfaceTypeQuestion(bElementNone);
     var bNoneNone = interfaceTypeNone(bElementNone);
 
-    var cNoneQuestion = interfaceTypeQuestion2(cElementNone);
+    var cNoneQuestion = interfaceTypeQuestion(cElementNone);
     var cNoneNone = interfaceTypeNone(cElementNone);
 
     void assertLUB(TypeImpl type1, TypeImpl type2, TypeImpl expected) {
@@ -2853,7 +2853,7 @@
     var C = class_2(name: 'C', typeParameters: [X]);
     var Y = typeParameter('Y');
     var Y_none = typeParameterTypeNone(Y);
-    Y.bound = interfaceTypeQuestion2(C, typeArguments: [Y_none]);
+    Y.bound = interfaceTypeQuestion(C, typeArguments: [Y_none]);
     var C_Y_none = interfaceTypeNone(C, typeArguments: [Y_none]);
     var Y_none_promoted = typeParameterTypeNone(Y, promotedBound: C_Y_none);
     var C_Never_none = interfaceTypeNone(C, typeArguments: [neverNone]);