AST: The generic conformance of a specialized conformance is always normal

This commit is contained in:
Slava Pestov
2024-03-06 11:01:43 -05:00
parent 08ba88f71b
commit aa4a1b2b6e
10 changed files with 49 additions and 35 deletions

View File

@@ -731,7 +731,7 @@ void NormalProtocolConformance::overrideWitness(ValueDecl *requirement,
SpecializedProtocolConformance::SpecializedProtocolConformance(
Type conformingType,
RootProtocolConformance *genericConformance,
NormalProtocolConformance *genericConformance,
SubstitutionMap substitutions)
: ProtocolConformance(ProtocolConformanceKind::Specialized, conformingType),
GenericConformance(genericConformance),
@@ -917,7 +917,7 @@ ProtocolConformance::subst(TypeSubstitutionFn subs,
/// Check if the replacement is a one-element pack with a scalar type.
static bool isVanishingTupleConformance(
RootProtocolConformance *generic,
NormalProtocolConformance *generic,
SubstitutionMap substitutions) {
if (!isa<BuiltinTupleDecl>(generic->getDeclContext()->getSelfNominalTypeDecl()))
return false;
@@ -1515,7 +1515,7 @@ ProtocolConformance *ProtocolConformance::getCanonicalConformance() {
auto genericConformance = spec->getGenericConformance();
return Ctx.getSpecializedConformance(
getType()->getCanonicalType(),
cast<RootProtocolConformance>(
cast<NormalProtocolConformance>(
genericConformance->getCanonicalConformance()),
spec->getSubstitutionMap().getCanonical());
}