Use SuppressibleProtocolSet as InvertibleProtocolSet

Collapse the representations of "suppressible" and "invertible"
protocol sets. Only minor adjustments were required.
This commit is contained in:
Doug Gregor
2024-03-29 09:05:28 -07:00
parent 8b22079291
commit 79b78acdf6
13 changed files with 35 additions and 53 deletions

View File

@@ -1087,7 +1087,7 @@ void NominalTypeDecl::prepareConformanceTable() const {
inverses.insert(InvertibleProtocolKind::Escapable);
bool hasSuppressedConformances = false;
for (auto ip : InvertibleProtocolSet::full()) {
for (auto ip : InvertibleProtocolSet::allKnown()) {
if (!inverses.contains(ip) ||
(isa<ClassDecl>(this) &&
!ctx.LangOpts.hasFeature(Feature::MoveOnlyClasses))) {
@@ -1281,7 +1281,7 @@ static SmallVector<ProtocolConformance *, 2> findSynthesizedConformances(
// Triggers synthesis of a possibly conditional conformance.
// For the unconditional ones, see NominalTypeDecl::prepareConformanceTable
for (auto ip : InvertibleProtocolSet::full())
for (auto ip : InvertibleProtocolSet::allKnown())
trySynthesize(getKnownProtocolKind(ip));
if (nominal->getASTContext().LangOpts.hasFeature(