@@ -128,9 +128,9 @@ class FreshTypeParameters {
128
128
FreshTypeParameters (this .freshTypeParameters, this .substitution);
129
129
130
130
FunctionTypeImpl applyToFunctionType (FunctionType type) {
131
- return FunctionTypeImpl (
132
- typeFormals : freshTypeParameters. map ((e) => e.firstFragment). toList () ,
133
- parameters : type.parameters .map ((parameter) {
131
+ return FunctionTypeImpl . v2 (
132
+ typeParameters : freshTypeParameters,
133
+ formalParameters : type.formalParameters .map ((parameter) {
134
134
var type = substitute (parameter.type);
135
135
return parameter.copyWith (type: type);
136
136
}).toFixedList (),
@@ -146,21 +146,15 @@ class FreshTypeParameters {
146
146
abstract class MapSubstitution extends Substitution {
147
147
const MapSubstitution ();
148
148
149
- Map <TypeParameterElement , DartType > get map;
150
-
151
- Map <TypeParameterElement2 , DartType > get map2 {
152
- return map.map ((key, value) {
153
- return MapEntry (key.asElement2, value);
154
- });
155
- }
149
+ Map <TypeParameterElement2 , DartType > get map;
156
150
}
157
151
158
152
abstract class Substitution {
159
153
static const MapSubstitution empty = _NullSubstitution .instance;
160
154
161
155
const Substitution ();
162
156
163
- DartType ? getSubstitute (TypeParameterElement parameter, bool upperBound);
157
+ DartType ? getSubstitute (TypeParameterElement2 parameter, bool upperBound);
164
158
165
159
InterfaceTypeImpl mapInterfaceType (InterfaceType type) {
166
160
return substituteType (type) as InterfaceTypeImpl ;
@@ -203,9 +197,7 @@ abstract class Substitution {
203
197
if (map.isEmpty) {
204
198
return _NullSubstitution .instance;
205
199
}
206
- return _MapSubstitution (
207
- map.map ((key, value) => MapEntry (key.asElement, value)),
208
- );
200
+ return _MapSubstitution (map.map ((key, value) => MapEntry (key, value)));
209
201
}
210
202
211
203
/// Substitutes the Nth parameter in [parameters] with the Nth type in
@@ -214,7 +206,7 @@ abstract class Substitution {
214
206
List <TypeParameterElement > parameters,
215
207
List <DartType > types,
216
208
) {
217
- return fromPairs2 (parameters.map ((p) => p.asElement2).toList (), types);
209
+ return fromPairs2 (parameters.map ((p) => p.asElement2).toFixedList (), types);
218
210
}
219
211
220
212
/// Substitutes the Nth parameter in [parameters] with the Nth type in
@@ -243,65 +235,65 @@ class _CombinedSubstitution extends Substitution {
243
235
_CombinedSubstitution (this .first, this .second);
244
236
245
237
@override
246
- DartType ? getSubstitute (TypeParameterElement parameter, bool upperBound) {
238
+ DartType ? getSubstitute (TypeParameterElement2 parameter, bool upperBound) {
247
239
return first.getSubstitute (parameter, upperBound) ??
248
240
second.getSubstitute (parameter, upperBound);
249
241
}
250
242
}
251
243
252
244
class _FreshTypeParametersSubstitutor extends _TypeSubstitutor {
253
- final Map <TypeParameterElement , DartType > substitution = {};
245
+ final Map <TypeParameterElement2 , DartType > substitution = {};
254
246
255
247
_FreshTypeParametersSubstitutor (_TypeSubstitutor super .outer);
256
248
257
249
@override
258
- List <TypeParameterElement > freshTypeParameters (
259
- List <TypeParameterElement > elements) {
250
+ List <TypeParameterElement2 > freshTypeParameters (
251
+ List <TypeParameterElement2 > elements) {
260
252
if (elements.isEmpty) {
261
- return const < TypeParameterElement > [];
253
+ return const < TypeParameterElement2 > [];
262
254
}
263
255
264
256
var freshElements = List .generate (elements.length, (index) {
265
257
// TODO(kallentu): : Clean up TypeParameterElementImpl casting once
266
258
// variance is added to the interface.
267
- var element = elements[index] as TypeParameterElementImpl ;
268
- var freshElement = TypeParameterElementImpl (element.name , - 1 );
259
+ var element = elements[index] as TypeParameterElementImpl2 ;
260
+ var freshElement = TypeParameterElementImpl (element.name3 ! , - 1 );
269
261
var freshType = freshElement.instantiate (
270
262
nullabilitySuffix: NullabilitySuffix .none,
271
263
);
272
264
substitution[element] = freshType;
273
265
if (! element.isLegacyCovariant) {
274
266
freshElement.variance = element.variance;
275
267
}
276
- return freshElement;
268
+ return freshElement.asElement2 ;
277
269
}, growable: false );
278
270
279
271
for (var i = 0 ; i < freshElements.length; i++ ) {
280
272
var element = elements[i];
281
273
var bound = element.bound;
282
274
if (bound != null ) {
283
275
var freshElement = freshElements[i];
284
- freshElement.bound = bound.accept (this );
276
+ freshElement.bound = bound.accept (this ) as TypeImpl ? ;
285
277
}
286
278
}
287
279
288
280
return freshElements;
289
281
}
290
282
291
283
@override
292
- DartType ? lookup (TypeParameterElement parameter, bool upperBound) {
284
+ DartType ? lookup (TypeParameterElement2 parameter, bool upperBound) {
293
285
return substitution[parameter];
294
286
}
295
287
}
296
288
297
289
class _MapSubstitution extends MapSubstitution {
298
290
@override
299
- final Map <TypeParameterElement , DartType > map;
291
+ final Map <TypeParameterElement2 , DartType > map;
300
292
301
293
_MapSubstitution (this .map);
302
294
303
295
@override
304
- DartType ? getSubstitute (TypeParameterElement parameter, bool upperBound) {
296
+ DartType ? getSubstitute (TypeParameterElement2 parameter, bool upperBound) {
305
297
return map[parameter];
306
298
}
307
299
@@ -315,11 +307,11 @@ class _NullSubstitution extends MapSubstitution {
315
307
const _NullSubstitution ();
316
308
317
309
@override
318
- Map <TypeParameterElement , DartType > get map => const {};
310
+ Map <TypeParameterElement2 , DartType > get map => const {};
319
311
320
312
@override
321
- DartType getSubstitute (TypeParameterElement parameter, bool upperBound) {
322
- return TypeParameterTypeImpl (
313
+ DartType getSubstitute (TypeParameterElement2 parameter, bool upperBound) {
314
+ return TypeParameterTypeImpl . v2 (
323
315
element: parameter,
324
316
nullabilitySuffix: NullabilitySuffix .none,
325
317
);
@@ -343,13 +335,13 @@ class _TopSubstitutor extends _TypeSubstitutor {
343
335
}
344
336
345
337
@override
346
- List <TypeParameterElement > freshTypeParameters (
347
- List <TypeParameterElement > parameters) {
338
+ List <TypeParameterElement2 > freshTypeParameters (
339
+ List <TypeParameterElement2 > parameters) {
348
340
throw 'Create a fresh environment first' ;
349
341
}
350
342
351
343
@override
352
- DartType ? lookup (TypeParameterElement parameter, bool upperBound) {
344
+ DartType ? lookup (TypeParameterElement2 parameter, bool upperBound) {
353
345
return substitution.getSubstitute (parameter, upperBound);
354
346
}
355
347
}
@@ -383,10 +375,10 @@ abstract class _TypeSubstitutor
383
375
target.useCounter++ ;
384
376
}
385
377
386
- List <TypeParameterElement > freshTypeParameters (
387
- List <TypeParameterElement > elements);
378
+ List <TypeParameterElement2 > freshTypeParameters (
379
+ List <TypeParameterElement2 > elements);
388
380
389
- DartType ? getSubstitute (TypeParameterElement parameter) {
381
+ DartType ? getSubstitute (TypeParameterElement2 parameter) {
390
382
_TypeSubstitutor ? environment = this ;
391
383
while (environment != null ) {
392
384
var replacement = environment.lookup (parameter, covariantContext);
@@ -403,7 +395,7 @@ abstract class _TypeSubstitutor
403
395
covariantContext = ! covariantContext;
404
396
}
405
397
406
- DartType ? lookup (TypeParameterElement parameter, bool upperBound);
398
+ DartType ? lookup (TypeParameterElement2 parameter, bool upperBound);
407
399
408
400
_FreshTypeParametersSubstitutor newInnerEnvironment () {
409
401
return _FreshTypeParametersSubstitutor (this );
@@ -428,7 +420,7 @@ abstract class _TypeSubstitutor
428
420
int before = useCounter;
429
421
430
422
var inner = this ;
431
- var typeFormals = type.typeFormals ;
423
+ var typeFormals = type.typeParameters ;
432
424
if (typeFormals.isNotEmpty) {
433
425
inner = newInnerEnvironment ();
434
426
typeFormals = inner.freshTypeParameters (typeFormals);
@@ -437,7 +429,7 @@ abstract class _TypeSubstitutor
437
429
// Invert the variance when translating parameters.
438
430
inner.invertVariance ();
439
431
440
- var parameters = type.parameters .map ((parameter) {
432
+ var parameters = type.formalParameters .map ((parameter) {
441
433
var type = parameter.type.accept (inner);
442
434
return parameter.copyWith (type: type);
443
435
}).toFixedList ();
@@ -449,9 +441,9 @@ abstract class _TypeSubstitutor
449
441
450
442
if (useCounter == before) return type;
451
443
452
- return FunctionTypeImpl (
453
- typeFormals : typeFormals,
454
- parameters : parameters,
444
+ return FunctionTypeImpl . v2 (
445
+ typeParameters : typeFormals,
446
+ formalParameters : parameters,
455
447
returnType: returnType,
456
448
nullabilitySuffix: type.nullabilitySuffix,
457
449
alias: alias,
@@ -478,9 +470,9 @@ abstract class _TypeSubstitutor
478
470
if (typeParameters.isNotEmpty) {
479
471
inner = newInnerEnvironment ();
480
472
typeParameters = inner
481
- .freshTypeParameters (typeParameters. map ((e) => e.asElement). toList () )
482
- .map ((e) => e.asElement2 as TypeParameterElementImpl2 )
483
- .toList ();
473
+ .freshTypeParameters (typeParameters)
474
+ .cast < TypeParameterElementImpl2 >( )
475
+ .toFixedList ();
484
476
}
485
477
486
478
// Invert the variance when translating parameters.
@@ -489,7 +481,7 @@ abstract class _TypeSubstitutor
489
481
var formalParameters = type.formalParameters.map ((formalParameter) {
490
482
var type = formalParameter.type.accept (inner);
491
483
return formalParameter.copyWith (type: type);
492
- }).toList ();
484
+ }).toFixedList ();
493
485
494
486
inner.invertVariance ();
495
487
@@ -593,7 +585,7 @@ abstract class _TypeSubstitutor
593
585
594
586
@override
595
587
DartType visitTypeParameterType (TypeParameterType type) {
596
- var argument = getSubstitute (type.element );
588
+ var argument = getSubstitute (type.element3 );
597
589
if (argument == null ) {
598
590
return type;
599
591
}
@@ -616,8 +608,8 @@ abstract class _TypeSubstitutor
616
608
if (alias == null ) {
617
609
return null ;
618
610
}
619
- return InstantiatedTypeAliasElementImpl (
620
- element: alias.element ,
611
+ return InstantiatedTypeAliasElementImpl . v2 (
612
+ element: alias.element2 ,
621
613
typeArguments: _mapList (alias.typeArguments),
622
614
);
623
615
}
0 commit comments