@@ -4558,13 +4558,17 @@ class DeclDeserializer {
4558
4558
return deserializeAnyFunc (scratch, blobData, /* isAccessor*/ true );
4559
4559
}
4560
4560
4561
- void deserializeConditionalSubstitutionConditions (
4562
- SmallVectorImpl<OpaqueTypeDecl::AvailabilityCondition > &conditions ) {
4561
+ void deserializeConditionalSubstitutionAvailabilityQueries (
4562
+ SmallVectorImpl<AvailabilityQuery > &queries ) {
4563
4563
using namespace decls_block ;
4564
4564
4565
4565
SmallVector<uint64_t , 4 > scratch;
4566
4566
StringRef blobData;
4567
4567
4568
+ // FIXME: [availability] Support arbitrary domains (rdar://156513787).
4569
+ auto domain = ctx.getTargetAvailabilityDomain ();
4570
+ ASSERT (domain.isPlatform ());
4571
+
4568
4572
while (true ) {
4569
4573
llvm::BitstreamEntry entry =
4570
4574
MF.fatalIfUnexpected (MF.DeclTypeCursor .advance (AF_DontPopBlockAtEnd));
@@ -4579,16 +4583,16 @@ class DeclDeserializer {
4579
4583
break ;
4580
4584
4581
4585
bool isUnavailability;
4582
- DEF_VER_TUPLE_PIECES (condition );
4586
+ DEF_VER_TUPLE_PIECES (version );
4583
4587
4584
4588
ConditionalSubstitutionConditionLayout::readRecord (
4585
- scratch, isUnavailability, LIST_VER_TUPLE_PIECES (condition ));
4589
+ scratch, isUnavailability, LIST_VER_TUPLE_PIECES (version ));
4586
4590
4587
- llvm::VersionTuple condition ;
4588
- DECODE_VER_TUPLE (condition );
4591
+ llvm::VersionTuple version ;
4592
+ DECODE_VER_TUPLE (version );
4589
4593
4590
- conditions .push_back (std::make_pair ( VersionRange::allGTE (condition),
4591
- isUnavailability ));
4594
+ queries .push_back (AvailabilityQuery::dynamic (
4595
+ domain, isUnavailability, AvailabilityRange (version), std:: nullopt ));
4592
4596
}
4593
4597
}
4594
4598
@@ -4615,10 +4619,10 @@ class DeclDeserializer {
4615
4619
decls_block::ConditionalSubstitutionLayout::readRecord (
4616
4620
scratch, substitutionMapRef);
4617
4621
4618
- SmallVector<OpaqueTypeDecl::AvailabilityCondition , 2 > conditions ;
4619
- deserializeConditionalSubstitutionConditions (conditions );
4622
+ SmallVector<AvailabilityQuery , 2 > queries ;
4623
+ deserializeConditionalSubstitutionAvailabilityQueries (queries );
4620
4624
4621
- if (conditions .empty ())
4625
+ if (queries .empty ())
4622
4626
return MF.diagnoseAndConsumeFatal ();
4623
4627
4624
4628
auto subMapOrError = MF.getSubstitutionMapChecked (substitutionMapRef);
@@ -4627,7 +4631,7 @@ class DeclDeserializer {
4627
4631
4628
4632
limitedAvailability.push_back (
4629
4633
OpaqueTypeDecl::ConditionallyAvailableSubstitutions::get (
4630
- ctx, conditions , subMapOrError.get ()));
4634
+ ctx, queries , subMapOrError.get ()));
4631
4635
}
4632
4636
}
4633
4637
@@ -4725,7 +4729,9 @@ class DeclDeserializer {
4725
4729
} else {
4726
4730
limitedAvailability.push_back (
4727
4731
OpaqueTypeDecl::ConditionallyAvailableSubstitutions::get (
4728
- ctx, {{VersionRange::all (), /* unavailability=*/ false }},
4732
+ ctx,
4733
+ {AvailabilityQuery::universallyConstant (
4734
+ /* isUnavailable=*/ false , /* value=*/ true )},
4729
4735
subMapOrError.get ()));
4730
4736
4731
4737
opaqueDecl->setConditionallyAvailableSubstitutions (limitedAvailability);
0 commit comments