mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Merge pull request #71312 from xedin/promote-flag-for-infersendable-from-capture
[Frontend] NFC: Promote InferSendableFromCaptures to an upcoming feat…
This commit is contained in:
@@ -126,8 +126,9 @@ UPCOMING_FEATURE(InternalImportsByDefault, 409, 6)
|
||||
UPCOMING_FEATURE(IsolatedDefaultValues, 411, 6)
|
||||
UPCOMING_FEATURE(GlobalConcurrency, 412, 6)
|
||||
UPCOMING_FEATURE(FullTypedThrows, 413, 6)
|
||||
|
||||
UPCOMING_FEATURE(ExistentialAny, 335, 7)
|
||||
UPCOMING_FEATURE(InferSendableFromCaptures, 418, 6)
|
||||
|
||||
|
||||
EXPERIMENTAL_FEATURE(StaticAssert, false)
|
||||
EXPERIMENTAL_FEATURE(NamedOpaqueTypes, false)
|
||||
@@ -246,10 +247,6 @@ EXPERIMENTAL_FEATURE(StructLetDestructuring, true)
|
||||
/// lifetime-dependent results.
|
||||
EXPERIMENTAL_FEATURE(NonescapableTypes, true)
|
||||
|
||||
// Infer Sendability of unapplied and partial applied methods,
|
||||
// global functions and key paths.
|
||||
EXPERIMENTAL_FEATURE(InferSendableFromCaptures, false)
|
||||
|
||||
// Allow optional isolated parameters.
|
||||
EXPERIMENTAL_FEATURE(OptionalIsolatedParameters, true)
|
||||
|
||||
|
||||
@@ -26,11 +26,11 @@ struct X {
|
||||
@MainActor func onMainActor() { }
|
||||
|
||||
func testInAsync(x: X) async {
|
||||
let _: Int = unsafelySendableClosure // expected-error{{type '(@Sendable () -> Void) -> ()'}}
|
||||
let _: Int = unsafelyMainActorClosure // expected-error{{type '(@MainActor () -> Void) -> ()'}}
|
||||
let _: Int = unsafelyDoEverythingClosure // expected-error{{type '(@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = unsafelySendableClosure // expected-error{{type '@Sendable (@Sendable () -> Void) -> ()'}}
|
||||
let _: Int = unsafelyMainActorClosure // expected-error{{type '@Sendable (@MainActor () -> Void) -> ()'}}
|
||||
let _: Int = unsafelyDoEverythingClosure // expected-error{{type '@Sendable (@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = x.unsafelyDoEverythingClosure // expected-error{{type '(@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = X.unsafelyDoEverythingClosure // expected-error{{type '(X) -> (@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = X.unsafelyDoEverythingClosure // expected-error{{type '@Sendable (X) -> (@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = (X.unsafelyDoEverythingClosure)(x) // expected-error{{type '(@MainActor @Sendable () -> Void) -> ()'}}
|
||||
|
||||
let _: Int = x.sendableVar // expected-error{{type '@Sendable () -> Void'}}
|
||||
@@ -41,11 +41,11 @@ func testInAsync(x: X) async {
|
||||
}
|
||||
|
||||
func testElsewhere(x: X) {
|
||||
let _: Int = unsafelySendableClosure // expected-error{{type '(@Sendable () -> Void) -> ()'}}
|
||||
let _: Int = unsafelyMainActorClosure // expected-error{{type '(@MainActor () -> Void) -> ()'}}
|
||||
let _: Int = unsafelyDoEverythingClosure // expected-error{{type '(@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = unsafelySendableClosure // expected-error{{type '@Sendable (@Sendable () -> Void) -> ()'}}
|
||||
let _: Int = unsafelyMainActorClosure // expected-error{{type '@Sendable (@MainActor () -> Void) -> ()'}}
|
||||
let _: Int = unsafelyDoEverythingClosure // expected-error{{type '@Sendable (@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = x.unsafelyDoEverythingClosure // expected-error{{type '(@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = X.unsafelyDoEverythingClosure // expected-error{{type '(X) -> (@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = X.unsafelyDoEverythingClosure // expected-error{{type '@Sendable (X) -> (@MainActor @Sendable () -> Void) -> ()'}}
|
||||
let _: Int = (X.unsafelyDoEverythingClosure)(x) // expected-error{{type '(@MainActor @Sendable () -> Void) -> ()'}}
|
||||
|
||||
let _: Int = x.sendableVar // expected-error{{type '@Sendable () -> Void'}}
|
||||
@@ -67,7 +67,7 @@ func testCalls(x: X) {
|
||||
// expected-note@-1 2{{add '@MainActor' to make global function 'testCalls(x:)' part of global actor 'MainActor'}}
|
||||
onMainActorAlways() // expected-error{{call to main actor-isolated global function 'onMainActorAlways()' in a synchronous nonisolated context}}
|
||||
|
||||
let _: () -> Void = onMainActorAlways // expected-error{{converting function value of type '@MainActor () -> ()' to '() -> Void' loses global actor 'MainActor'}}
|
||||
let _: () -> Void = onMainActorAlways // expected-error{{converting function value of type '@MainActor @Sendable () -> ()' to '() -> Void' loses global actor 'MainActor'}}
|
||||
|
||||
let c = MyModelClass() // okay, synthesized init() is 'nonisolated'
|
||||
|
||||
@@ -78,7 +78,7 @@ func testCallsWithAsync() async {
|
||||
onMainActorAlways() // expected-error{{expression is 'async' but is not marked with 'await'}}
|
||||
// expected-note@-1{{calls to global function 'onMainActorAlways()' from outside of its actor context are implicitly asynchronous}}
|
||||
|
||||
let _: () -> Void = onMainActorAlways // expected-error{{converting function value of type '@MainActor () -> ()' to '() -> Void' loses global actor 'MainActor'}}
|
||||
let _: () -> Void = onMainActorAlways // expected-error{{converting function value of type '@MainActor @Sendable () -> ()' to '() -> Void' loses global actor 'MainActor'}}
|
||||
|
||||
let c = MyModelClass() // okay, synthesized init() is 'nonisolated'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// RUN: %target-typecheck-verify-swift -enable-experimental-feature InferSendableFromCaptures -strict-concurrency=complete
|
||||
// RUN: %target-typecheck-verify-swift -enable-upcoming-feature InferSendableFromCaptures -strict-concurrency=complete
|
||||
|
||||
// REQUIRES: concurrency
|
||||
// REQUIRES: asserts
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// RUN: %target-typecheck-verify-swift -enable-experimental-feature InferSendableFromCaptures -disable-availability-checking
|
||||
// RUN: %target-swift-emit-silgen %s -verify -enable-experimental-feature InferSendableFromCaptures -disable-availability-checking -module-name sendable_methods | %FileCheck %s
|
||||
// RUN: %target-typecheck-verify-swift -enable-upcoming-feature InferSendableFromCaptures -disable-availability-checking
|
||||
// RUN: %target-swift-emit-silgen %s -verify -enable-upcoming-feature InferSendableFromCaptures -disable-availability-checking -module-name sendable_methods | %FileCheck %s
|
||||
|
||||
// REQUIRES: concurrency
|
||||
// REQUIRES: asserts
|
||||
|
||||
Reference in New Issue
Block a user