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.
65 lines
2.0 KiB
Swift
65 lines
2.0 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.7-abi-triple %S/../Inputs/FakeDistributedActorSystems.swift
|
|
// RUN: %target-build-swift -module-name main -target %target-swift-5.7-abi-triple -j2 -parse-as-library -I %t %s %S/../Inputs/FakeDistributedActorSystems.swift -o %t/a.out
|
|
// RUN: %target-codesign %t/a.out
|
|
// RUN: %target-run %t/a.out | %FileCheck %s
|
|
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: concurrency
|
|
// REQUIRES: distributed
|
|
|
|
// UNSUPPORTED: use_os_stdlib
|
|
// UNSUPPORTED: back_deployment_runtime
|
|
|
|
import Distributed
|
|
typealias DefaultDistributedActorSystem = FakeRoundtripActorSystem
|
|
|
|
@propertyWrapper
|
|
struct Validate {
|
|
// TODO: we can't throw from here, but if we could, this would be ideal for throwing validation
|
|
// Today we can fatalError here if we wanted to though.
|
|
init(wrappedValue: Int, in range: ClosedRange<Int>) {
|
|
//precondition(range.contains(wrappedValue), "Value [\(wrappedValue)] did not fit required range \(range)")
|
|
if !range.contains(wrappedValue) {
|
|
print("VALIDATION WARNING: Value [\(wrappedValue)] did not fit required range \(range)")
|
|
}
|
|
}
|
|
|
|
var wrappedValue: Int {
|
|
12
|
|
}
|
|
}
|
|
|
|
distributed actor CheckTheNums {
|
|
|
|
distributed func check(@Validate(in: 1...100) num: Int) {
|
|
let i: Int = num
|
|
_ = i
|
|
}
|
|
}
|
|
|
|
// ==== Execute ----------------------------------------------------------------
|
|
|
|
func test() async throws {
|
|
let system = DefaultDistributedActorSystem()
|
|
|
|
let da = CheckTheNums(actorSystem: system)
|
|
// try await da.check(num: 1000)
|
|
|
|
let remote = try CheckTheNums.resolve(id: da.id, using: system)
|
|
try await remote.check(num: 10000)
|
|
|
|
// CHECK: > execute distributed target: main.CheckTheNums.check(num:)
|
|
// CHECK: > decode argument: 10000
|
|
// CHECK: VALIDATION WARNING: Value [10000] did not fit required range 1...100
|
|
|
|
// CHECK: OK
|
|
print("OK")
|
|
}
|
|
|
|
@main struct Main {
|
|
static func main() async throws {
|
|
try await test()
|
|
}
|
|
}
|