mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Use the `%target-swift-5.X-abi-triple` substitutions to compile the tests for deployment to the minimum OS versions required for the APIs used in the tests, instead of disabling availability checking.
61 lines
2.1 KiB
Swift
61 lines
2.1 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend-emit-module -emit-module-path %t/FakeDistributedActorSystems.swiftmodule -module-name FakeDistributedActorSystems -target %target-swift-5.9-abi-triple %S/../Inputs/FakeDistributedActorSystems.swift
|
|
// RUN: %target-build-swift -parse-as-library -swift-version 6 -target %target-swift-5.9-abi-triple -I %t %s %S/../Inputs/FakeDistributedActorSystems.swift %S/../Inputs/CustomSerialExecutorAvailability.swift -o %t/a.out
|
|
// RUN: %target-codesign %t/a.out
|
|
// RUN: %target-run %t/a.out
|
|
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: concurrency
|
|
// REQUIRES: distributed
|
|
// REQUIRES: concurrency_runtime
|
|
// UNSUPPORTED: back_deployment_runtime
|
|
|
|
// UNSUPPORTED: back_deploy_concurrency
|
|
// UNSUPPORTED: use_os_stdlib
|
|
// UNSUPPORTED: freestanding
|
|
|
|
//import StdlibUnittest
|
|
import Distributed
|
|
|
|
@available(SwiftStdlib 5.9, *)
|
|
distributed actor Tester {
|
|
|
|
typealias ActorSystem = LocalTestingDistributedActorSystem
|
|
|
|
distributed func check() async {
|
|
// should correctly infer not to be crossing isolation boundary:
|
|
pass()
|
|
passOptional()
|
|
|
|
pass(isolatedToActor: self.asLocalActor)
|
|
passOptional(isolatedToActor: self.asLocalActor)
|
|
|
|
// Not supported: the parameter must be exactly the 'self.asLocalActor'
|
|
// as otherwise we don't know where the value came from and if it's really
|
|
// self we're calling from; We'd need more sophisticated analysis to make it work.
|
|
// let myself = self.asLocalActor
|
|
// pass(isolatedToActor: myself)
|
|
}
|
|
}
|
|
|
|
@available(SwiftStdlib 5.9, *)
|
|
func passOptional(isolatedToActor: isolated (any Actor)? = #isolation) {
|
|
isolatedToActor!.preconditionIsolated("Expected to be executing on actor \(isolatedToActor!)")
|
|
}
|
|
|
|
@available(SwiftStdlib 5.9, *)
|
|
func pass(isolatedToActor: isolated (any Actor) = #isolation) {
|
|
isolatedToActor.preconditionIsolated("Expected to be executing on actor \(isolatedToActor)")
|
|
}
|
|
|
|
@main struct Main {
|
|
static func main() async {
|
|
if #available(SwiftStdlib 5.9, *) {
|
|
let system = LocalTestingDistributedActorSystem()
|
|
let tester = Tester(actorSystem: system)
|
|
|
|
try! await tester.check()
|
|
}
|
|
}
|
|
}
|