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
-)