AST/Sema: Resolve AvailabilityDomain in SemanticAvailableAttrRequest.

Look up the AvailabilityDomain given its name during type checking, instead of
parsing.
This commit is contained in:
Allan Shortlidge
2025-01-25 18:22:56 -08:00
parent 7b8cbd7109
commit a5d60ce35e
5 changed files with 42 additions and 2 deletions

View File

@@ -8270,6 +8270,17 @@ std::optional<SemanticAvailableAttr>
SemanticAvailableAttrRequest::evaluate(swift::Evaluator &evaluator,
const AvailableAttr *attr,
const Decl *decl) const {
if (attr->hasCachedDomain())
return SemanticAvailableAttr(attr);
auto string = attr->getDomainString();
ASSERT(string);
auto domain = AvailabilityDomain::builtinDomainForString(*string);
if (!domain)
return std::nullopt;
const_cast<AvailableAttr *>(attr)->setCachedDomain(*domain);
return SemanticAvailableAttr(attr);
}