AST: Remove no longer necessary checks of getSuperclassForDecl() result

This commit is contained in:
Slava Pestov
2025-06-09 12:41:59 -04:00
parent 3b6ee7cf0b
commit 7bbb29938e
2 changed files with 1 additions and 10 deletions

View File

@@ -862,8 +862,6 @@ DeclContext *ConformanceLookupTable::getConformingContext(
Type classTy = nominal->getDeclaredInterfaceType(); Type classTy = nominal->getDeclaredInterfaceType();
do { do {
Type superclassTy = classTy->getSuperclassForDecl(superclassDecl); Type superclassTy = classTy->getSuperclassForDecl(superclassDecl);
if (superclassTy->is<ErrorType>())
return nullptr;
auto inheritedConformance = swift::lookupConformance( auto inheritedConformance = swift::lookupConformance(
superclassTy, protocol, /*allowMissing=*/false); superclassTy, protocol, /*allowMissing=*/false);
if (inheritedConformance) if (inheritedConformance)
@@ -936,8 +934,6 @@ ConformanceLookupTable::getConformance(NominalTypeDecl *nominal,
// declared. // declared.
auto *conformingClass = cast<ClassDecl>(conformingNominal); auto *conformingClass = cast<ClassDecl>(conformingNominal);
Type superclassTy = type->getSuperclassForDecl(conformingClass); Type superclassTy = type->getSuperclassForDecl(conformingClass);
if (superclassTy->is<ErrorType>())
return nullptr;
// Look up the inherited conformance. // Look up the inherited conformance.
auto inheritedConformance = swift::lookupConformance( auto inheritedConformance = swift::lookupConformance(

View File

@@ -1146,12 +1146,7 @@ static Expr *buildStorageReference(AccessorDecl *accessor,
auto *baseClass = override->getDeclContext()->getSelfClassDecl(); auto *baseClass = override->getDeclContext()->getSelfClassDecl();
selfTypeForAccess = selfTypeForAccess->getSuperclassForDecl(baseClass); selfTypeForAccess = selfTypeForAccess->getSuperclassForDecl(baseClass);
// Error recovery path. We get an ErrorType here if getSuperclassForDecl() subs = selfTypeForAccess->getContextSubstitutionMap(baseClass);
// fails (because, for instance, a generic parameter of a generic nominal
// type cannot be resolved).
if (!selfTypeForAccess->is<ErrorType>()) {
subs = selfTypeForAccess->getContextSubstitutionMap(baseClass);
}
storage = override; storage = override;