fix(build): Remove ambiguity in service method call (#327)

When calling methods on Arc<MyService> where the method is also defined on Arc (e.g. drop and clone), calling inner.#method_ident(request) will actually attempt to call the Arc method instead of the method on the service, resulting in a compile error. This change removes the ambiguity by dereferencing the inner Arc.
This commit is contained in:
Yonathan Randolph
2020-04-09 13:40:26 -04:00
committed by GitHub
parent 70b345fc98
commit 5d56daa721
6 changed files with 51 additions and 4 deletions
@@ -0,0 +1,19 @@
syntax = "proto3";
package ambiguous_methods;
message DropReq {}
message DropResp {}
// The generated stubs can confuse drop and clone
// with the same method names from Arc,
// resulting in a compile error.
service HelloService {
rpc Drop (DropReq) returns (DropResp);
rpc Clone (DropReq) returns (DropResp);
}
service HelloStreamingService {
rpc Drop (DropReq) returns (stream DropResp);
rpc Clone (DropReq) returns (stream DropResp);
}