Skip to content

Commit 4bc7837

Browse files
Merge pull request swiftlang#29442 from nate-chandler/generic-metadata-prespecialization-components/future-availability
[metadata prespecialization] Future availability.
2 parents 8a7c970 + 23ff5f8 commit 4bc7837

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

include/swift/AST/ASTContext.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,10 @@ class ASTContext final {
631631
/// compiler for the target platform.
632632
AvailabilityContext getSwift52Availability();
633633

634+
/// Get the runtime availability of features that have been introduced in the
635+
/// Swift compiler for future versions of the target platform.
636+
AvailabilityContext getSwiftFutureAvailability();
637+
634638

635639
//===--------------------------------------------------------------------===//
636640
// Diagnostics Helper functions

lib/AST/Availability.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ AvailabilityContext ASTContext::getTypesInAbstractMetadataStateAvailability() {
243243
}
244244

245245
AvailabilityContext ASTContext::getPrespecializedGenericMetadataAvailability() {
246-
return getSwift52Availability();
246+
return getSwiftFutureAvailability();
247247
}
248248

249249
AvailabilityContext ASTContext::getSwift52Availability() {
@@ -262,3 +262,20 @@ AvailabilityContext ASTContext::getSwift52Availability() {
262262
return AvailabilityContext::alwaysAvailable();
263263
}
264264
}
265+
266+
AvailabilityContext ASTContext::getSwiftFutureAvailability() {
267+
auto target = LangOpts.Target;
268+
269+
if (target.isMacOSX() ) {
270+
return AvailabilityContext(
271+
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
272+
} else if (target.isiOS()) {
273+
return AvailabilityContext(
274+
VersionRange::allGTE(llvm::VersionTuple(99, 0, 0)));
275+
} else if (target.isWatchOS()) {
276+
return AvailabilityContext(
277+
VersionRange::allGTE(llvm::VersionTuple(9, 99, 0)));
278+
} else {
279+
return AvailabilityContext::alwaysAvailable();
280+
}
281+
}

0 commit comments

Comments
 (0)