From 5be27a75bc5a16c5c64e4b476926ec3432fbd53e Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Thu, 18 Jan 2018 10:39:35 -0800 Subject: [PATCH] [dev] protoc-gen-go: format interfaces for gofmt 1.9 and 1.10 Change the pre-gofmt generated code for oneof discriminant interfaces from: type T interface { T() } to: type T interface { T() } Prior to Go 1.9, gofmt rewrote the single-line form into the multi-line one. Go 1.10 and later preserve the single-line form for single-method interfaces. Generating code that is handled identically by both versions of gofmt avoids spurious diffs with golden test data. Change-Id: Ibb229827823a50e963bcd1b34e59a286654b415f --- protoc-gen-go/generator/generator.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/protoc-gen-go/generator/generator.go b/protoc-gen-go/generator/generator.go index 71ec3e2ac9..bb42926c3e 100644 --- a/protoc-gen-go/generator/generator.go +++ b/protoc-gen-go/generator/generator.go @@ -2174,7 +2174,11 @@ func (g *Generator) generateMessage(message *Descriptor) { // TODO: Revisit this and consider reverting back to anonymous interfaces. for oi := range message.OneofDecl { dname := oneofDisc[int32(oi)] - g.P("type ", dname, " interface { ", dname, "() }") + g.P("type ", dname, " interface {") + g.In() + g.P(dname, "()") + g.Out() + g.P("}") } g.P() for i, field := range message.Field {