@@ -16,25 +16,34 @@ distributed actor Overloader {
1616 func overloaded( ) { }
1717 func overloaded( ) async { }
1818
19- distributed func overloadedDistA( ) { } // expected-note {{ambiguous distributed func 'overloadedDistA()' declared here }}
20- distributed func overloadedDistA( ) async { } // expected-error {{ambiguous distributed func declaration 'overloadedDistA()', cannot overload distributed methods on effect only }}
19+ distributed func overloadedDistA( ) { } // expected-error {{ambiguous distributed func declaration 'overloadedDistA()', cannot overload distributed methods on effect only }}
20+ distributed func overloadedDistA( ) async { } // expected-note {{ambiguous distributed func 'overloadedDistA()' declared here }}
2121
22- distributed func overloadedDistT( ) throws { } // expected-note {{ambiguous distributed func 'overloadedDistT()' declared here }}
23- distributed func overloadedDistT( ) async throws { } // expected-error {{ambiguous distributed func declaration 'overloadedDistT()', cannot overload distributed methods on effect only }}
22+ distributed func overloadedDistT( ) throws { } // expected-error {{ambiguous distributed func declaration 'overloadedDistT()', cannot overload distributed methods on effect only }}
23+ distributed func overloadedDistT( ) async throws { } // expected-note {{ambiguous distributed func 'overloadedDistT()' declared here }}
2424
2525 // Throws overloads are not legal anyway, but let's check for them here too:
2626 distributed func overloadedDistThrows( ) { }
27- // expected-note@-1{{ambiguous distributed func 'overloadedDistThrows()' declared here}}
28- // expected-note @-2{{'overloadedDistThrows()' previously declared here }}
27+ // expected-note@-1{{'overloadedDistThrows()' previously declared here}}
28+ // expected-error @-2{{ambiguous distributed func declaration 'overloadedDistThrows()', cannot overload distributed methods on effect only }}
2929 distributed func overloadedDistThrows( ) throws { }
30- // expected-error@-1{{ambiguous distributed func declaration 'overloadedDistThrows()', cannot overload distributed methods on effect only }}
31- // expected-error @-2{{invalid redeclaration of 'overloadedDistThrows()'}}
30+ // expected-error@-1{{invalid redeclaration of 'overloadedDistThrows()'}}
31+ // expected-note @-2{{ambiguous distributed func 'overloadedDistThrows()' declared here }}
3232
3333 distributed func overloadedDistAsync( ) async { }
34- // expected-note@-1{{ambiguous distributed func 'overloadedDistAsync()' declared here}}
35- // expected-note @-2{{'overloadedDistAsync()' previously declared here }}
34+ // expected-note@-1{{'overloadedDistAsync()' previously declared here}}
35+ // expected-error @-2{{ambiguous distributed func declaration 'overloadedDistAsync()', cannot overload distributed methods on effect only }}
3636 distributed func overloadedDistAsync( ) async throws { }
37- // expected-error@-1{{ambiguous distributed func declaration 'overloadedDistAsync()', cannot overload distributed methods on effect only}}
38- // expected-error@-2{{invalid redeclaration of 'overloadedDistAsync()'}}
37+ // expected-error@-1{{invalid redeclaration of 'overloadedDistAsync()'}}
38+ // expected-note@-2{{ambiguous distributed func 'overloadedDistAsync()' declared here}}
39+
40+ // overloads differing by parameter type are allowed,
41+ // since the mangled identifier includes full type information:
42+ distributed func overloadedDistParams( param: String ) async { }
43+ distributed func overloadedDistParams( param: Int ) async { }
44+
45+ distributed func overloadedDistParams( ) async { } // also ok
46+
47+ distributed func overloadedDistParams< A: Sendable & Codable > ( param: A ) async { }
3948}
4049
0 commit comments