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.
39 lines
1.5 KiB
Swift
39 lines
1.5 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-swift-frontend -typecheck -verify -target %target-swift-5.7-abi-triple -I %t 2>&1 %s
|
|
// REQUIRES: concurrency
|
|
// REQUIRES: distributed
|
|
|
|
import Distributed
|
|
import FakeDistributedActorSystems
|
|
|
|
typealias DefaultDistributedActorSystem = FakeActorSystem
|
|
|
|
protocol Greeting: DistributedActor {
|
|
distributed func greeting() -> String
|
|
}
|
|
|
|
extension Greeting {
|
|
func greetLocal(name: String) { // expected-note{{distributed actor-isolated instance method 'greetLocal(name:)' declared here}}
|
|
print("\(greeting()), \(name)!") // okay, we're on the actor
|
|
}
|
|
}
|
|
|
|
extension Greeting where SerializationRequirement == Codable {
|
|
// okay, uses Codable to transfer arguments.
|
|
distributed func greetDistributed(name: String) {
|
|
// okay, we're on the actor
|
|
greetLocal(name: name)
|
|
}
|
|
}
|
|
|
|
extension Greeting where Self.SerializationRequirement == Codable {
|
|
nonisolated func greetAliceALot() async throws {
|
|
try await self.greetDistributed(name: "Alice") // okay, via Codable
|
|
let rawGreeting = try await greeting() // okay, via Self's serialization requirement
|
|
_ = rawGreeting
|
|
|
|
greetLocal(name: "Alice") // expected-error{{only 'distributed' instance methods can be called on a potentially remote distributed actor}}
|
|
}
|
|
}
|