Skip to content

Commit 23ff5f8

Browse files
committed
[metadata prespecialization] Future availability.
Metadata prespecialization will be available after Swift 5.2.
1 parent d8d0f90 commit 23ff5f8

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
@@ -625,6 +625,10 @@ class ASTContext final {
625625
/// compiler for the target platform.
626626
AvailabilityContext getSwift52Availability();
627627

628+
/// Get the runtime availability of features that have been introduced in the
629+
/// Swift compiler for future versions of the target platform.
630+
AvailabilityContext getSwiftFutureAvailability();
631+
628632

629633
//===--------------------------------------------------------------------===//
630634
// 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)