Sema: Stop calling getAllConformances() on protocols

This commit is contained in:
Slava Pestov
2022-08-22 19:32:28 -04:00
parent b254dc2141
commit e8dc19a70b
5 changed files with 26 additions and 26 deletions

View File

@@ -8093,16 +8093,12 @@ allFromConditionalConformances(DeclContext *DC, Type baseTy,
}
if (auto *protocol = candidateDC->getSelfProtocolDecl()) {
SmallVector<ProtocolConformance *, 4> conformances;
if (!NTD->lookupConformance(protocol, conformances))
auto conformance = DC->getParentModule()->lookupConformance(
baseTy, protocol);
if (!conformance.isConcrete())
return false;
// This is opportunistic, there should be a way to narrow the
// list down to a particular declaration member comes from.
return llvm::any_of(
conformances, [](const ProtocolConformance *conformance) {
return !conformance->getConditionalRequirements().empty();
});
return !conformance.getConcrete()->getConditionalRequirements().empty();
}
return false;