22// for details. All rights reserved. Use of this source code is governed by a
33// BSD-style license that can be found in the LICENSE file.
44
5- // ignore_for_file: analyzer_use_new_elements
6-
7- import 'package:analyzer/dart/element/element.dart' ;
5+ import 'package:analyzer/dart/element/element2.dart' ;
86import 'package:analyzer/dart/element/nullability_suffix.dart' ;
97import 'package:analyzer/dart/element/type.dart' ;
108import 'package:analyzer/src/dart/element/element.dart' ;
@@ -14,6 +12,7 @@ import 'package:analyzer/src/dart/element/type_algebra.dart';
1412import 'package:analyzer/src/dart/element/type_system.dart' ;
1513import 'package:analyzer/src/generated/utilities_dart.dart' ;
1614import 'package:analyzer/src/utilities/extensions/collection.dart' ;
15+ import 'package:analyzer/src/utilities/extensions/element.dart' ;
1716
1817class TopMergeHelper {
1918 final TypeSystemImpl typeSystem;
@@ -120,7 +119,7 @@ class TopMergeHelper {
120119 }
121120
122121 if (T is TypeParameterType && S is TypeParameterType ) {
123- if (T .element == S .element ) {
122+ if (T .element3 == S .element3 ) {
124123 return T ;
125124 } else {
126125 throw _TopMergeStateError (T , S , 'Not the same type parameters' );
@@ -131,13 +130,13 @@ class TopMergeHelper {
131130 }
132131
133132 FunctionTypeImpl _functionTypes (FunctionType T , FunctionType S ) {
134- var T_typeParameters = T .typeFormals ;
135- var S_typeParameters = S .typeFormals ;
133+ var T_typeParameters = T .typeParameters ;
134+ var S_typeParameters = S .typeParameters ;
136135 if (T_typeParameters .length != S_typeParameters .length) {
137136 throw _TopMergeStateError (T , S , 'Different number of type parameters' );
138137 }
139138
140- List <TypeParameterElement > R_typeParameters ;
139+ List <TypeParameterElement2 > R_typeParameters ;
141140 Substitution ? T_Substitution ;
142141 Substitution ? S_Substitution ;
143142
@@ -161,18 +160,18 @@ class TopMergeHelper {
161160 T_Substitution = mergedTypeParameters.aSubstitution;
162161 S_Substitution = mergedTypeParameters.bSubstitution;
163162 } else {
164- R_typeParameters = const < TypeParameterElement > [];
163+ R_typeParameters = const < TypeParameterElement2 > [];
165164 }
166165
167166 var R_returnType = mergeTypes (T .returnType, S .returnType);
168167
169- var T_parameters = T .parameters ;
170- var S_parameters = S .parameters ;
168+ var T_parameters = T .formalParameters ;
169+ var S_parameters = S .formalParameters ;
171170 if (T_parameters .length != S_parameters .length) {
172171 throw _TopMergeStateError (T , S , 'Different number of formal parameters' );
173172 }
174173
175- var R_parameters = < ParameterElementImpl > [];
174+ var R_parameters = < FormalParameterElementImpl > [];
176175 for (var i = 0 ; i < T_parameters .length; i++ ) {
177176 var T_parameter = T_parameters [i];
178177 var S_parameter = S_parameters [i];
@@ -182,7 +181,7 @@ class TopMergeHelper {
182181 throw _TopMergeStateError (T , S , 'Different formal parameter kinds' );
183182 }
184183
185- if (T_parameter .isNamed && T_parameter .name != S_parameter .name ) {
184+ if (T_parameter .isNamed && T_parameter .name3 != S_parameter .name3 ) {
186185 throw _TopMergeStateError (T , S , 'Different named parameter names' );
187186 }
188187
@@ -222,16 +221,16 @@ class TopMergeHelper {
222221 );
223222 }
224223
225- return FunctionTypeImpl (
226- typeFormals : R_typeParameters .toFixedList (),
227- parameters : R_parameters .toFixedList (),
224+ return FunctionTypeImpl . v2 (
225+ typeParameters : R_typeParameters .toFixedList (),
226+ formalParameters : R_parameters .toFixedList (),
228227 returnType: R_returnType ,
229228 nullabilitySuffix: NullabilitySuffix .none,
230229 );
231230 }
232231
233232 InterfaceType _interfaceTypes (InterfaceType T , InterfaceType S ) {
234- if (T .element != S .element ) {
233+ if (T .element3 != S .element3 ) {
235234 throw _TopMergeStateError (T , S , 'Different class elements' );
236235 }
237236
@@ -245,32 +244,35 @@ class TopMergeHelper {
245244 (i) => topMerge (T_arguments [i], S_arguments [i]),
246245 growable: false ,
247246 );
248- return T .element .instantiate (
247+ return T .element3 .instantiate (
249248 typeArguments: arguments,
250249 nullabilitySuffix: NullabilitySuffix .none,
251250 );
252251 }
253252 }
254253
255254 ParameterKind ? _parameterKind (
256- ParameterElement T_parameter ,
257- ParameterElement S_parameter ,
255+ FormalParameterElement T ,
256+ FormalParameterElement S ,
258257 ) {
259- // ignore: deprecated_member_use_from_same_package
260- var T_kind = T_parameter .parameterKind;
258+ if (T .isRequiredPositional && S .isRequiredPositional) {
259+ return ParameterKind .REQUIRED ;
260+ }
261+
262+ if (T .isOptionalPositional && S .isOptionalPositional) {
263+ return ParameterKind .REQUIRED ;
264+ }
261265
262- // ignore: deprecated_member_use_from_same_package
263- var S_kind = S_parameter .parameterKind;
266+ if (T .isRequiredNamed && S .isRequiredNamed) {
267+ return ParameterKind .NAMED_REQUIRED ;
268+ }
264269
265- if (T_kind == S_kind ) {
266- return T_kind ;
270+ if (T .isOptionalNamed && S .isOptionalNamed ) {
271+ return ParameterKind . NAMED ;
267272 }
268273
269274 // Legacy named vs. Required named.
270- if (T_kind == ParameterKind .NAMED_REQUIRED &&
271- S_kind == ParameterKind .NAMED ||
272- T_kind == ParameterKind .NAMED &&
273- S_kind == ParameterKind .NAMED_REQUIRED ) {
275+ if (T .isRequiredNamed && S .isNamed || T .isNamed || S .isRequiredNamed) {
274276 return ParameterKind .NAMED_REQUIRED ;
275277 }
276278
@@ -326,18 +328,17 @@ class TopMergeHelper {
326328 }
327329
328330 _MergeTypeParametersResult ? _typeParameters (
329- List <TypeParameterElement > aParameters,
330- List <TypeParameterElement > bParameters,
331+ List <TypeParameterElement2 > aParameters,
332+ List <TypeParameterElement2 > bParameters,
331333 ) {
332334 if (aParameters.length != bParameters.length) {
333335 return null ;
334336 }
335337
336- var newParameters = < TypeParameterElementImpl > [];
338+ var newParameters = < TypeParameterElementImpl2 > [];
337339 var newTypes = < TypeParameterType > [];
338340 for (var i = 0 ; i < aParameters.length; i++ ) {
339- var name = aParameters[i].name;
340- var newParameter = TypeParameterElementImpl .synthetic (name);
341+ var newParameter = aParameters[i].freshCopy ();
341342 newParameters.add (newParameter);
342343
343344 var newType = newParameter.instantiate (
@@ -346,8 +347,8 @@ class TopMergeHelper {
346347 newTypes.add (newType);
347348 }
348349
349- var aSubstitution = Substitution .fromPairs (aParameters, newTypes);
350- var bSubstitution = Substitution .fromPairs (bParameters, newTypes);
350+ var aSubstitution = Substitution .fromPairs2 (aParameters, newTypes);
351+ var bSubstitution = Substitution .fromPairs2 (bParameters, newTypes);
351352 for (var i = 0 ; i < aParameters.length; i++ ) {
352353 var a = aParameters[i];
353354 var b = bParameters[i];
@@ -361,6 +362,7 @@ class TopMergeHelper {
361362 bBound = bSubstitution.substituteType (bBound);
362363 var newBound = topMerge (aBound, bBound);
363364 newParameters[i].bound = newBound;
365+ newParameters[i].firstFragment.bound = newBound;
364366 } else {
365367 return null ;
366368 }
@@ -375,7 +377,7 @@ class TopMergeHelper {
375377}
376378
377379class _MergeTypeParametersResult {
378- final List <TypeParameterElement > typeParameters;
380+ final List <TypeParameterElement2 > typeParameters;
379381 final Substitution aSubstitution;
380382 final Substitution bSubstitution;
381383
0 commit comments