@@ -2596,6 +2596,7 @@ struct TargetProtocolConformanceDescriptor final
2596
2596
TargetProtocolConformanceDescriptor<Runtime>,
2597
2597
TargetRelativeContextPointer<Runtime>,
2598
2598
TargetGenericRequirementDescriptor<Runtime>,
2599
+ GenericPackShapeDescriptor,
2599
2600
TargetResilientWitnessesHeader<Runtime>,
2600
2601
TargetResilientWitness<Runtime>,
2601
2602
TargetGenericWitnessTable<Runtime>> {
@@ -2604,6 +2605,7 @@ struct TargetProtocolConformanceDescriptor final
2604
2605
TargetProtocolConformanceDescriptor<Runtime>,
2605
2606
TargetRelativeContextPointer<Runtime>,
2606
2607
TargetGenericRequirementDescriptor<Runtime>,
2608
+ GenericPackShapeDescriptor,
2607
2609
TargetResilientWitnessesHeader<Runtime>,
2608
2610
TargetResilientWitness<Runtime>,
2609
2611
TargetGenericWitnessTable<Runtime>>;
@@ -2695,12 +2697,19 @@ struct TargetProtocolConformanceDescriptor final
2695
2697
2696
2698
// / Retrieve the conditional requirements that must also be
2697
2699
// / satisfied
2698
- llvm::ArrayRef<GenericRequirementDescriptor >
2700
+ llvm::ArrayRef<TargetGenericRequirementDescriptor<Runtime> >
2699
2701
getConditionalRequirements () const {
2700
- return {this ->template getTrailingObjects <GenericRequirementDescriptor >(),
2702
+ return {this ->template getTrailingObjects <TargetGenericRequirementDescriptor<Runtime> >(),
2701
2703
Flags.getNumConditionalRequirements ()};
2702
2704
}
2703
2705
2706
+ // / Retrieve the pack shape descriptors for the conditional pack requirements.
2707
+ llvm::ArrayRef<GenericPackShapeDescriptor>
2708
+ getConditionalPackShapeDescriptors () const {
2709
+ return {this ->template getTrailingObjects <GenericPackShapeDescriptor>(),
2710
+ Flags.getNumConditionalPackShapeDescriptors ()};
2711
+ }
2712
+
2704
2713
// / Get the directly-referenced witness table pattern, which may also
2705
2714
// / serve as the witness table.
2706
2715
const swift::TargetWitnessTable<Runtime> *getWitnessTablePattern () const {
@@ -2759,6 +2768,10 @@ struct TargetProtocolConformanceDescriptor final
2759
2768
return Flags.getNumConditionalRequirements ();
2760
2769
}
2761
2770
2771
+ size_t numTrailingObjects (OverloadToken<GenericPackShapeDescriptor>) const {
2772
+ return Flags.getNumConditionalPackShapeDescriptors ();
2773
+ }
2774
+
2762
2775
size_t numTrailingObjects (OverloadToken<ResilientWitnessesHeader>) const {
2763
2776
return Flags.hasResilientWitnesses () ? 1 : 0 ;
2764
2777
}
0 commit comments