Files
swift-mirror/test/Distributed/distributed_func_overloads.swift
Allan Shortlidge 75bad99f78 Tests: Remove -disable-availability-checking in Distributed tests.
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.
2024-10-20 09:07:13 -07:00

55 lines
2.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
// ==== ------------------------------------------------------------------------
distributed actor Overloader {
func overloaded() {}
func overloaded() async {}
distributed func overloadedDistA() {}
// expected-note@-1{{'overloadedDistA()' previously declared here, cannot overload distributed methods on effect only}}
distributed func overloadedDistA() async {}
// expected-error@-1{{invalid redeclaration of 'overloadedDistA()'}}
distributed func overloadedDistT() throws {}
// expected-note@-1{{'overloadedDistT()' previously declared here, cannot overload distributed methods on effect only}}
distributed func overloadedDistT() async throws {}
// expected-error@-1{{invalid redeclaration of 'overloadedDistT()'}}
distributed func overloadedDistST(string: String) throws {}
// expected-note@-1{{'overloadedDistST(string:)' previously declared here, cannot overload distributed methods on effect only}}
distributed func overloadedDistST(string: String) async throws {}
// expected-error@-1{{invalid redeclaration of 'overloadedDistST(string:)'}}
// Throws overloads are not legal anyway, but let's check for them here too:
distributed func overloadedDistThrows() {}
// expected-note@-1{{'overloadedDistThrows()' previously declared here}}
distributed func overloadedDistThrows() throws {}
// expected-error@-1{{invalid redeclaration of 'overloadedDistThrows()'}}
distributed func overloadedDistAsync() async {}
// expected-note@-1{{'overloadedDistAsync()' previously declared here}}
distributed func overloadedDistAsync() async throws {}
// expected-error@-1{{invalid redeclaration of 'overloadedDistAsync()'}}
// overloads differing by parameter type are allowed,
// since the mangled identifier includes full type information:
distributed func overloadedDistParams(param: String) async {} // ok
distributed func overloadedDistParams(param: Int) async {} // ok
distributed func overloadedDistParams() async {} // also ok
distributed func overloadedDistParams<A: Sendable & Codable>(param: A) async {} // ok
}