internal/genid: add new package for generated identifiers
The genid package unifies the genname, fieldnum, and detectknown
packages into a single package.
Whenever possible use the generated constants rather than
hard-coded literals. This makes it easier to search the entire
module for special logic that deal with well-known types.
Change-Id: I13beff1f4149444a0c0b9e607ebf759657f000f4
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/235301
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/compiler/protogen/protogen.go b/compiler/protogen/protogen.go
index b3f7a6e..3892d05 100644
--- a/compiler/protogen/protogen.go
+++ b/compiler/protogen/protogen.go
@@ -30,7 +30,7 @@
"strings"
"google.golang.org/protobuf/encoding/prototext"
- "google.golang.org/protobuf/internal/fieldnum"
+ "google.golang.org/protobuf/internal/genid"
"google.golang.org/protobuf/internal/strs"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/reflect/protodesc"
@@ -625,9 +625,9 @@
func newEnum(gen *Plugin, f *File, parent *Message, desc protoreflect.EnumDescriptor) *Enum {
var loc Location
if parent != nil {
- loc = parent.Location.appendPath(fieldnum.DescriptorProto_EnumType, int32(desc.Index()))
+ loc = parent.Location.appendPath(int32(genid.DescriptorProto_EnumType_field_number), int32(desc.Index()))
} else {
- loc = f.location(fieldnum.FileDescriptorProto_EnumType, int32(desc.Index()))
+ loc = f.location(int32(genid.FileDescriptorProto_EnumType_field_number), int32(desc.Index()))
}
enum := &Enum{
Desc: desc,
@@ -664,7 +664,7 @@
parentIdent = message.GoIdent
}
name := parentIdent.GoName + "_" + string(desc.Name())
- loc := enum.Location.appendPath(fieldnum.EnumDescriptorProto_Value, int32(desc.Index()))
+ loc := enum.Location.appendPath(int32(genid.EnumDescriptorProto_Value_field_number), int32(desc.Index()))
return &EnumValue{
Desc: desc,
GoIdent: f.GoImportPath.Ident(name),
@@ -694,9 +694,9 @@
func newMessage(gen *Plugin, f *File, parent *Message, desc protoreflect.MessageDescriptor) *Message {
var loc Location
if parent != nil {
- loc = parent.Location.appendPath(fieldnum.DescriptorProto_NestedType, int32(desc.Index()))
+ loc = parent.Location.appendPath(int32(genid.DescriptorProto_NestedType_field_number), int32(desc.Index()))
} else {
- loc = f.location(fieldnum.FileDescriptorProto_MessageType, int32(desc.Index()))
+ loc = f.location(int32(genid.FileDescriptorProto_MessageType_field_number), int32(desc.Index()))
}
message := &Message{
Desc: desc,
@@ -852,11 +852,11 @@
var loc Location
switch {
case desc.IsExtension() && message == nil:
- loc = f.location(fieldnum.FileDescriptorProto_Extension, int32(desc.Index()))
+ loc = f.location(int32(genid.FileDescriptorProto_Extension_field_number), int32(desc.Index()))
case desc.IsExtension() && message != nil:
- loc = message.Location.appendPath(fieldnum.DescriptorProto_Extension, int32(desc.Index()))
+ loc = message.Location.appendPath(int32(genid.DescriptorProto_Extension_field_number), int32(desc.Index()))
default:
- loc = message.Location.appendPath(fieldnum.DescriptorProto_Field, int32(desc.Index()))
+ loc = message.Location.appendPath(int32(genid.DescriptorProto_Field_field_number), int32(desc.Index()))
}
camelCased := strs.GoCamelCase(string(desc.Name()))
var parentPrefix string
@@ -927,7 +927,7 @@
}
func newOneof(gen *Plugin, f *File, message *Message, desc protoreflect.OneofDescriptor) *Oneof {
- loc := message.Location.appendPath(fieldnum.DescriptorProto_OneofDecl, int32(desc.Index()))
+ loc := message.Location.appendPath(int32(genid.DescriptorProto_OneofDecl_field_number), int32(desc.Index()))
camelCased := strs.GoCamelCase(string(desc.Name()))
parentPrefix := message.GoIdent.GoName + "_"
return &Oneof{
@@ -959,7 +959,7 @@
}
func newService(gen *Plugin, f *File, desc protoreflect.ServiceDescriptor) *Service {
- loc := f.location(fieldnum.FileDescriptorProto_Service, int32(desc.Index()))
+ loc := f.location(int32(genid.FileDescriptorProto_Service_field_number), int32(desc.Index()))
service := &Service{
Desc: desc,
GoName: strs.GoCamelCase(string(desc.Name())),
@@ -988,7 +988,7 @@
}
func newMethod(gen *Plugin, f *File, service *Service, desc protoreflect.MethodDescriptor) *Method {
- loc := service.Location.appendPath(fieldnum.ServiceDescriptorProto_Method, int32(desc.Index()))
+ loc := service.Location.appendPath(int32(genid.ServiceDescriptorProto_Method_field_number), int32(desc.Index()))
method := &Method{
Desc: desc,
GoName: strs.GoCamelCase(string(desc.Name())),