mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
AST/Sema: Resolve AvailabilityDomain in SemanticAvailableAttrRequest.
Look up the AvailabilityDomain given its name during type checking, instead of parsing.
This commit is contained in:
@@ -13,9 +13,28 @@
|
||||
#include "swift/AST/AvailabilityDomain.h"
|
||||
#include "swift/AST/ASTContext.h"
|
||||
#include "swift/AST/Decl.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
|
||||
using namespace swift;
|
||||
|
||||
std::optional<AvailabilityDomain>
|
||||
AvailabilityDomain::builtinDomainForString(StringRef string) {
|
||||
auto domain = llvm::StringSwitch<std::optional<AvailabilityDomain>>(string)
|
||||
.Case("*", AvailabilityDomain::forUniversal())
|
||||
.Case("swift", AvailabilityDomain::forSwiftLanguage())
|
||||
.Case("_PackageDescription",
|
||||
AvailabilityDomain::forPackageDescription())
|
||||
.Default(std::nullopt);
|
||||
|
||||
if (domain)
|
||||
return domain;
|
||||
|
||||
if (auto platformKind = platformFromString(string))
|
||||
return AvailabilityDomain::forPlatform(*platformKind);
|
||||
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
bool AvailabilityDomain::isActive(const ASTContext &ctx) const {
|
||||
switch (getKind()) {
|
||||
case Kind::Universal:
|
||||
|
||||
Reference in New Issue
Block a user