Skip to content

Commit 989d4ba

Browse files
authored
Merge pull request #72698 from DougGregor/suppress-suppressible
Rename "suppressible protocols" to "invertible protocols".
2 parents 51e148d + 2996428 commit 989d4ba

26 files changed

+355
-375
lines changed

include/swift/ABI/GenericContext.h

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include "swift/ABI/TargetLayout.h"
2222
#include "swift/ABI/MetadataValues.h"
2323
#include "swift/ABI/MetadataRef.h"
24-
#include "swift/ABI/SuppressibleProtocols.h"
24+
#include "swift/ABI/InvertibleProtocols.h"
2525
#include "swift/ABI/TrailingObjects.h"
2626
#include "swift/Demangling/Demangle.h"
2727

@@ -105,8 +105,8 @@ struct TargetGenericContextDescriptorHeader {
105105
return getNumArguments() > 0;
106106
}
107107

108-
bool hasConditionalSuppressedProtocols() const {
109-
return Flags.hasConditionalSuppressedProtocols();
108+
bool hasConditionalInvertedProtocols() const {
109+
return Flags.hasConditionalInvertedProtocols();
110110
}
111111
};
112112
using GenericContextDescriptorHeader =
@@ -143,19 +143,19 @@ class TargetGenericRequirementDescriptor {
143143
/// Only valid if the requirement has Layout kind.
144144
GenericRequirementLayoutKind Layout;
145145

146-
/// The set of suppressible protocols whose check is suppressed, along
147-
/// with the index of the generic parameter being suppressed.
146+
/// The set of invertible protocols whose check is disabled, along
147+
/// with the index of the generic parameter to which this applies.
148148
///
149149
/// The index is technically redundant with the subject type, but its
150150
/// storage is effectively free because this union is 32 bits anyway. The
151-
/// index 0xFFFF is reserved for "not a generic parameter", in case we
152-
/// need to use that in the future.
151+
/// index 0xFFFF is reserved for "not a generic parameter", in which case
152+
/// the constraints are on the subject type.
153153
///
154-
/// Only valid if the requirement has SuppressedProtocols kind.
154+
/// Only valid if the requirement has InvertedProtocols kind.
155155
struct {
156156
uint16_t GenericParamIndex;
157-
SuppressibleProtocolSet Protocols;
158-
} SuppressedProtocols;
157+
InvertibleProtocolSet Protocols;
158+
} InvertedProtocols;
159159
};
160160

