mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
AST/Basic: Introduce the StandaloneSwiftAvailability experimental feature.
This experimental feature will be used to force the compiler to treat `Swift` runtime availability as separate from platform availability when compiling for targets that have the Swift runtime built-in.
This commit is contained in:
@@ -555,6 +555,10 @@ SUPPRESSIBLE_EXPERIMENTAL_FEATURE(InlineAlways, false)
|
||||
/// Allow use of 'Swift' (Swift runtime version) in @available attributes
|
||||
EXPERIMENTAL_FEATURE(SwiftRuntimeAvailability, true)
|
||||
|
||||
/// 'Swift' availability is always standalone, even when targeting platforms
|
||||
/// that have a built-in Swift runtime. Implies 'SwiftRuntimeAvailability'.
|
||||
EXPERIMENTAL_FEATURE(StandaloneSwiftAvailability, true)
|
||||
|
||||
/// Allow use of `~Sendable`.
|
||||
SUPPRESSIBLE_EXPERIMENTAL_FEATURE(TildeSendable, false)
|
||||
|
||||
|
||||
@@ -448,6 +448,7 @@ static bool usesFeatureInlineAlways(Decl *decl) {
|
||||
}
|
||||
|
||||
UNINTERESTING_FEATURE(SwiftRuntimeAvailability)
|
||||
UNINTERESTING_FEATURE(StandaloneSwiftAvailability)
|
||||
|
||||
static bool usesFeatureTildeSendable(Decl *decl) {
|
||||
auto *TD = dyn_cast<TypeDecl>(decl);
|
||||
|
||||
@@ -939,9 +939,15 @@ static bool ParseEnabledFeatureArgs(LangOptions &Opts, ArgList &Args,
|
||||
if (!seenFeatures.insert(*feature).second)
|
||||
continue;
|
||||
|
||||
bool forMigration = featureMode.has_value();
|
||||
|
||||
// Enable the feature if requested.
|
||||
if (isEnableFeatureFlag)
|
||||
Opts.enableFeature(*feature, /*forMigration=*/featureMode.has_value());
|
||||
Opts.enableFeature(*feature, forMigration);
|
||||
|
||||
// 'StandaloneSwiftAvailability' implies 'SwiftRuntimeAvailability'
|
||||
if (*feature == Feature::StandaloneSwiftAvailability)
|
||||
Opts.enableFeature(Feature::SwiftRuntimeAvailability, forMigration);
|
||||
}
|
||||
|
||||
// Since pseudo-features don't have a boolean on/off state, process them in
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// RUN: %target-typecheck-verify-swift -parse-as-library -enable-experimental-feature SwiftRuntimeAvailability -min-swift-runtime-version 5.5
|
||||
// RUN: %target-typecheck-verify-swift -parse-as-library -enable-experimental-feature StandaloneSwiftAvailability -min-swift-runtime-version 5.5
|
||||
|
||||
// REQUIRES: swift_feature_SwiftRuntimeAvailability
|
||||
// REQUIRES: swift_feature_StandaloneSwiftAvailability
|
||||
|
||||
@available(Swift 5.0, *)
|
||||
func availableInSwift5_0Runtime() { }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// RUN: %target-swift-emit-ir %s -min-swift-runtime-version 5.0 -O -enable-experimental-feature SwiftRuntimeAvailability | %FileCheck %s
|
||||
// RUN: %target-swift-emit-ir %s -min-swift-runtime-version 5.0 -O -enable-experimental-feature StandaloneSwiftAvailability | %FileCheck %s
|
||||
|
||||
// REQUIRES: swift_feature_SwiftRuntimeAvailability
|
||||
// REQUIRES: swift_feature_StandaloneSwiftAvailability
|
||||
|
||||
@_silgen_name("callMeMaybe")
|
||||
public func callMeMaybe()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// RUN: %target-swift-emit-sil %s -min-swift-runtime-version 5.0 -verify -enable-experimental-feature SwiftRuntimeAvailability
|
||||
// RUN: %target-swift-emit-silgen %s -min-swift-runtime-version 5.0 -enable-experimental-feature SwiftRuntimeAvailability | %FileCheck %s
|
||||
// RUN: %target-swift-emit-sil %s -min-swift-runtime-version 5.0 -verify -enable-experimental-feature StandaloneSwiftAvailability
|
||||
// RUN: %target-swift-emit-silgen %s -min-swift-runtime-version 5.0 -enable-experimental-feature StandaloneSwiftAvailability | %FileCheck %s
|
||||
|
||||
// REQUIRES: swift_feature_SwiftRuntimeAvailability
|
||||
// REQUIRES: swift_feature_StandaloneSwiftAvailability
|
||||
|
||||
// CHECK-LABEL: sil [ossa] @$s32availability_query_swift_runtime15testIfAvailableyyF : $@convention(thin) () -> () {
|
||||
// CHECK: [[MAJOR:%.*]] = integer_literal $Builtin.Word, 6
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// RUN: %target-swift-emit-sil %s -target %target-cpu-apple-macosx11 -target-variant %target-cpu-apple-ios14-macabi -min-swift-runtime-version 5.0 -verify -enable-experimental-feature SwiftRuntimeAvailability
|
||||
// RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-macosx11 -target-variant %target-cpu-apple-ios14-macabi -min-swift-runtime-version 5.0 -enable-experimental-feature SwiftRuntimeAvailability | %FileCheck %s
|
||||
// RUN: %target-swift-emit-sil %s -target %target-cpu-apple-macosx11 -target-variant %target-cpu-apple-ios14-macabi -min-swift-runtime-version 5.0 -verify -enable-experimental-feature StandaloneSwiftAvailability
|
||||
// RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-macosx11 -target-variant %target-cpu-apple-ios14-macabi -min-swift-runtime-version 5.0 -enable-experimental-feature StandaloneSwiftAvailability | %FileCheck %s
|
||||
|
||||
// REQUIRES: OS=macosx || OS=maccatalyst
|
||||
// REQUIRES: swift_feature_SwiftRuntimeAvailability
|
||||
// REQUIRES: swift_feature_StandaloneSwiftAvailability
|
||||
|
||||
// CHECK-LABEL: sil [ossa] @$s53availability_query_swift_runtime_maccatalyst_zippered15testIfAvailableyyF : $@convention(thin) () -> () {
|
||||
// CHECK: [[MAJOR:%.*]] = integer_literal $Builtin.Word, 6
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// RUN: %target-typecheck-verify-swift -swift-version 5 -parse-as-library -enable-experimental-feature SwiftRuntimeAvailability
|
||||
// RUN: %target-typecheck-verify-swift -swift-version 5 -parse-as-library -enable-experimental-feature StandaloneSwiftAvailability
|
||||
|
||||
// REQUIRES: swift_feature_SwiftRuntimeAvailability
|
||||
// REQUIRES: swift_feature_StandaloneSwiftAvailability
|
||||
|
||||
@available(Swift 6, *)
|
||||
func availableInSwiftRuntime6Short() { }
|
||||
|
||||
Reference in New Issue
Block a user