internal/cmd/generate-protos: generate internal descfield package
Generate a list of descriptor fields from the descriptor.proto itself
as an internal package. Use these fields for the internal implementation.
Change-Id: Ib1ab0c5c6deb332ba6c8018ef55136b7e5974944
Reviewed-on: https://go-review.googlesource.com/c/164864
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/internal/fileinit/desc_init.go b/internal/fileinit/desc_init.go
index 4955f4d..bd706fc 100644
--- a/internal/fileinit/desc_init.go
+++ b/internal/fileinit/desc_init.go
@@ -5,6 +5,7 @@
package fileinit
import (
+ descfield "github.com/golang/protobuf/v2/internal/descfield"
wire "github.com/golang/protobuf/v2/internal/encoding/wire"
pref "github.com/golang/protobuf/v2/reflect/protoreflect"
)
@@ -88,36 +89,36 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case fileDesc_Name:
+ case descfield.FileDescriptorProto_Name:
fd.path = nb.MakeString(v)
- case fileDesc_Package:
+ case descfield.FileDescriptorProto_Package:
fd.protoPackage = pref.FullName(nb.MakeString(v))
- case fileDesc_Enums:
- if prevField != fileDesc_Enums {
+ case descfield.FileDescriptorProto_EnumType:
+ if prevField != descfield.FileDescriptorProto_EnumType {
if numEnums > 0 {
panic("non-contiguous repeated field")
}
posEnums = len(b0) - len(b) - n - m
}
numEnums++
- case fileDesc_Messages:
- if prevField != fileDesc_Messages {
+ case descfield.FileDescriptorProto_MessageType:
+ if prevField != descfield.FileDescriptorProto_MessageType {
if numMessages > 0 {
panic("non-contiguous repeated field")
}
posMessages = len(b0) - len(b) - n - m
}
numMessages++
- case fileDesc_Extensions:
- if prevField != fileDesc_Extensions {
+ case descfield.FileDescriptorProto_Extension:
+ if prevField != descfield.FileDescriptorProto_Extension {
if numExtensions > 0 {
panic("non-contiguous repeated field")
}
posExtensions = len(b0) - len(b) - n - m
}
numExtensions++
- case fileDesc_Services:
- if prevField != fileDesc_Services {
+ case descfield.FileDescriptorProto_Service:
+ if prevField != descfield.FileDescriptorProto_Service {
if numServices > 0 {
panic("non-contiguous repeated field")
}
@@ -199,7 +200,7 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case enumDesc_Name:
+ case descfield.EnumDescriptorProto_Name:
ed.fullName = nb.AppendFullName(pd.FullName(), v)
}
default:
@@ -226,26 +227,26 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case messageDesc_Name:
+ case descfield.DescriptorProto_Name:
md.fullName = nb.AppendFullName(pd.FullName(), v)
- case messageDesc_Enums:
- if prevField != messageDesc_Enums {
+ case descfield.DescriptorProto_EnumType:
+ if prevField != descfield.DescriptorProto_EnumType {
if numEnums > 0 {
panic("non-contiguous repeated field")
}
posEnums = len(b0) - len(b) - n - m
}
numEnums++
- case messageDesc_Messages:
- if prevField != messageDesc_Messages {
+ case descfield.DescriptorProto_NestedType:
+ if prevField != descfield.DescriptorProto_NestedType {
if numMessages > 0 {
panic("non-contiguous repeated field")
}
posMessages = len(b0) - len(b) - n - m
}
numMessages++
- case messageDesc_Extensions:
- if prevField != messageDesc_Extensions {
+ case descfield.DescriptorProto_Extension:
+ if prevField != descfield.DescriptorProto_Extension {
if numExtensions > 0 {
panic("non-contiguous repeated field")
}
@@ -315,14 +316,14 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case fieldDesc_Number:
+ case descfield.FieldDescriptorProto_Number:
xd.number = pref.FieldNumber(v)
}
case wire.BytesType:
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case fieldDesc_Name:
+ case descfield.FieldDescriptorProto_Name:
xd.fullName = nb.AppendFullName(pd.FullName(), v)
}
default:
@@ -345,7 +346,7 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case serviceDesc_Name:
+ case descfield.ServiceDescriptorProto_Name:
sd.fullName = nb.AppendFullName(pd.FullName(), v)
}
default:
diff --git a/internal/fileinit/desc_lazy.go b/internal/fileinit/desc_lazy.go
index fc2235c..2f7d3ca 100644
--- a/internal/fileinit/desc_lazy.go
+++ b/internal/fileinit/desc_lazy.go
@@ -9,6 +9,7 @@
"fmt"
"reflect"
+ descfield "github.com/golang/protobuf/v2/internal/descfield"
defval "github.com/golang/protobuf/v2/internal/encoding/defval"
wire "github.com/golang/protobuf/v2/internal/encoding/wire"
pimpl "github.com/golang/protobuf/v2/internal/impl"
@@ -344,16 +345,16 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case fileDesc_PublicImports:
+ case descfield.FileDescriptorProto_PublicDependency:
fd.lazy.imports[v].IsPublic = true
- case fileDesc_WeakImports:
+ case descfield.FileDescriptorProto_WeakDependency:
fd.lazy.imports[v].IsWeak = true
}
case wire.BytesType:
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case fileDesc_Syntax:
+ case descfield.FileDescriptorProto_Syntax:
hasSyntax = true
switch string(v) {
case "proto2":
@@ -363,23 +364,23 @@
default:
panic("invalid syntax")
}
- case fileDesc_Imports:
+ case descfield.FileDescriptorProto_Dependency:
fd.lazy.imports = append(fd.lazy.imports, pref.FileImport{
FileDescriptor: ptype.PlaceholderFile(nb.MakeString(v), ""),
})
- case fileDesc_Enums:
+ case descfield.FileDescriptorProto_EnumType:
fd.enums.list[enumIdx].unmarshalFull(v, nb)
enumIdx++
- case fileDesc_Messages:
+ case descfield.FileDescriptorProto_MessageType:
fd.messages.list[messageIdx].unmarshalFull(v, nb)
messageIdx++
- case fileDesc_Extensions:
+ case descfield.FileDescriptorProto_Extension:
fd.extensions.list[extensionIdx].unmarshalFull(v, nb)
extensionIdx++
- case fileDesc_Services:
+ case descfield.FileDescriptorProto_Service:
fd.services.list[serviceIdx].unmarshalFull(v, nb)
serviceIdx++
- case fileDesc_Options:
+ case descfield.FileDescriptorProto_Options:
fd.lazy.options = append(fd.lazy.options, v...)
}
default:
@@ -405,13 +406,13 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case enumDesc_Values:
+ case descfield.EnumDescriptorProto_Value:
rawValues = append(rawValues, v)
- case enumDesc_ReservedNames:
+ case descfield.EnumDescriptorProto_ReservedName:
ed.lazy.resvNames.list = append(ed.lazy.resvNames.list, pref.Name(nb.MakeString(v)))
- case enumDesc_ReservedRanges:
+ case descfield.EnumDescriptorProto_ReservedRange:
ed.lazy.resvRanges.list = append(ed.lazy.resvRanges.list, unmarshalEnumReservedRange(v))
- case enumDesc_Options:
+ case descfield.EnumDescriptorProto_Options:
ed.lazy.options = append(ed.lazy.options, v...)
}
default:
@@ -439,9 +440,9 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case enumReservedRange_Start:
+ case descfield.EnumDescriptorProto_EnumReservedRange_Start:
r[0] = pref.EnumNumber(v)
- case enumReservedRange_End:
+ case descfield.EnumDescriptorProto_EnumReservedRange_End:
r[1] = pref.EnumNumber(v)
}
default:
@@ -465,16 +466,16 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case enumValueDesc_Number:
+ case descfield.EnumValueDescriptorProto_Number:
vd.number = pref.EnumNumber(v)
}
case wire.BytesType:
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case enumValueDesc_Name:
+ case descfield.EnumValueDescriptorProto_Name:
vd.fullName = nb.AppendFullName(pd.FullName(), v)
- case enumValueDesc_Options:
+ case descfield.EnumValueDescriptorProto_Options:
vd.options = append(vd.options, v...)
}
default:
@@ -498,28 +499,28 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case messageDesc_Fields:
+ case descfield.DescriptorProto_Field:
rawFields = append(rawFields, v)
- case messageDesc_Oneofs:
+ case descfield.DescriptorProto_OneofDecl:
rawOneofs = append(rawOneofs, v)
- case messageDesc_ReservedNames:
+ case descfield.DescriptorProto_ReservedName:
md.lazy.resvNames.list = append(md.lazy.resvNames.list, pref.Name(nb.MakeString(v)))
- case messageDesc_ReservedRanges:
+ case descfield.DescriptorProto_ReservedRange:
md.lazy.resvRanges.list = append(md.lazy.resvRanges.list, unmarshalMessageReservedRange(v))
- case messageDesc_ExtensionRanges:
+ case descfield.DescriptorProto_ExtensionRange:
r, opts := unmarshalMessageExtensionRange(v)
md.lazy.extRanges.list = append(md.lazy.extRanges.list, r)
md.lazy.extRangeOptions = append(md.lazy.extRangeOptions, opts)
- case messageDesc_Enums:
+ case descfield.DescriptorProto_EnumType:
md.enums.list[enumIdx].unmarshalFull(v, nb)
enumIdx++
- case messageDesc_Messages:
+ case descfield.DescriptorProto_NestedType:
md.messages.list[messageIdx].unmarshalFull(v, nb)
messageIdx++
- case messageDesc_Extensions:
+ case descfield.DescriptorProto_Extension:
md.extensions.list[extensionIdx].unmarshalFull(v, nb)
extensionIdx++
- case messageDesc_Options:
+ case descfield.DescriptorProto_Options:
md.unmarshalOptions(v)
}
default:
@@ -557,7 +558,7 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case messageOptions_IsMapEntry:
+ case descfield.MessageOptions_MapEntry:
md.lazy.isMapEntry = wire.DecodeBool(v)
}
default:
@@ -576,9 +577,9 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case messageReservedRange_Start:
+ case descfield.DescriptorProto_ReservedRange_Start:
r[0] = pref.FieldNumber(v)
- case messageReservedRange_End:
+ case descfield.DescriptorProto_ReservedRange_End:
r[1] = pref.FieldNumber(v)
}
default:
@@ -598,16 +599,16 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case messageExtensionRange_Start:
+ case descfield.DescriptorProto_ExtensionRange_Start:
r[0] = pref.FieldNumber(v)
- case messageExtensionRange_End:
+ case descfield.DescriptorProto_ExtensionRange_End:
r[1] = pref.FieldNumber(v)
}
case wire.BytesType:
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case messageExtensionRange_Options:
+ case descfield.DescriptorProto_ExtensionRange_Options:
opts = append(opts, v...)
}
default:
@@ -633,13 +634,13 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case fieldDesc_Number:
+ case descfield.FieldDescriptorProto_Number:
fd.number = pref.FieldNumber(v)
- case fieldDesc_Cardinality:
+ case descfield.FieldDescriptorProto_Label:
fd.cardinality = pref.Cardinality(v)
- case fieldDesc_Kind:
+ case descfield.FieldDescriptorProto_Type:
fd.kind = pref.Kind(v)
- case fieldDesc_OneofIndex:
+ case descfield.FieldDescriptorProto_OneofIndex:
// In messageDesc.UnmarshalFull, we allocate slices for both
// the field and oneof descriptors before unmarshaling either
// of them. This ensures pointers to slice elements are stable.
@@ -654,17 +655,17 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case fieldDesc_Name:
+ case descfield.FieldDescriptorProto_Name:
fd.fullName = nb.AppendFullName(pd.FullName(), v)
- case fieldDesc_JSONName:
+ case descfield.FieldDescriptorProto_JsonName:
fd.hasJSONName = true
fd.jsonName = nb.MakeString(v)
- case fieldDesc_Default:
+ case descfield.FieldDescriptorProto_DefaultValue:
fd.defVal.has = true
rawDefVal = v
- case fieldDesc_TypeName:
+ case descfield.FieldDescriptorProto_TypeName:
rawTypeName = v
- case fieldDesc_Options:
+ case descfield.FieldDescriptorProto_Options:
fd.unmarshalOptions(v)
}
default:
@@ -703,10 +704,10 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case fieldOptions_IsPacked:
+ case descfield.FieldOptions_Packed:
fd.hasPacked = true
fd.isPacked = wire.DecodeBool(v)
- case fieldOptions_IsWeak:
+ case descfield.FieldOptions_Weak:
fd.isWeak = wire.DecodeBool(v)
}
default:
@@ -729,9 +730,9 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case oneofDesc_Name:
+ case descfield.OneofDescriptorProto_Name:
od.fullName = nb.AppendFullName(pd.FullName(), v)
- case oneofDesc_Options:
+ case descfield.OneofDescriptorProto_Options:
od.options = append(od.options, v...)
}
default:
@@ -754,22 +755,22 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case fieldDesc_Cardinality:
+ case descfield.FieldDescriptorProto_Label:
xd.lazy.cardinality = pref.Cardinality(v)
- case fieldDesc_Kind:
+ case descfield.FieldDescriptorProto_Type:
xd.lazy.kind = pref.Kind(v)
}
case wire.BytesType:
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case fieldDesc_JSONName:
+ case descfield.FieldDescriptorProto_JsonName:
xd.lazy.hasJSONName = true
xd.lazy.jsonName = nb.MakeString(v)
- case fieldDesc_Default:
+ case descfield.FieldDescriptorProto_DefaultValue:
xd.lazy.defVal.has = true
rawDefVal = v
- case fieldDesc_Options:
+ case descfield.FieldDescriptorProto_Options:
xd.unmarshalOptions(v)
}
default:
@@ -799,7 +800,7 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case fieldOptions_IsPacked:
+ case descfield.FieldOptions_Packed:
xd.lazy.isPacked = wire.DecodeBool(v)
}
default:
@@ -820,9 +821,9 @@
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case serviceDesc_Methods:
+ case descfield.ServiceDescriptorProto_Method:
rawMethods = append(rawMethods, v)
- case serviceDesc_Options:
+ case descfield.ServiceDescriptorProto_Options:
sd.lazy.options = append(sd.lazy.options, v...)
}
default:
@@ -854,18 +855,18 @@
v, m := wire.ConsumeVarint(b)
b = b[m:]
switch num {
- case methodDesc_IsStreamingClient:
+ case descfield.MethodDescriptorProto_ClientStreaming:
md.isStreamingClient = wire.DecodeBool(v)
- case methodDesc_IsStreamingServer:
+ case descfield.MethodDescriptorProto_ServerStreaming:
md.isStreamingServer = wire.DecodeBool(v)
}
case wire.BytesType:
v, m := wire.ConsumeBytes(b)
b = b[m:]
switch num {
- case methodDesc_Name:
+ case descfield.MethodDescriptorProto_Name:
md.fullName = nb.AppendFullName(pd.FullName(), v)
- case methodDesc_Options:
+ case descfield.MethodDescriptorProto_Options:
md.options = append(md.options, v...)
}
default:
diff --git a/internal/fileinit/desc_wire.go b/internal/fileinit/desc_wire.go
deleted file mode 100644
index b8b1684..0000000
--- a/internal/fileinit/desc_wire.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package fileinit
-
-// Constants for field numbers of messages declared in descriptor.proto.
-const (
- // FileDescriptorProto field numbers
- fileDesc_Syntax = 12 // optional string
- fileDesc_Name = 1 // optional string
- fileDesc_Package = 2 // optional string
- fileDesc_Imports = 3 // repeated string
- fileDesc_PublicImports = 10 // repeated int32
- fileDesc_WeakImports = 11 // repeated int32
- fileDesc_Enums = 5 // repeated EnumDescriptorProto
- fileDesc_Messages = 4 // repeated DescriptorProto
- fileDesc_Extensions = 7 // repeated FieldDescriptorProto
- fileDesc_Services = 6 // repeated ServiceDescriptorProto
- fileDesc_Options = 8 // optional FileOptions
-
- // EnumDescriptorProto field numbers
- enumDesc_Name = 1 // optional string
- enumDesc_Values = 2 // repeated EnumValueDescriptorProto
- enumDesc_ReservedNames = 5 // repeated string
- enumDesc_ReservedRanges = 4 // repeated EnumReservedRange
- enumDesc_Options = 3 // optional EnumOptions
-
- // EnumReservedRange field numbers
- enumReservedRange_Start = 1 // optional int32
- enumReservedRange_End = 2 // optional int32
-
- // EnumValueDescriptorProto field numbers
- enumValueDesc_Name = 1 // optional string
- enumValueDesc_Number = 2 // optional int32
- enumValueDesc_Options = 3 // optional EnumValueOptions
-
- // DescriptorProto field numbers
- messageDesc_Name = 1 // optional string
- messageDesc_Fields = 2 // repeated FieldDescriptorProto
- messageDesc_Oneofs = 8 // repeated OneofDescriptorProto
- messageDesc_ReservedNames = 10 // repeated string
- messageDesc_ReservedRanges = 9 // repeated ReservedRange
- messageDesc_ExtensionRanges = 5 // repeated ExtensionRange
- messageDesc_Enums = 4 // repeated EnumDescriptorProto
- messageDesc_Messages = 3 // repeated DescriptorProto
- messageDesc_Extensions = 6 // repeated FieldDescriptorProto
- messageDesc_Options = 7 // optional MessageOptions
-
- // ReservedRange field numbers
- messageReservedRange_Start = 1 // optional int32
- messageReservedRange_End = 2 // optional int32
-
- // ExtensionRange field numbers
- messageExtensionRange_Start = 1 // optional int32
- messageExtensionRange_End = 2 // optional int32
- messageExtensionRange_Options = 3 // optional ExtensionRangeOptions
-
- // MessageOptions field numbers
- messageOptions_IsMapEntry = 7 // optional bool
-
- // FieldDescriptorProto field numbers
- fieldDesc_Name = 1 // optional string
- fieldDesc_Number = 3 // optional int32
- fieldDesc_Cardinality = 4 // optional Label
- fieldDesc_Kind = 5 // optional Type
- fieldDesc_JSONName = 10 // optional string
- fieldDesc_Default = 7 // optional string
- fieldDesc_OneofIndex = 9 // optional int32
- fieldDesc_TypeName = 6 // optional string
- fieldDesc_ExtendedType = 2 // optional string
- fieldDesc_Options = 8 // optional FieldOptions
-
- // FieldOptions field numbers
- fieldOptions_IsPacked = 2 // optional bool
- fieldOptions_IsWeak = 10 // optional bool
-
- // OneofDescriptorProto field numbers
- oneofDesc_Name = 1 // optional string
- oneofDesc_Options = 2 // optional OneofOptions
-
- // ServiceDescriptorProto field numbers
- serviceDesc_Name = 1 // optional string
- serviceDesc_Methods = 2 // repeated MethodDescriptorProto
- serviceDesc_Options = 3 // optional ServiceOptions
-
- // MethodDescriptorProto field numbers
- methodDesc_Name = 1 // optional string
- methodDesc_InputType = 2 // optional string
- methodDesc_OutputType = 3 // optional string
- methodDesc_IsStreamingClient = 5 // optional bool
- methodDesc_IsStreamingServer = 6 // optional bool
- methodDesc_Options = 4 // optional MethodOptions
-)