@@ -42,6 +42,7 @@ import '../kernel/implicit_field_type.dart';
4242import '../kernel/type_algorithms.dart' ;
4343import '../source/source_library_builder.dart' ;
4444import '../source/source_loader.dart' ;
45+ import '../source/type_parameter_factory.dart' ;
4546import '../util/helpers.dart' ;
4647import 'builder.dart' ;
4748import 'declaration_builders.dart' ;
@@ -494,12 +495,10 @@ abstract class NamedTypeBuilderImpl extends NamedTypeBuilder {
494495 @override
495496 TypeBuilder ? unalias (
496497 {Set <TypeAliasBuilder >? usedTypeAliasBuilders,
497- List <TypeBuilder >? unboundTypes,
498- List <StructuralParameterBuilder >? unboundTypeParameters}) {
498+ List <TypeBuilder >? unboundTypes}) {
499499 if (declaration is TypeAliasBuilder ) {
500- return (declaration as TypeAliasBuilder ).unalias (typeArguments,
501- usedTypeAliasBuilders: usedTypeAliasBuilders,
502- unboundTypeParameters: unboundTypeParameters);
500+ return (declaration as TypeAliasBuilder )
501+ .unalias (typeArguments, usedTypeAliasBuilders: usedTypeAliasBuilders);
503502 }
504503 return this ;
505504 }
@@ -837,7 +836,7 @@ abstract class NamedTypeBuilderImpl extends NamedTypeBuilder {
837836 TypeBuilder ? substituteRange (
838837 Map <TypeParameterBuilder , TypeBuilder > upperSubstitution,
839838 Map <TypeParameterBuilder , TypeBuilder > lowerSubstitution,
840- List < StructuralParameterBuilder > unboundTypeParameters ,
839+ TypeParameterFactory typeParameterFactory ,
841840 {final Variance variance = Variance .covariant }) {
842841 TypeDeclarationBuilder declaration = this .declaration;
843842 List <TypeBuilder >? arguments = this .typeArguments;
@@ -870,7 +869,7 @@ abstract class NamedTypeBuilderImpl extends NamedTypeBuilder {
870869 case ClassBuilder ():
871870 for (int i = 0 ; i < arguments.length; ++ i) {
872871 TypeBuilder ? substitutedArgument = arguments[i].substituteRange (
873- upperSubstitution, lowerSubstitution, unboundTypeParameters ,
872+ upperSubstitution, lowerSubstitution, typeParameterFactory ,
874873 variance: variance);
875874 if (substitutedArgument != null ) {
876875 newArguments ?? = arguments.toList ();
@@ -880,7 +879,7 @@ abstract class NamedTypeBuilderImpl extends NamedTypeBuilder {
880879 case ExtensionTypeDeclarationBuilder ():
881880 for (int i = 0 ; i < arguments.length; ++ i) {
882881 TypeBuilder ? substitutedArgument = arguments[i].substituteRange (
883- upperSubstitution, lowerSubstitution, unboundTypeParameters ,
882+ upperSubstitution, lowerSubstitution, typeParameterFactory ,
884883 variance: variance);
885884 if (substitutedArgument != null ) {
886885 newArguments ?? = arguments.toList ();
@@ -891,7 +890,7 @@ abstract class NamedTypeBuilderImpl extends NamedTypeBuilder {
891890 for (int i = 0 ; i < arguments.length; ++ i) {
892891 NominalParameterBuilder variable = declaration.typeParameters! [i];
893892 TypeBuilder ? substitutedArgument = arguments[i].substituteRange (
894- upperSubstitution, lowerSubstitution, unboundTypeParameters ,
893+ upperSubstitution, lowerSubstitution, typeParameterFactory ,
895894 variance: variance.combine (variable.variance));
896895 if (substitutedArgument != null ) {
897896 newArguments ?? = arguments.toList ();
@@ -926,15 +925,14 @@ abstract class NamedTypeBuilderImpl extends NamedTypeBuilder {
926925 TypeBuilder ? unaliasAndErase () {
927926 TypeDeclarationBuilder declaration = this .declaration;
928927 if (declaration is TypeAliasBuilder ) {
929- // We pass empty lists as [unboundTypes] and [unboundTypeParameters ]
928+ // We pass a fresh [TypeParameterFactory] to [TypeBuilder.unalias ]
930929 // because new builders can be generated during unaliasing. We ignore
931- // the returned builders, however, because they will not be used in the
932- // output and are needed only for the checks.
930+ // the created parameter builders, however, because they will not be used
931+ // in the output and are needed only for the checks.
933932 //
934933 // We also don't instantiate-to-bound raw types because it won't affect
935934 // the dependency cycle analysis.
936- return declaration
937- .unalias (typeArguments, unboundTypeParameters: [])? .unaliasAndErase ();
935+ return declaration.unalias (typeArguments)? .unaliasAndErase ();
938936 } else if (declaration is ExtensionTypeDeclarationBuilder ) {
939937 TypeBuilder ? representationType =
940938 declaration.declaredRepresentationTypeBuilder;
0 commit comments