cmd/protoc-gen-go: minor code changes to assist internal patches
Change-Id: If9d6af3897fd46ed05ed974e3abb47de886ba19c
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/186977
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/cmd/protoc-gen-go/internal_gengo/main.go b/cmd/protoc-gen-go/internal_gengo/main.go
index 8cc8649..44bb413 100644
--- a/cmd/protoc-gen-go/internal_gengo/main.go
+++ b/cmd/protoc-gen-go/internal_gengo/main.go
@@ -411,7 +411,7 @@
g.P("}")
g.P()
- genDefaultConsts(g, message)
+ genDefaultConsts(g, f, message)
genMessageMethods(gen, g, f, message)
genOneofWrapperTypes(gen, g, f, message)
}
@@ -423,12 +423,12 @@
sf.append("state")
}
for _, field := range message.Fields {
- genMessageField(g, message, field, sf)
+ genMessageField(g, f, message, field, sf)
}
genMessageInternalFields(g, message, sf)
}
-func genMessageField(g *protogen.GeneratedFile, message *protogen.Message, field *protogen.Field, sf *structFields) {
+func genMessageField(g *protogen.GeneratedFile, f *fileInfo, message *protogen.Message, field *protogen.Field, sf *structFields) {
if oneof := field.Oneof; oneof != nil {
// It would be a bit simpler to iterate over the oneofs below,
// but generating the field here keeps the contents of the Go
@@ -451,7 +451,7 @@
return
}
g.PrintLeadingComments(field.Location)
- goType, pointer := fieldGoType(g, field)
+ goType, pointer := fieldGoType(g, f, field)
if pointer {
goType = "*" + goType
}
@@ -514,7 +514,7 @@
// genDefaultConsts generates consts and vars holding the default
// values of fields.
-func genDefaultConsts(g *protogen.GeneratedFile, message *protogen.Message) {
+func genDefaultConsts(g *protogen.GeneratedFile, f *fileInfo, message *protogen.Message) {
for _, field := range message.Fields {
if !field.Desc.HasDefault() {
continue
@@ -558,7 +558,7 @@
g.P("const ", defVarName, " ", goType, " = ", field.Desc.Default().Interface())
}
default:
- goType, _ := fieldGoType(g, field)
+ goType, _ := fieldGoType(g, f, field)
g.P("const ", defVarName, " ", goType, " = ", def.Interface())
}
}
@@ -651,7 +651,7 @@
}
// Getter for message field.
- goType, pointer := fieldGoType(g, field)
+ goType, pointer := fieldGoType(g, f, field)
defaultValue := fieldDefaultValue(g, message, field)
if field.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated() {
g.P(deprecationComment(true))
@@ -719,7 +719,7 @@
// fieldGoType returns the Go type used for a field.
//
// If it returns pointer=true, the struct field is a pointer to the type.
-func fieldGoType(g *protogen.GeneratedFile, field *protogen.Field) (goType string, pointer bool) {
+func fieldGoType(g *protogen.GeneratedFile, f *fileInfo, field *protogen.Field) (goType string, pointer bool) {
if field.Desc.IsWeak() {
return "struct{}", false
}
@@ -756,8 +756,8 @@
goType = "[]" + goType
pointer = false
case field.Desc.IsMap():
- keyType, _ := fieldGoType(g, field.Message.Fields[0])
- valType, _ := fieldGoType(g, field.Message.Fields[1])
+ keyType, _ := fieldGoType(g, f, field.Message.Fields[0])
+ valType, _ := fieldGoType(g, f, field.Message.Fields[1])
return fmt.Sprintf("map[%v]%v", keyType, valType), false
}
@@ -814,7 +814,7 @@
for _, extension := range f.allExtensions {
g.P("{")
g.P("ExtendedType: (*", extension.Extendee.GoIdent, ")(nil),")
- goType, pointer := fieldGoType(g, extension)
+ goType, pointer := fieldGoType(g, f, extension)
if pointer {
goType = "*" + goType
}
@@ -878,7 +878,7 @@
g.Annotate(name.GoName, field.Location)
g.Annotate(name.GoName+"."+field.GoName, field.Location)
g.P("type ", name, " struct {")
- goType, _ := fieldGoType(g, field)
+ goType, _ := fieldGoType(g, f, field)
tags := []string{
fmt.Sprintf("protobuf:%q", fieldProtobufTag(field)),
}