Skip to content

Commit b85cd75

Browse files
authored
protoc-gen-go/grpc: inline errUnimplemented function (#818)
Avoid using an errUnimplemented function, which requires us to give a name to it, causing possible conflicts. Instead, just inline it's functionality.
1 parent 318d17d commit b85cd75

File tree

3 files changed

+13
-26
lines changed

3 files changed

+13
-26
lines changed

protoc-gen-go/grpc/grpc.go

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,6 @@ func (g *grpc) Generate(file *generator.FileDescriptor) {
118118
g.P("var _ ", contextPkg, ".Context")
119119
g.P("var _ ", grpcPkg, ".ClientConn")
120120
g.P()
121-
g.P("func errUnimplemented(methodName string) error {")
122-
g.P("\treturn ", errorPkg, ".Errorf(codes.Unimplemented, \"method %s not implemented\", methodName)")
123-
g.P("}")
124-
g.P()
125121

126122
// Assert version compatibility.
127123
g.P("// This is a compile-time assertion to ensure that this generated file")
@@ -294,23 +290,22 @@ func (g *grpc) generateUnimplementedServer(servName string, service *pb.ServiceD
294290
g.P()
295291
// Unimplemented<service_name>Server's concrete methods
296292
for _, method := range service.Method {
297-
g.P(g.generateServerMethodConcrete(servName, method))
293+
g.generateServerMethodConcrete(servName, method)
298294
}
299295
g.P()
300296
}
301297

302298
// generateServerMethodConcrete returns unimplemented methods which ensure forward compatibility
303-
func (g *grpc) generateServerMethodConcrete(servName string, method *pb.MethodDescriptorProto) string {
299+
func (g *grpc) generateServerMethodConcrete(servName string, method *pb.MethodDescriptorProto) {
304300
header := g.generateServerSignatureWithParamNames(servName, method)
305-
implementation := fmt.Sprintf("func (*Unimplemented%sServer) %s {\n", servName, header)
306-
implementation += fmt.Sprintf("\treturn ")
301+
g.P("func (*Unimplemented", servName, "Server) ", header, " {")
302+
var nilArg string
307303
if !method.GetServerStreaming() && !method.GetClientStreaming() {
308-
implementation += "nil, "
304+
nilArg = "nil, "
309305
}
310-
origMethName := method.GetName()
311-
methName := generator.CamelCase(origMethName)
312-
implementation += fmt.Sprintf("errUnimplemented(%q)\n}", methName)
313-
return implementation
306+
methName := generator.CamelCase(method.GetName())
307+
g.P("return ", nilArg, errorPkg, `.Errorf(codes.Unimplemented, "method `, methName, ` not implemented")`)
308+
g.P("}")
314309
}
315310

316311
// generateClientSignature returns the client-side signature for a method.

protoc-gen-go/testdata/deprecated/deprecated.pb.go

Lines changed: 1 addition & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

protoc-gen-go/testdata/grpc/grpc.pb.go

Lines changed: 4 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)