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};
112112using 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
318318template <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{
486486protected:
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
0 commit comments