Serialization: Encode custom availability domains.

When serializing `@available` attributes, if the attribute applies to a custom
domain include enough information to deserialize the reference to that domain.

Resolves rdar://138441265.
This commit is contained in:
Allan Shortlidge
2025-04-06 18:44:40 -07:00
parent 0a81283d34
commit 1cd636d9b3
15 changed files with 277 additions and 97 deletions

View File

@@ -1409,7 +1409,8 @@ static void configureAvailabilityDomains(const ASTContext &ctx,
llvm::SmallDenseMap<Identifier, const CustomAvailabilityDomain *> domainMap;
auto createAndInsertDomain = [&](const std::string &name,
CustomAvailabilityDomain::Kind kind) {
auto *domain = CustomAvailabilityDomain::get(name, mainModule, kind, ctx);
auto *domain =
CustomAvailabilityDomain::get(name, kind, mainModule, nullptr, ctx);
bool inserted = domainMap.insert({domain->getName(), domain}).second;
ASSERT(inserted); // Domains must be unique.
};