1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend-emit-module -emit-module-path %t/FakeDistributedActorSystems.swiftmodule -module-name FakeDistributedActorSystems -disable-availability-checking %S/Inputs/FakeDistributedActorSystems.swift
// RUN: %target-swift-frontend -typecheck -verify -disable-availability-checking -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
}
|