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/dart/element/type_visitor.dart' ;
@@ -18,6 +16,7 @@ import 'package:analyzer/src/generated/utilities_dart.dart';
1816import 'package:analyzer/src/summary2/function_type_builder.dart' ;
1917import 'package:analyzer/src/summary2/named_type_builder.dart' ;
2018import 'package:analyzer/src/summary2/record_type_builder.dart' ;
19+ import 'package:analyzer/src/utilities/extensions/element.dart' ;
2120
2221/// Helper visitor that clones a type if a nested type is replaced, and
2322/// otherwise returns `null` .
@@ -33,8 +32,8 @@ class ReplacementVisitor
3332 DartType ? createFunctionType ({
3433 required FunctionType type,
3534 required InstantiatedTypeAliasElement ? newAlias,
36- required List <TypeParameterElement >? newTypeParameters,
37- required List <ParameterElement >? newParameters,
35+ required List <TypeParameterElement2 >? newTypeParameters,
36+ required List <FormalParameterElement >? newParameters,
3837 required DartType ? newReturnType,
3938 required NullabilitySuffix ? newNullability,
4039 }) {
@@ -45,9 +44,9 @@ class ReplacementVisitor
4544 return null ;
4645 }
4746
48- return FunctionTypeImpl (
49- typeFormals : newTypeParameters ?? type.typeFormals ,
50- parameters : newParameters ?? type.parameters ,
47+ return FunctionTypeImpl . v2 (
48+ typeParameters : newTypeParameters ?? type.typeParameters ,
49+ formalParameters : newParameters ?? type.formalParameters ,
5150 returnType: newReturnType ?? type.returnType,
5251 nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
5352 alias: newAlias ?? type.alias,
@@ -56,8 +55,8 @@ class ReplacementVisitor
5655
5756 DartType ? createFunctionTypeBuilder ({
5857 required FunctionTypeBuilder type,
59- required List <TypeParameterElement >? newTypeParameters,
60- required List <ParameterElement >? newParameters,
58+ required List <TypeParameterElement2 >? newTypeParameters,
59+ required List <FormalParameterElement >? newParameters,
6160 required TypeImpl ? newReturnType,
6261 required NullabilitySuffix ? newNullability,
6362 }) {
@@ -67,11 +66,11 @@ class ReplacementVisitor
6766 return null ;
6867 }
6968
70- return FunctionTypeBuilder (
71- newTypeParameters ?? type.typeFormals ,
72- newParameters ?? type.parameters ,
73- newReturnType ?? type.returnType,
74- newNullability ?? type.nullabilitySuffix,
69+ return FunctionTypeBuilder . v2 (
70+ typeParameters : newTypeParameters ?? type.typeParameters ,
71+ formalParameters : newParameters ?? type.formalParameters ,
72+ returnType : newReturnType ?? type.returnType,
73+ nullabilitySuffix : newNullability ?? type.nullabilitySuffix,
7574 );
7675 }
7776
@@ -104,12 +103,12 @@ class ReplacementVisitor
104103 return null ;
105104 }
106105
107- return NamedTypeBuilder (
108- type.linker,
109- type.typeSystem,
110- type.element ,
111- newTypeArguments ?? type.arguments,
112- newNullability ?? type.nullabilitySuffix,
106+ return NamedTypeBuilder . v2 (
107+ linker : type.linker,
108+ typeSystem : type.typeSystem,
109+ element : type.element3 ,
110+ arguments : newTypeArguments ?? type.arguments,
111+ nullabilitySuffix : newNullability ?? type.nullabilitySuffix,
113112 );
114113 }
115114
@@ -134,8 +133,8 @@ class ReplacementVisitor
134133 }
135134
136135 var promotedBound = (type as TypeParameterTypeImpl ).promotedBound;
137- return TypeParameterTypeImpl (
138- element: type.element ,
136+ return TypeParameterTypeImpl . v2 (
137+ element: type.element3 ,
139138 nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
140139 promotedBound: newPromotedBound ?? promotedBound,
141140 alias: type.alias,
@@ -150,8 +149,8 @@ class ReplacementVisitor
150149 return null ;
151150 }
152151
153- return TypeParameterTypeImpl (
154- element: type.element ,
152+ return TypeParameterTypeImpl . v2 (
153+ element: type.element3 ,
155154 nullabilitySuffix: newNullability,
156155 alias: type.alias,
157156 );
@@ -164,42 +163,42 @@ class ReplacementVisitor
164163
165164 @override
166165 DartType ? visitFunctionType (FunctionType node) {
166+ // TODO(scheglov): avoid this cast
167+ node as FunctionTypeImpl ;
167168 var newNullability = visitNullability (node);
168169
169- List <TypeParameterElement >? newTypeParameters;
170- for (var i = 0 ; i < node.typeFormals .length; i++ ) {
171- var typeParameter = node.typeFormals [i];
170+ List <TypeParameterElementImpl2 >? newTypeParameters;
171+ for (var i = 0 ; i < node.typeParameters .length; i++ ) {
172+ var typeParameter = node.typeParameters [i];
172173 var bound = typeParameter.bound;
173174 if (bound != null ) {
174175 var newBound = visitTypeParameterBound (bound);
175176 if (newBound != null ) {
176- newTypeParameters ?? = node.typeFormals.toList (growable: false );
177- newTypeParameters[i] = TypeParameterElementImpl .synthetic (
178- typeParameter.name,
179- )..bound = newBound;
177+ newTypeParameters ?? = node.typeParameters.toList (growable: false );
178+ newTypeParameters[i] = typeParameter.freshCopy ()..bound = newBound;
180179 }
181180 }
182181 }
183182
184183 Substitution ? substitution;
185184 if (newTypeParameters != null ) {
186- var map = < TypeParameterElement , DartType > {};
185+ var map = < TypeParameterElement2 , DartType > {};
187186 for (var i = 0 ; i < newTypeParameters.length; ++ i) {
188- var typeParameter = node.typeFormals [i];
187+ var typeParameter = node.typeParameters [i];
189188 var newTypeParameter = newTypeParameters[i];
190189 map[typeParameter] = newTypeParameter.instantiate (
191190 nullabilitySuffix: NullabilitySuffix .none,
192191 );
193192 }
194193
195- substitution = Substitution .fromMap (map);
194+ substitution = Substitution .fromMap2 (map);
196195
197196 for (var i = 0 ; i < newTypeParameters.length; i++ ) {
198197 var newTypeParameter = newTypeParameters[i];
199198 var bound = newTypeParameter.bound;
200199 if (bound != null ) {
201200 var newBound = substitution.substituteType (bound);
202- ( newTypeParameter as TypeParameterElementImpl ) .bound = newBound;
201+ newTypeParameter.bound = newBound;
203202 }
204203 }
205204 }
@@ -228,28 +227,27 @@ class ReplacementVisitor
228227 }
229228 }
230229 if (newArguments != null ) {
231- newAlias = InstantiatedTypeAliasElementImpl (
232- element: alias.element ,
230+ newAlias = InstantiatedTypeAliasElementImpl . v2 (
231+ element: alias.element2 ,
233232 typeArguments: newArguments,
234233 );
235234 }
236235 }
237236
238237 changeVariance ();
239238
240- List <ParameterElement >? newParameters;
241- for (var i = 0 ; i < node.parameters .length; i++ ) {
242- var parameter = node.parameters [i];
239+ List <FormalParameterElement >? newParameters;
240+ for (var i = 0 ; i < node.formalParameters .length; i++ ) {
241+ var parameter = node.formalParameters [i];
243242
244243 var type = parameter.type;
245244 var newType = visitType (type);
246245
247- // ignore: deprecated_member_use_from_same_package
248246 var kind = parameter.parameterKind;
249247 var newKind = visitParameterKind (kind);
250248
251249 if (newType != null || newKind != null ) {
252- newParameters ?? = node.parameters .toList (growable: false );
250+ newParameters ?? = node.formalParameters .toList (growable: false );
253251 newParameters[i] = parameter.copyWith (
254252 type: newType,
255253 kind: newKind,
@@ -273,40 +271,38 @@ class ReplacementVisitor
273271 DartType ? visitFunctionTypeBuilder (FunctionTypeBuilder node) {
274272 var newNullability = visitNullability (node);
275273
276- List <TypeParameterElement >? newTypeParameters;
277- for (var i = 0 ; i < node.typeFormals .length; i++ ) {
278- var typeParameter = node.typeFormals [i];
274+ List <TypeParameterElementImpl2 >? newTypeParameters;
275+ for (var i = 0 ; i < node.typeParameters .length; i++ ) {
276+ var typeParameter = node.typeParameters [i];
279277 var bound = typeParameter.bound;
280278 if (bound != null ) {
281279 var newBound = visitTypeParameterBound (bound);
282280 if (newBound != null ) {
283- newTypeParameters ?? = node.typeFormals.toList (growable: false );
284- newTypeParameters[i] = TypeParameterElementImpl .synthetic (
285- typeParameter.name,
286- )..bound = newBound;
281+ newTypeParameters ?? = node.typeParameters.toList (growable: false );
282+ newTypeParameters[i] = typeParameter.freshCopy ()..bound = newBound;
287283 }
288284 }
289285 }
290286
291287 Substitution ? substitution;
292288 if (newTypeParameters != null ) {
293- var map = < TypeParameterElement , DartType > {};
289+ var map = < TypeParameterElement2 , DartType > {};
294290 for (var i = 0 ; i < newTypeParameters.length; ++ i) {
295- var typeParameter = node.typeFormals [i];
291+ var typeParameter = node.typeParameters [i];
296292 var newTypeParameter = newTypeParameters[i];
297293 map[typeParameter] = newTypeParameter.instantiate (
298294 nullabilitySuffix: NullabilitySuffix .none,
299295 );
300296 }
301297
302- substitution = Substitution .fromMap (map);
298+ substitution = Substitution .fromMap2 (map);
303299
304300 for (var i = 0 ; i < newTypeParameters.length; i++ ) {
305301 var newTypeParameter = newTypeParameters[i];
306302 var bound = newTypeParameter.bound;
307303 if (bound != null ) {
308304 var newBound = substitution.substituteType (bound);
309- ( newTypeParameter as TypeParameterElementImpl ) .bound = newBound;
305+ newTypeParameter.bound = newBound;
310306 }
311307 }
312308 }
@@ -326,9 +322,9 @@ class ReplacementVisitor
326322
327323 changeVariance ();
328324
329- List <ParameterElement >? newParameters;
330- for (var i = 0 ; i < node.parameters .length; i++ ) {
331- var parameter = node.parameters [i];
325+ List <FormalParameterElement >? newParameters;
326+ for (var i = 0 ; i < node.formalParameters .length; i++ ) {
327+ var parameter = node.formalParameters [i];
332328
333329 var type = parameter.type;
334330 var newType = visitType (type);
@@ -338,7 +334,7 @@ class ReplacementVisitor
338334 var newKind = visitParameterKind (kind);
339335
340336 if (newType != null || newKind != null ) {
341- newParameters ?? = node.parameters .toList (growable: false );
337+ newParameters ?? = node.formalParameters .toList (growable: false );
342338 newParameters[i] = parameter.copyWith (
343339 type: newType,
344340 kind: newKind,
@@ -365,19 +361,19 @@ class ReplacementVisitor
365361 var alias = type.alias;
366362 if (alias != null ) {
367363 var newArguments = _typeArguments (
368- alias.element.typeParameters ,
364+ alias.element2.typeParameters2 ,
369365 alias.typeArguments,
370366 );
371367 if (newArguments != null ) {
372- newAlias = InstantiatedTypeAliasElementImpl (
373- element: alias.element ,
368+ newAlias = InstantiatedTypeAliasElementImpl . v2 (
369+ element: alias.element2 ,
374370 typeArguments: newArguments,
375371 );
376372 }
377373 }
378374
379375 var newTypeArguments = _typeArguments (
380- type.element.typeParameters ,
376+ type.element3.typeParameters2 ,
381377 type.typeArguments,
382378 );
383379
@@ -398,12 +394,12 @@ class ReplacementVisitor
398394 DartType ? visitNamedTypeBuilder (NamedTypeBuilder type) {
399395 var newNullability = visitNullability (type);
400396
401- var parameters = const < TypeParameterElement > [];
402- var element = type.element ;
403- if (element is InterfaceElement ) {
404- parameters = element.typeParameters ;
405- } else if (element is TypeAliasElement ) {
406- parameters = element.typeParameters ;
397+ var parameters = const < TypeParameterElement2 > [];
398+ var element = type.element3 ;
399+ if (element is InterfaceElement2 ) {
400+ parameters = element.typeParameters2 ;
401+ } else if (element is TypeAliasElement2 ) {
402+ parameters = element.typeParameters2 ;
407403 }
408404
409405 var newArguments = _typeArguments (parameters, type.arguments);
@@ -440,12 +436,12 @@ class ReplacementVisitor
440436 var alias = type.alias;
441437 if (alias != null ) {
442438 var newArguments = _typeArguments (
443- alias.element.typeParameters ,
439+ alias.element2.typeParameters2 ,
444440 alias.typeArguments,
445441 );
446442 if (newArguments != null ) {
447- newAlias = InstantiatedTypeAliasElementImpl (
448- element: alias.element ,
443+ newAlias = InstantiatedTypeAliasElementImpl . v2 (
444+ element: alias.element2 ,
449445 typeArguments: newArguments,
450446 );
451447 }
@@ -521,7 +517,7 @@ class ReplacementVisitor
521517 }
522518
523519 DartType ? visitTypeArgument (
524- TypeParameterElement parameter,
520+ TypeParameterElement2 parameter,
525521 DartType argument,
526522 ) {
527523 return argument.accept (this );
@@ -533,9 +529,11 @@ class ReplacementVisitor
533529
534530 @override
535531 DartType ? visitTypeParameterType (TypeParameterType type) {
532+ // TODO(scheglov): avoid this cast
533+ type as TypeParameterTypeImpl ;
536534 var newNullability = visitNullability (type);
537535
538- var promotedBound = ( type as TypeParameterTypeImpl ) .promotedBound;
536+ var promotedBound = type.promotedBound;
539537 if (promotedBound != null ) {
540538 var newPromotedBound = promotedBound.accept (this );
541539 return createPromotedTypeParameterType (
@@ -562,7 +560,7 @@ class ReplacementVisitor
562560 }
563561
564562 List <DartType >? _typeArguments (
565- List <TypeParameterElement > parameters,
563+ List <TypeParameterElement2 > parameters,
566564 List <DartType > arguments,
567565 ) {
568566 if (arguments.length != parameters.length) {
0 commit comments