161161
constexpr GenericRequirementFlags getFlags() const {
@@ -223,16 +223,16 @@ class TargetGenericRequirementDescriptor {
223223
return Layout;
224224
}
225225

226-
/// Retrieve the set of suppressed protocols.
227-
SuppressibleProtocolSet getSuppressedProtocols() const {
228-
assert(getKind() == GenericRequirementKind::SuppressedProtocols);
229-
return SuppressedProtocols.Protocols;
226+
/// Retrieve the set of inverted protocols.
227+
InvertibleProtocolSet getInvertedProtocols() const {
228+
assert(getKind() == GenericRequirementKind::InvertedProtocols);
229+
return InvertedProtocols.Protocols;
230230
}
231231

232-
/// Retrieve the suppressible protocol kind.
233-
uint16_t getSuppressedProtocolsGenericParamIndex() const {
234-
assert(getKind() == GenericRequirementKind::SuppressedProtocols);
235-
return SuppressedProtocols.GenericParamIndex;
232+
/// Retrieve the invertible protocol kind.
233+
uint16_t getInvertedProtocolsGenericParamIndex() const {
234+
assert(getKind() == GenericRequirementKind::InvertedProtocols);
235+
return InvertedProtocols.GenericParamIndex;
236236
}
237237

238238
/// Determine whether this generic requirement has a known kind.
@@ -246,7 +246,7 @@ class TargetGenericRequirementDescriptor {
246246
case GenericRequirementKind::SameConformance:
247247
case GenericRequirementKind::SameType:
248248
case GenericRequirementKind::SameShape:
249-
case GenericRequirementKind::SuppressedProtocols:
249+
case GenericRequirementKind::InvertedProtocols:
250250
return true;
251251
}
252252

@@ -299,24 +299,24 @@ struct GenericPackShapeDescriptor {
299299
};
300300

301301
/// A count for the number of requirements for the number of requirements
302-
/// for a given conditional conformance to a suppressible protocols.
303-
struct ConditionalSuppressibleProtocolsRequirementCount {
302+
/// for a given conditional conformance to a invertible protocols.
303+
struct ConditionalInvertibleProtocolsRequirementCount {
304304
uint16_t count;
305305
};
306306

307-
/// A suppressible protocol set used for the conditional conformances in a
307+
/// A invertible protocol set used for the conditional conformances in a
308308
/// generic context.
309-
struct ConditionalSuppressibleProtocolSet: SuppressibleProtocolSet {
310-
using SuppressibleProtocolSet::SuppressibleProtocolSet;
309+
struct ConditionalInvertibleProtocolSet: InvertibleProtocolSet {
310+
using InvertibleProtocolSet::InvertibleProtocolSet;
311311
};
312312

313313
/// A generic requirement for describing a conditional conformance to a
314-
/// suppressible protocol.
314+
/// invertible protocol.
315315
///
316316
/// This type is equivalent to a `TargetGenericRequirementDescriptor`, and
317317
/// differs only because it needs to occur alongside
318318
template<typename Runtime>
319-
struct TargetConditionalSuppressibleProtocolRequirement: TargetGenericRequirementDescriptor<Runtime> { };
319+
struct TargetConditionalInvertibleProtocolRequirement: TargetGenericRequirementDescriptor<Runtime> { };
320320

321321
/// An array of generic parameter descriptors, all
322322
/// GenericParamDescriptor::implicit(), which is by far
@@ -478,27 +478,27 @@ class TrailingGenericContextObjects<TargetSelf<Runtime>,
478478
TargetGenericRequirementDescriptor<Runtime>,
479479
GenericPackShapeHeader,
480480
GenericPackShapeDescriptor,
481-
ConditionalSuppressibleProtocolSet,
482-
ConditionalSuppressibleProtocolsRequirementCount,
483-
TargetConditionalSuppressibleProtocolRequirement<Runtime>,
481+
ConditionalInvertibleProtocolSet,
482+
ConditionalInvertibleProtocolsRequirementCount,
483+
TargetConditionalInvertibleProtocolRequirement<Runtime>,
484484
FollowingTrailingObjects...>
485485
{
486486
protected:
487487
using Self = TargetSelf<Runtime>;
488488
using GenericContextHeaderType = TargetGenericContextHeaderType<Runtime>;
489489
using GenericRequirementDescriptor =
490490
TargetGenericRequirementDescriptor<Runtime>;
491-
using GenericConditionalSuppressibleProtocolRequirement =
492-
TargetConditionalSuppressibleProtocolRequirement<Runtime>;
491+
using GenericConditionalInvertibleProtocolRequirement =
492+
TargetConditionalInvertibleProtocolRequirement<Runtime>;
493493
using TrailingObjects = swift::ABI::TrailingObjects<Self,
494494
GenericContextHeaderType,
495495
GenericParamDescriptor,
496496
GenericRequirementDescriptor,
497497
GenericPackShapeHeader,
498498
GenericPackShapeDescriptor,
499-
ConditionalSuppressibleProtocolSet,
500-
ConditionalSuppressibleProtocolsRequirementCount,
501-
GenericConditionalSuppressibleProtocolRequirement,
499+
ConditionalInvertibleProtocolSet,
500+
ConditionalInvertibleProtocolsRequirementCount,
501+
GenericConditionalInvertibleProtocolRequirement,
502502
FollowingTrailingObjects...>;
503503
friend TrailingObjects;
504504

@@ -528,81 +528,81 @@ class TrailingGenericContextObjects<TargetSelf<Runtime>,
528528
return getFullGenericContextHeader();
529529
}
530530

531-
bool hasConditionalSuppressedProtocols() const {
531+
bool hasConditionalInvertedProtocols() const {
532532
if (!asSelf()->isGeneric())
533533
return false;
534534

535-
return getGenericContextHeader().hasConditionalSuppressedProtocols();
535+
return getGenericContextHeader().hasConditionalInvertedProtocols();
536536
}
537537

538-
const SuppressibleProtocolSet &
539-
getConditionalSuppressedProtocols() const {
540-
assert(hasConditionalSuppressedProtocols());
538+
const InvertibleProtocolSet &
539+
getConditionalInvertedProtocols() const {
540+
assert(hasConditionalInvertedProtocols());
541541
return *this->template
542-
getTrailingObjects<ConditionalSuppressibleProtocolSet>();
542+
getTrailingObjects<ConditionalInvertibleProtocolSet>();
543543
}
544544

545-
/// Retrieve the counts for # of conditional suppressible protocols for each
546-
/// conditional conformance to a suppressible protocol.
545+
/// Retrieve the counts for # of conditional invertible protocols for each
546+
/// conditional conformance to a invertible protocol.
547547
///
548548
/// The counts are cumulative, so the first entry in the array is the
549549
/// number of requirements for the first conditional conformance. The
550550
/// second entry in the array is the number of requirements in the first
551551
/// and second conditional conformances. The last entry is, therefore, the
552552
/// total count of requirements in the structure.
553-
llvm::ArrayRef<ConditionalSuppressibleProtocolsRequirementCount>
554-
getConditionalSuppressibleProtocolRequirementCounts() const {
555-
if (!asSelf()->hasConditionalSuppressedProtocols())
553+
llvm::ArrayRef<ConditionalInvertibleProtocolsRequirementCount>
554+
getConditionalInvertibleProtocolRequirementCounts() const {
555+
if (!asSelf()->hasConditionalInvertedProtocols())
556556
return {};
557557

558558
return {
559559
this->template
560-
getTrailingObjects<ConditionalSuppressibleProtocolsRequirementCount>(),
561-
getNumConditionalSuppressibleProtocolsRequirementCounts()
560+
getTrailingObjects<ConditionalInvertibleProtocolsRequirementCount>(),
561+
getNumConditionalInvertibleProtocolsRequirementCounts()
562562
};
563563
}
564564

565565
/// Retrieve the array of requirements for conditional conformances to
566-
/// the ith conditional conformance to a suppressible protocol.
567-
llvm::ArrayRef<GenericConditionalSuppressibleProtocolRequirement>
568-
getConditionalSuppressibleProtocolRequirementsAt(unsigned i) const {
569-
auto counts = getConditionalSuppressibleProtocolRequirementCounts();
566+
/// the ith conditional conformance to a invertible protocol.
567+
llvm::ArrayRef<GenericConditionalInvertibleProtocolRequirement>
568+
getConditionalInvertibleProtocolRequirementsAt(unsigned i) const {
569+
auto counts = getConditionalInvertibleProtocolRequirementCounts();
570570
assert(i < counts.size());
571571

572572
unsigned startIndex = (i == 0) ? 0 : counts[i-1].count;
573573
unsigned endIndex = counts[i].count;
574574

575575
auto basePtr =
576576
this->template
577-
getTrailingObjects<GenericConditionalSuppressibleProtocolRequirement>();
577+
getTrailingObjects<GenericConditionalInvertibleProtocolRequirement>();
578578
return { basePtr + startIndex, basePtr + endIndex };
579579
}
580580

581581
/// Retrieve the array of requirements for conditional conformances to
582-
/// the ith conditional conformance to a suppressible protocol.
583-
llvm::ArrayRef<GenericConditionalSuppressibleProtocolRequirement>
584-
getConditionalSuppressibleProtocolRequirementsFor(
585-
SuppressibleProtocolKind kind
582+
/// the ith conditional conformance to a invertible protocol.
583+
llvm::ArrayRef<GenericConditionalInvertibleProtocolRequirement>
584+
getConditionalInvertibleProtocolRequirementsFor(
585+
InvertibleProtocolKind kind
586586
) const {
587-
if (!asSelf()->hasConditionalSuppressedProtocols())
587+
if (!asSelf()->hasConditionalInvertedProtocols())
588588
return { };
589589

590-
auto conditionallySuppressed = getConditionalSuppressedProtocols();
591-
if (!conditionallySuppressed.contains(kind))
590+
auto conditionallyInverted = getConditionalInvertedProtocols();
591+
if (!conditionallyInverted.contains(kind))
592592
return { };
593593

594594
// Count the number of "set" bits up to (but not including) the
595595
// bit we're looking at.
596596
unsigned targetBit = static_cast<uint8_t>(kind);
597-
auto suppressedBits = conditionallySuppressed.rawBits();
597+
auto invertedBits = conditionallyInverted.rawBits();
598598
unsigned priorBits = 0;
599599
for (unsigned i = 0; i != targetBit; ++i) {
600-
if (suppressedBits & 0x01)
600+
if (invertedBits & 0x01)
601601
++priorBits;
602-
suppressedBits = suppressedBits >> 1;
602+
invertedBits = invertedBits >> 1;
603603
}
604604

605-
return getConditionalSuppressibleProtocolRequirementsAt(priorBits);
605+
return getConditionalInvertibleProtocolRequirementsAt(priorBits);
606606
}
607607

608608
const TargetGenericContext<Runtime> *getGenericContext() const {
@@ -687,28 +687,28 @@ class TrailingGenericContextObjects<TargetSelf<Runtime>,
687687
}
688688

689689
size_t numTrailingObjects(
690-
OverloadToken<ConditionalSuppressibleProtocolSet>
690+
OverloadToken<ConditionalInvertibleProtocolSet>
691691
) const {
692-
return asSelf()->hasConditionalSuppressedProtocols() ? 1 : 0;
692+
return asSelf()->hasConditionalInvertedProtocols() ? 1 : 0;
693693
}
694694

695-
unsigned getNumConditionalSuppressibleProtocolsRequirementCounts() const {
696-
if (!asSelf()->hasConditionalSuppressedProtocols())
695+
unsigned getNumConditionalInvertibleProtocolsRequirementCounts() const {
696+
if (!asSelf()->hasConditionalInvertedProtocols())
697697
return 0;
698698

699-
return countBitsUsed(getConditionalSuppressedProtocols().rawBits());
699+
return countBitsUsed(getConditionalInvertedProtocols().rawBits());
700700
}
701701

702702
size_t numTrailingObjects(
703-
OverloadToken<ConditionalSuppressibleProtocolsRequirementCount>
703+
OverloadToken<ConditionalInvertibleProtocolsRequirementCount>
704704
) const {
705-
return getNumConditionalSuppressibleProtocolsRequirementCounts();
705+
return getNumConditionalInvertibleProtocolsRequirementCounts();
706706
}
707707

708708
size_t numTrailingObjects(
709-
OverloadToken<GenericConditionalSuppressibleProtocolRequirement>
709+
OverloadToken<GenericConditionalInvertibleProtocolRequirement>
710710
) const {
711-
auto counts = getConditionalSuppressibleProtocolRequirementCounts();
711+
auto counts = getConditionalInvertibleProtocolRequirementCounts();
712712
return counts.empty() ? 0 : counts.back().count;
713713
}
714714

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//===--- SuppressibleProtocols.def - Suppressible protocol meta -*- C++ -*-===//
1+
//===--- InvertibleProtocols.def - invertible protocol meta -*- C++ -*-===//
22
//
33
// This source file is part of the Swift.org open source project
44
//
@@ -11,21 +11,21 @@
1111
//===----------------------------------------------------------------------===//
1212
//
1313
// This file defines macros used for macro-metaprogramming with ABI-defined
14-
// suppressible protocols.
14+
// invertible protocols.
1515
//
16-
// The SUPPRESSIBLE_PROTOCOL(Name, Bit, MangleChar) macro is used to specify
17-
// each suppressible protocol that's conceptually part of the ABI. The
16+
// The INVERTIBLE_PROTOCOL(Name, Bit) macro is used to specify each
17+
// each invertible protocol that's conceptually part of the ABI. The
1818
// arguments are:
1919
// Name: The name of the protocol, e.g., Copyable
20-
// Bit: The bit in the set bitset of suppressible protocols that is used
20+
// Bit: The bit in the set bitset of invertible protocols that is used
2121
// to indicate this.
2222
//===----------------------------------------------------------------------===//
2323

24-
#ifndef SUPPRESSIBLE_PROTOCOL
25-
# error Must define SUPPRESSIBLE_PROTOCOL macro before including this file
24+
#ifndef INVERTIBLE_PROTOCOL
25+
# error Must define INVERTIBLE_PROTOCOL macro before including this file
2626
#endif
2727

28-
SUPPRESSIBLE_PROTOCOL(Copyable, 0)
29-
SUPPRESSIBLE_PROTOCOL(Escapable, 1)
28+
INVERTIBLE_PROTOCOL(Copyable, 0)
29+
INVERTIBLE_PROTOCOL(Escapable, 1)
3030

31-
#undef SUPPRESSIBLE_PROTOCOL
31+
#undef INVERTIBLE_PROTOCOL

0 commit comments

Comments
 (0)