Skip to content

Commit 36c6c7f

Browse files
committed
AST: Add a DeclContext to AvailabilityDomain::builtinDomainForString().
A context is needed to customize the behavior of lookup in downstream versions of Swift.
1 parent 4d2a1ba commit 36c6c7f

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

include/swift/AST/AvailabilityDomain.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
namespace swift {
2828
class ASTContext;
29+
class DeclContext;
2930

3031
/// Represents a dimension of availability (e.g. macOS platform or Swift
3132
/// language mode).
@@ -142,7 +143,7 @@ class AvailabilityDomain final {
142143

143144
/// Returns the built-in availability domain identified by the given string.
144145
static std::optional<AvailabilityDomain>
145-
builtinDomainForString(StringRef string);
146+
builtinDomainForString(StringRef string, const DeclContext *declContext);
146147

147148
Kind getKind() const {
148149
if (auto inlineDomain = getInlineDomain())

lib/AST/AvailabilityDomain.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818
using namespace swift;
1919

2020
std::optional<AvailabilityDomain>
21-
AvailabilityDomain::builtinDomainForString(StringRef string) {
21+
AvailabilityDomain::builtinDomainForString(StringRef string,
22+
const DeclContext *declContext) {
23+
// This parameter is used in downstream forks, do not remove.
24+
(void)declContext;
25+
2226
auto domain = llvm::StringSwitch<std::optional<AvailabilityDomain>>(string)
2327
.Case("*", AvailabilityDomain::forUniversal())
2428
.Case("swift", AvailabilityDomain::forSwiftLanguage())

lib/Sema/TypeCheckAttr.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8284,7 +8284,8 @@ SemanticAvailableAttrRequest::evaluate(swift::Evaluator &evaluator,
82848284

82858285
// Attempt to resolve the domain specified for the attribute and diagnose
82868286
// if no domain is found.
8287-
domain = AvailabilityDomain::builtinDomainForString(*string);
8287+
auto declContext = decl->getInnermostDeclContext();
8288+
domain = AvailabilityDomain::builtinDomainForString(*string, declContext);
82888289
if (!domain) {
82898290
if (auto suggestion = closestCorrectedPlatformString(*string)) {
82908291
diags

0 commit comments

Comments
 (0)