Skip to content

Commit 3edf8e1

Browse files
committed
[metadata prespecialization] Bump availability.
Previously, the availability was 5.3. Since compareProtocolConformanceDescriptors was added in 5.4 and was used by metadata accessors with baked-in checks for arguments which matched prespecializations, 5.3 was incorrect. Moreover, now that the searching for matches is done by getGenericMetadata, the metadata accessors no longer contain the early exits, so running against a 5.3 runtime would entail the metadata accessor failing to produce canonical prespecialized records. Here, the availability is bumped to 5.4 which includes the runtime changes to support the metadata accessors not having early exits to return prespecialized records.
1 parent b140802 commit 3edf8e1

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

include/swift/AST/ASTContext.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,10 @@ class ASTContext final {
669669
/// compiler for the target platform.
670670
AvailabilityContext getSwift53Availability();
671671

672+
/// Get the runtime availability of features introduced in the Swift 5.4
673+
/// compiler for the target platform.
674+
AvailabilityContext getSwift54Availability();
675+
672676
/// Get the runtime availability of features that have been introduced in the
673677
/// Swift compiler for future versions of the target platform.
674678
AvailabilityContext getSwiftFutureAvailability();

lib/AST/Availability.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -306,21 +306,21 @@ AvailabilityContext ASTContext::getTypesInAbstractMetadataStateAvailability() {
306306
}
307307

308308
AvailabilityContext ASTContext::getPrespecializedGenericMetadataAvailability() {
309-
return getSwift53Availability();
309+
return getSwift54Availability();
310310
}
311311

312312
AvailabilityContext ASTContext::getCompareTypeContextDescriptorsAvailability() {
313-
return getSwiftFutureAvailability();
313+
return getSwift54Availability();
314314
}
315315

316316
AvailabilityContext
317317
ASTContext::getCompareProtocolConformanceDescriptorsAvailability() {
318-
return getSwiftFutureAvailability();
318+
return getSwift54Availability();
319319
}
320320

321321
AvailabilityContext
322322
ASTContext::getIntermodulePrespecializedGenericMetadataAvailability() {
323-
return getSwiftFutureAvailability();
323+
return getSwift54Availability();
324324
}
325325

326326
AvailabilityContext ASTContext::getSwift52Availability() {
@@ -384,6 +384,10 @@ AvailabilityContext ASTContext::getSwift53Availability() {
384384
}
385385
}
386386

387+
AvailabilityContext ASTContext::getSwift54Availability() {
388+
return getSwiftFutureAvailability();
389+
}
390+
387391
AvailabilityContext ASTContext::getSwiftFutureAvailability() {
388392
auto target = LangOpts.Target;
389393

test/IRGen/generic_metatypes_future.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
// RUN: %swift -prespecialize-generic-metadata -module-name generic_metatypes -target x86_64-apple-macosx50.99 -emit-ir -disable-legacy-type-info -parse-stdlib -primary-file %s | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-64 -DINT=i64 %s
2+
// RUN: %swift -prespecialize-generic-metadata -module-name generic_metatypes -target x86_64-apple-macosx99.99 -emit-ir -disable-legacy-type-info -parse-stdlib -primary-file %s | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-64 -DINT=i64 %s
33
// RUN: %swift -prespecialize-generic-metadata -module-name generic_metatypes -target x86_64-apple-ios99.0 -emit-ir -disable-legacy-type-info -parse-stdlib -primary-file %s | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-64 -DINT=i64 %s
44
// RUN: %swift -prespecialize-generic-metadata -module-name generic_metatypes -target x86_64-apple-tvos99.0 -emit-ir -disable-legacy-type-info -parse-stdlib -primary-file %s | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-64 -DINT=i64 %s
55
// RUN: %swift -prespecialize-generic-metadata -module-name generic_metatypes -target i386-apple-watchos9.99 -emit-ir -disable-legacy-type-info -parse-stdlib -primary-file %s | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-32 -DINT=i32 %s

0 commit comments

Comments
 (0)