AST: Check subject type in ProtocolConformanceRef::forAbstract()

This commit is contained in:
Slava Pestov
2025-03-26 11:07:10 -04:00
parent 4289b98f9b
commit cc05e1e79a
2 changed files with 25 additions and 13 deletions

View File

@@ -312,10 +312,8 @@ bool ProtocolConformanceRef::isCanonical() const {
if (isPack())
return getPack()->isCanonical();
if (isAbstract()) {
Type conformingType = getType();
return !conformingType || conformingType->isCanonical();
}
if (isAbstract())
return getType()->isCanonical();
return getConcrete()->isCanonical();
}
@@ -328,12 +326,8 @@ ProtocolConformanceRef::getCanonicalConformanceRef() const {
if (isPack())
return ProtocolConformanceRef(getPack()->getCanonicalConformance());
if (isAbstract()) {
Type conformingType = getType();
if (conformingType)
conformingType = conformingType->getCanonicalType();
return forAbstract(conformingType, getProtocol());
}
if (isAbstract())
return forAbstract(getType()->getCanonicalType(), getProtocol());
return ProtocolConformanceRef(getConcrete()->getCanonicalConformance());
}