mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2025-04-01 04:20:57 +00:00
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>
This commit is contained in:
parent
4b465c007f
commit
1af1de0c15
@ -10,6 +10,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
|
"github.com/golang/protobuf/v2/internal/descfield"
|
||||||
"github.com/golang/protobuf/v2/internal/scalar"
|
"github.com/golang/protobuf/v2/internal/scalar"
|
||||||
|
|
||||||
descriptorpb "github.com/golang/protobuf/v2/types/descriptor"
|
descriptorpb "github.com/golang/protobuf/v2/types/descriptor"
|
||||||
@ -35,19 +36,19 @@ func TestAnnotations(t *testing.T) {
|
|||||||
path []int32
|
path []int32
|
||||||
}{{
|
}{{
|
||||||
"type ", "AnnotationsTestEnum", " int32",
|
"type ", "AnnotationsTestEnum", " int32",
|
||||||
[]int32{5 /* enum_type */, 0},
|
[]int32{descfield.FileDescriptorProto_EnumType, 0},
|
||||||
}, {
|
}, {
|
||||||
"\t", "AnnotationsTestEnum_ANNOTATIONS_TEST_ENUM_VALUE", " AnnotationsTestEnum = 0",
|
"\t", "AnnotationsTestEnum_ANNOTATIONS_TEST_ENUM_VALUE", " AnnotationsTestEnum = 0",
|
||||||
[]int32{5 /* enum_type */, 0, 2 /* value */, 0},
|
[]int32{descfield.FileDescriptorProto_EnumType, 0, descfield.EnumDescriptorProto_Value, 0},
|
||||||
}, {
|
}, {
|
||||||
"type ", "AnnotationsTestMessage", " struct {",
|
"type ", "AnnotationsTestMessage", " struct {",
|
||||||
[]int32{4 /* message_type */, 0},
|
[]int32{descfield.FileDescriptorProto_MessageType, 0},
|
||||||
}, {
|
}, {
|
||||||
"\t", "AnnotationsTestField", " ",
|
"\t", "AnnotationsTestField", " ",
|
||||||
[]int32{4 /* message_type */, 0, 2 /* field */, 0},
|
[]int32{descfield.FileDescriptorProto_MessageType, 0, descfield.DescriptorProto_Field, 0},
|
||||||
}, {
|
}, {
|
||||||
"func (m *AnnotationsTestMessage) ", "GetAnnotationsTestField", "() string {",
|
"func (m *AnnotationsTestMessage) ", "GetAnnotationsTestField", "() string {",
|
||||||
[]int32{4 /* message_type */, 0, 2 /* field */, 0},
|
[]int32{descfield.FileDescriptorProto_MessageType, 0, descfield.DescriptorProto_Field, 0},
|
||||||
}} {
|
}} {
|
||||||
s := want.prefix + want.text + want.suffix
|
s := want.prefix + want.text + want.suffix
|
||||||
pos := bytes.Index(sourceFile, []byte(s))
|
pos := bytes.Index(sourceFile, []byte(s))
|
||||||
|
@ -18,6 +18,7 @@ import (
|
|||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
|
"github.com/golang/protobuf/v2/internal/descfield"
|
||||||
"github.com/golang/protobuf/v2/internal/encoding/tag"
|
"github.com/golang/protobuf/v2/internal/encoding/tag"
|
||||||
"github.com/golang/protobuf/v2/protogen"
|
"github.com/golang/protobuf/v2/protogen"
|
||||||
"github.com/golang/protobuf/v2/reflect/protoreflect"
|
"github.com/golang/protobuf/v2/reflect/protoreflect"
|
||||||
@ -118,10 +119,9 @@ func GenerateFile(gen *protogen.Plugin, file *protogen.File) *protogen.Generated
|
|||||||
g.P("// source: ", f.Desc.Path())
|
g.P("// source: ", f.Desc.Path())
|
||||||
}
|
}
|
||||||
g.P()
|
g.P()
|
||||||
const filePackageField = 2 // FileDescriptorProto.package
|
|
||||||
g.PrintLeadingComments(protogen.Location{
|
g.PrintLeadingComments(protogen.Location{
|
||||||
SourceFile: f.Proto.GetName(),
|
SourceFile: f.Proto.GetName(),
|
||||||
Path: []int32{filePackageField},
|
Path: []int32{descfield.FileDescriptorProto_Package},
|
||||||
})
|
})
|
||||||
g.P()
|
g.P()
|
||||||
g.P("package ", f.GoPackageName)
|
g.P("package ", f.GoPackageName)
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
@ -19,6 +20,7 @@ import (
|
|||||||
gengogrpc "github.com/golang/protobuf/v2/cmd/protoc-gen-go-grpc/internal_gengogrpc"
|
gengogrpc "github.com/golang/protobuf/v2/cmd/protoc-gen-go-grpc/internal_gengogrpc"
|
||||||
gengo "github.com/golang/protobuf/v2/cmd/protoc-gen-go/internal_gengo"
|
gengo "github.com/golang/protobuf/v2/cmd/protoc-gen-go/internal_gengo"
|
||||||
"github.com/golang/protobuf/v2/protogen"
|
"github.com/golang/protobuf/v2/protogen"
|
||||||
|
"github.com/golang/protobuf/v2/reflect/protoreflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -31,6 +33,7 @@ func init() {
|
|||||||
if file.Generate {
|
if file.Generate {
|
||||||
gengo.GenerateFile(gen, file)
|
gengo.GenerateFile(gen, file)
|
||||||
gengogrpc.GenerateFile(gen, file)
|
gengogrpc.GenerateFile(gen, file)
|
||||||
|
generateDescriptorFields(gen, file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -43,6 +46,15 @@ var (
|
|||||||
run bool
|
run bool
|
||||||
protoRoot string
|
protoRoot string
|
||||||
repoRoot string
|
repoRoot string
|
||||||
|
|
||||||
|
generatedPreamble = []string{
|
||||||
|
"// Copyright 2019 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.",
|
||||||
|
"",
|
||||||
|
"// Code generated by generate-protos. DO NOT EDIT.",
|
||||||
|
"",
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -152,6 +164,44 @@ func protoc(args ...string) {
|
|||||||
check(err)
|
check(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// generateDescriptorFields generates an internal package for descriptor.proto.
|
||||||
|
func generateDescriptorFields(gen *protogen.Plugin, file *protogen.File) {
|
||||||
|
if file.Desc.Path() != "google/protobuf/descriptor.proto" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const importPath = "github.com/golang/protobuf/v2/internal/descfield"
|
||||||
|
g := gen.NewGeneratedFile(importPath+"/field_gen.go", importPath)
|
||||||
|
for _, s := range generatedPreamble {
|
||||||
|
g.P(s)
|
||||||
|
}
|
||||||
|
g.P("// Package descfield contains constants for field numbers in descriptor.proto.")
|
||||||
|
g.P("package ", path.Base(importPath))
|
||||||
|
g.P("")
|
||||||
|
|
||||||
|
var processMessages func([]*protogen.Message)
|
||||||
|
processMessages = func(messages []*protogen.Message) {
|
||||||
|
for _, message := range messages {
|
||||||
|
g.P("// Field numbers for ", message.Desc.FullName(), ".")
|
||||||
|
g.P("const (")
|
||||||
|
for _, field := range message.Fields {
|
||||||
|
fd := field.Desc
|
||||||
|
typeName := fd.Kind().String()
|
||||||
|
switch fd.Kind() {
|
||||||
|
case protoreflect.EnumKind:
|
||||||
|
typeName = string(fd.EnumType().FullName())
|
||||||
|
case protoreflect.MessageKind, protoreflect.GroupKind:
|
||||||
|
typeName = string(fd.MessageType().FullName())
|
||||||
|
}
|
||||||
|
g.P(message.GoIdent.GoName, "_", field.GoName, "=", fd.Number(), "// ", fd.Cardinality(), " ", typeName)
|
||||||
|
}
|
||||||
|
g.P(")")
|
||||||
|
processMessages(message.Messages)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
processMessages(file.Messages)
|
||||||
|
}
|
||||||
|
|
||||||
func syncOutput(dstDir, srcDir string) {
|
func syncOutput(dstDir, srcDir string) {
|
||||||
filepath.Walk(srcDir, func(srcPath string, _ os.FileInfo, _ error) error {
|
filepath.Walk(srcDir, func(srcPath string, _ os.FileInfo, _ error) error {
|
||||||
if !strings.HasSuffix(srcPath, ".go") && !strings.HasSuffix(srcPath, ".meta") {
|
if !strings.HasSuffix(srcPath, ".go") && !strings.HasSuffix(srcPath, ".meta") {
|
||||||
|
240
internal/descfield/field_gen.go
Normal file
240
internal/descfield/field_gen.go
Normal file
@ -0,0 +1,240 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
// Code generated by generate-protos. DO NOT EDIT.
|
||||||
|
|
||||||
|
// Package descfield contains constants for field numbers in descriptor.proto.
|
||||||
|
package descfield
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.FileDescriptorSet.
|
||||||
|
const (
|
||||||
|
FileDescriptorSet_File = 1 // repeated google.protobuf.FileDescriptorProto
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.FileDescriptorProto.
|
||||||
|
const (
|
||||||
|
FileDescriptorProto_Name = 1 // optional string
|
||||||
|
FileDescriptorProto_Package = 2 // optional string
|
||||||
|
FileDescriptorProto_Dependency = 3 // repeated string
|
||||||
|
FileDescriptorProto_PublicDependency = 10 // repeated int32
|
||||||
|
FileDescriptorProto_WeakDependency = 11 // repeated int32
|
||||||
|
FileDescriptorProto_MessageType = 4 // repeated google.protobuf.DescriptorProto
|
||||||
|
FileDescriptorProto_EnumType = 5 // repeated google.protobuf.EnumDescriptorProto
|
||||||
|
FileDescriptorProto_Service = 6 // repeated google.protobuf.ServiceDescriptorProto
|
||||||
|
FileDescriptorProto_Extension = 7 // repeated google.protobuf.FieldDescriptorProto
|
||||||
|
FileDescriptorProto_Options = 8 // optional google.protobuf.FileOptions
|
||||||
|
FileDescriptorProto_SourceCodeInfo = 9 // optional google.protobuf.SourceCodeInfo
|
||||||
|
FileDescriptorProto_Syntax = 12 // optional string
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.DescriptorProto.
|
||||||
|
const (
|
||||||
|
DescriptorProto_Name = 1 // optional string
|
||||||
|
DescriptorProto_Field = 2 // repeated google.protobuf.FieldDescriptorProto
|
||||||
|
DescriptorProto_Extension = 6 // repeated google.protobuf.FieldDescriptorProto
|
||||||
|
DescriptorProto_NestedType = 3 // repeated google.protobuf.DescriptorProto
|
||||||
|
DescriptorProto_EnumType = 4 // repeated google.protobuf.EnumDescriptorProto
|
||||||
|
DescriptorProto_ExtensionRange = 5 // repeated google.protobuf.DescriptorProto.ExtensionRange
|
||||||
|
DescriptorProto_OneofDecl = 8 // repeated google.protobuf.OneofDescriptorProto
|
||||||
|
DescriptorProto_Options = 7 // optional google.protobuf.MessageOptions
|
||||||
|
DescriptorProto_ReservedRange = 9 // repeated google.protobuf.DescriptorProto.ReservedRange
|
||||||
|
DescriptorProto_ReservedName = 10 // repeated string
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.DescriptorProto.ExtensionRange.
|
||||||
|
const (
|
||||||
|
DescriptorProto_ExtensionRange_Start = 1 // optional int32
|
||||||
|
DescriptorProto_ExtensionRange_End = 2 // optional int32
|
||||||
|
DescriptorProto_ExtensionRange_Options = 3 // optional google.protobuf.ExtensionRangeOptions
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.DescriptorProto.ReservedRange.
|
||||||
|
const (
|
||||||
|
DescriptorProto_ReservedRange_Start = 1 // optional int32
|
||||||
|
DescriptorProto_ReservedRange_End = 2 // optional int32
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.ExtensionRangeOptions.
|
||||||
|
const (
|
||||||
|
ExtensionRangeOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.FieldDescriptorProto.
|
||||||
|
const (
|
||||||
|
FieldDescriptorProto_Name = 1 // optional string
|
||||||
|
FieldDescriptorProto_Number = 3 // optional int32
|
||||||
|
FieldDescriptorProto_Label = 4 // optional google.protobuf.FieldDescriptorProto.Label
|
||||||
|
FieldDescriptorProto_Type = 5 // optional google.protobuf.FieldDescriptorProto.Type
|
||||||
|
FieldDescriptorProto_TypeName = 6 // optional string
|
||||||
|
FieldDescriptorProto_Extendee = 2 // optional string
|
||||||
|
FieldDescriptorProto_DefaultValue = 7 // optional string
|
||||||
|
FieldDescriptorProto_OneofIndex = 9 // optional int32
|
||||||
|
FieldDescriptorProto_JsonName = 10 // optional string
|
||||||
|
FieldDescriptorProto_Options = 8 // optional google.protobuf.FieldOptions
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.OneofDescriptorProto.
|
||||||
|
const (
|
||||||
|
OneofDescriptorProto_Name = 1 // optional string
|
||||||
|
OneofDescriptorProto_Options = 2 // optional google.protobuf.OneofOptions
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.EnumDescriptorProto.
|
||||||
|
const (
|
||||||
|
EnumDescriptorProto_Name = 1 // optional string
|
||||||
|
EnumDescriptorProto_Value = 2 // repeated google.protobuf.EnumValueDescriptorProto
|
||||||
|
EnumDescriptorProto_Options = 3 // optional google.protobuf.EnumOptions
|
||||||
|
EnumDescriptorProto_ReservedRange = 4 // repeated google.protobuf.EnumDescriptorProto.EnumReservedRange
|
||||||
|
EnumDescriptorProto_ReservedName = 5 // repeated string
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.EnumDescriptorProto.EnumReservedRange.
|
||||||
|
const (
|
||||||
|
EnumDescriptorProto_EnumReservedRange_Start = 1 // optional int32
|
||||||
|
EnumDescriptorProto_EnumReservedRange_End = 2 // optional int32
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.EnumValueDescriptorProto.
|
||||||
|
const (
|
||||||
|
EnumValueDescriptorProto_Name = 1 // optional string
|
||||||
|
EnumValueDescriptorProto_Number = 2 // optional int32
|
||||||
|
EnumValueDescriptorProto_Options = 3 // optional google.protobuf.EnumValueOptions
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.ServiceDescriptorProto.
|
||||||
|
const (
|
||||||
|
ServiceDescriptorProto_Name = 1 // optional string
|
||||||
|
ServiceDescriptorProto_Method = 2 // repeated google.protobuf.MethodDescriptorProto
|
||||||
|
ServiceDescriptorProto_Options = 3 // optional google.protobuf.ServiceOptions
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.MethodDescriptorProto.
|
||||||
|
const (
|
||||||
|
MethodDescriptorProto_Name = 1 // optional string
|
||||||
|
MethodDescriptorProto_InputType = 2 // optional string
|
||||||
|
MethodDescriptorProto_OutputType = 3 // optional string
|
||||||
|
MethodDescriptorProto_Options = 4 // optional google.protobuf.MethodOptions
|
||||||
|
MethodDescriptorProto_ClientStreaming = 5 // optional bool
|
||||||
|
MethodDescriptorProto_ServerStreaming = 6 // optional bool
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.FileOptions.
|
||||||
|
const (
|
||||||
|
FileOptions_JavaPackage = 1 // optional string
|
||||||
|
FileOptions_JavaOuterClassname = 8 // optional string
|
||||||
|
FileOptions_JavaMultipleFiles = 10 // optional bool
|
||||||
|
FileOptions_JavaGenerateEqualsAndHash = 20 // optional bool
|
||||||
|
FileOptions_JavaStringCheckUtf8 = 27 // optional bool
|
||||||
|
FileOptions_OptimizeFor = 9 // optional google.protobuf.FileOptions.OptimizeMode
|
||||||
|
FileOptions_GoPackage = 11 // optional string
|
||||||
|
FileOptions_CcGenericServices = 16 // optional bool
|
||||||
|
FileOptions_JavaGenericServices = 17 // optional bool
|
||||||
|
FileOptions_PyGenericServices = 18 // optional bool
|
||||||
|
FileOptions_PhpGenericServices = 42 // optional bool
|
||||||
|
FileOptions_Deprecated = 23 // optional bool
|
||||||
|
FileOptions_CcEnableArenas = 31 // optional bool
|
||||||
|
FileOptions_ObjcClassPrefix = 36 // optional string
|
||||||
|
FileOptions_CsharpNamespace = 37 // optional string
|
||||||
|
FileOptions_SwiftPrefix = 39 // optional string
|
||||||
|
FileOptions_PhpClassPrefix = 40 // optional string
|
||||||
|
FileOptions_PhpNamespace = 41 // optional string
|
||||||
|
FileOptions_PhpMetadataNamespace = 44 // optional string
|
||||||
|
FileOptions_RubyPackage = 45 // optional string
|
||||||
|
FileOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.MessageOptions.
|
||||||
|
const (
|
||||||
|
MessageOptions_MessageSetWireFormat = 1 // optional bool
|
||||||
|
MessageOptions_NoStandardDescriptorAccessor = 2 // optional bool
|
||||||
|
MessageOptions_Deprecated = 3 // optional bool
|
||||||
|
MessageOptions_MapEntry = 7 // optional bool
|
||||||
|
MessageOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.FieldOptions.
|
||||||
|
const (
|
||||||
|
FieldOptions_Ctype = 1 // optional google.protobuf.FieldOptions.CType
|
||||||
|
FieldOptions_Packed = 2 // optional bool
|
||||||
|
FieldOptions_Jstype = 6 // optional google.protobuf.FieldOptions.JSType
|
||||||
|
FieldOptions_Lazy = 5 // optional bool
|
||||||
|
FieldOptions_Deprecated = 3 // optional bool
|
||||||
|
FieldOptions_Weak = 10 // optional bool
|
||||||
|
FieldOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.OneofOptions.
|
||||||
|
const (
|
||||||
|
OneofOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.EnumOptions.
|
||||||
|
const (
|
||||||
|
EnumOptions_AllowAlias = 2 // optional bool
|
||||||
|
EnumOptions_Deprecated = 3 // optional bool
|
||||||
|
EnumOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.EnumValueOptions.
|
||||||
|
const (
|
||||||
|
EnumValueOptions_Deprecated = 1 // optional bool
|
||||||
|
EnumValueOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.ServiceOptions.
|
||||||
|
const (
|
||||||
|
ServiceOptions_Deprecated = 33 // optional bool
|
||||||
|
ServiceOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.MethodOptions.
|
||||||
|
const (
|
||||||
|
MethodOptions_Deprecated = 33 // optional bool
|
||||||
|
MethodOptions_IdempotencyLevel = 34 // optional google.protobuf.MethodOptions.IdempotencyLevel
|
||||||
|
MethodOptions_UninterpretedOption = 999 // repeated google.protobuf.UninterpretedOption
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.UninterpretedOption.
|
||||||
|
const (
|
||||||
|
UninterpretedOption_Name = 2 // repeated google.protobuf.UninterpretedOption.NamePart
|
||||||
|
UninterpretedOption_IdentifierValue = 3 // optional string
|
||||||
|
UninterpretedOption_PositiveIntValue = 4 // optional uint64
|
||||||
|
UninterpretedOption_NegativeIntValue = 5 // optional int64
|
||||||
|
UninterpretedOption_DoubleValue = 6 // optional double
|
||||||
|
UninterpretedOption_StringValue = 7 // optional bytes
|
||||||
|
UninterpretedOption_AggregateValue = 8 // optional string
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.UninterpretedOption.NamePart.
|
||||||
|
const (
|
||||||
|
UninterpretedOption_NamePart_NamePart = 1 // required string
|
||||||
|
UninterpretedOption_NamePart_IsExtension = 2 // required bool
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.SourceCodeInfo.
|
||||||
|
const (
|
||||||
|
SourceCodeInfo_Location = 1 // repeated google.protobuf.SourceCodeInfo.Location
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.SourceCodeInfo.Location.
|
||||||
|
const (
|
||||||
|
SourceCodeInfo_Location_Path = 1 // repeated int32
|
||||||
|
SourceCodeInfo_Location_Span = 2 // repeated int32
|
||||||
|
SourceCodeInfo_Location_LeadingComments = 3 // optional string
|
||||||
|
SourceCodeInfo_Location_TrailingComments = 4 // optional string
|
||||||
|
SourceCodeInfo_Location_LeadingDetachedComments = 6 // repeated string
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.GeneratedCodeInfo.
|
||||||
|
const (
|
||||||
|
GeneratedCodeInfo_Annotation = 1 // repeated google.protobuf.GeneratedCodeInfo.Annotation
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.GeneratedCodeInfo.Annotation.
|
||||||
|
const (
|
||||||
|
GeneratedCodeInfo_Annotation_Path = 1 // repeated int32
|
||||||
|
GeneratedCodeInfo_Annotation_SourceFile = 2 // optional string
|
||||||
|
GeneratedCodeInfo_Annotation_Begin = 3 // optional int32
|
||||||
|
GeneratedCodeInfo_Annotation_End = 4 // optional int32
|
||||||
|
)
|
@ -5,6 +5,7 @@
|
|||||||
package fileinit
|
package fileinit
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
descfield "github.com/golang/protobuf/v2/internal/descfield"
|
||||||
wire "github.com/golang/protobuf/v2/internal/encoding/wire"
|
wire "github.com/golang/protobuf/v2/internal/encoding/wire"
|
||||||
pref "github.com/golang/protobuf/v2/reflect/protoreflect"
|
pref "github.com/golang/protobuf/v2/reflect/protoreflect"
|
||||||
)
|
)
|
||||||
@ -88,36 +89,36 @@ func (fd *fileDesc) unmarshalSeed(b []byte) {
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fileDesc_Name:
|
case descfield.FileDescriptorProto_Name:
|
||||||
fd.path = nb.MakeString(v)
|
fd.path = nb.MakeString(v)
|
||||||
case fileDesc_Package:
|
case descfield.FileDescriptorProto_Package:
|
||||||
fd.protoPackage = pref.FullName(nb.MakeString(v))
|
fd.protoPackage = pref.FullName(nb.MakeString(v))
|
||||||
case fileDesc_Enums:
|
case descfield.FileDescriptorProto_EnumType:
|
||||||
if prevField != fileDesc_Enums {
|
if prevField != descfield.FileDescriptorProto_EnumType {
|
||||||
if numEnums > 0 {
|
if numEnums > 0 {
|
||||||
panic("non-contiguous repeated field")
|
panic("non-contiguous repeated field")
|
||||||
}
|
}
|
||||||
posEnums = len(b0) - len(b) - n - m
|
posEnums = len(b0) - len(b) - n - m
|
||||||
}
|
}
|
||||||
numEnums++
|
numEnums++
|
||||||
case fileDesc_Messages:
|
case descfield.FileDescriptorProto_MessageType:
|
||||||
if prevField != fileDesc_Messages {
|
if prevField != descfield.FileDescriptorProto_MessageType {
|
||||||
if numMessages > 0 {
|
if numMessages > 0 {
|
||||||
panic("non-contiguous repeated field")
|
panic("non-contiguous repeated field")
|
||||||
}
|
}
|
||||||
posMessages = len(b0) - len(b) - n - m
|
posMessages = len(b0) - len(b) - n - m
|
||||||
}
|
}
|
||||||
numMessages++
|
numMessages++
|
||||||
case fileDesc_Extensions:
|
case descfield.FileDescriptorProto_Extension:
|
||||||
if prevField != fileDesc_Extensions {
|
if prevField != descfield.FileDescriptorProto_Extension {
|
||||||
if numExtensions > 0 {
|
if numExtensions > 0 {
|
||||||
panic("non-contiguous repeated field")
|
panic("non-contiguous repeated field")
|
||||||
}
|
}
|
||||||
posExtensions = len(b0) - len(b) - n - m
|
posExtensions = len(b0) - len(b) - n - m
|
||||||
}
|
}
|
||||||
numExtensions++
|
numExtensions++
|
||||||
case fileDesc_Services:
|
case descfield.FileDescriptorProto_Service:
|
||||||
if prevField != fileDesc_Services {
|
if prevField != descfield.FileDescriptorProto_Service {
|
||||||
if numServices > 0 {
|
if numServices > 0 {
|
||||||
panic("non-contiguous repeated field")
|
panic("non-contiguous repeated field")
|
||||||
}
|
}
|
||||||
@ -199,7 +200,7 @@ func (ed *enumDesc) unmarshalSeed(b []byte, nb *nameBuilder, pf *fileDesc, pd pr
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case enumDesc_Name:
|
case descfield.EnumDescriptorProto_Name:
|
||||||
ed.fullName = nb.AppendFullName(pd.FullName(), v)
|
ed.fullName = nb.AppendFullName(pd.FullName(), v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -226,26 +227,26 @@ func (md *messageDesc) unmarshalSeed(b []byte, nb *nameBuilder, pf *fileDesc, pd
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case messageDesc_Name:
|
case descfield.DescriptorProto_Name:
|
||||||
md.fullName = nb.AppendFullName(pd.FullName(), v)
|
md.fullName = nb.AppendFullName(pd.FullName(), v)
|
||||||
case messageDesc_Enums:
|
case descfield.DescriptorProto_EnumType:
|
||||||
if prevField != messageDesc_Enums {
|
if prevField != descfield.DescriptorProto_EnumType {
|
||||||
if numEnums > 0 {
|
if numEnums > 0 {
|
||||||
panic("non-contiguous repeated field")
|
panic("non-contiguous repeated field")
|
||||||
}
|
}
|
||||||
posEnums = len(b0) - len(b) - n - m
|
posEnums = len(b0) - len(b) - n - m
|
||||||
}
|
}
|
||||||
numEnums++
|
numEnums++
|
||||||
case messageDesc_Messages:
|
case descfield.DescriptorProto_NestedType:
|
||||||
if prevField != messageDesc_Messages {
|
if prevField != descfield.DescriptorProto_NestedType {
|
||||||
if numMessages > 0 {
|
if numMessages > 0 {
|
||||||
panic("non-contiguous repeated field")
|
panic("non-contiguous repeated field")
|
||||||
}
|
}
|
||||||
posMessages = len(b0) - len(b) - n - m
|
posMessages = len(b0) - len(b) - n - m
|
||||||
}
|
}
|
||||||
numMessages++
|
numMessages++
|
||||||
case messageDesc_Extensions:
|
case descfield.DescriptorProto_Extension:
|
||||||
if prevField != messageDesc_Extensions {
|
if prevField != descfield.DescriptorProto_Extension {
|
||||||
if numExtensions > 0 {
|
if numExtensions > 0 {
|
||||||
panic("non-contiguous repeated field")
|
panic("non-contiguous repeated field")
|
||||||
}
|
}
|
||||||
@ -315,14 +316,14 @@ func (xd *extensionDesc) unmarshalSeed(b []byte, nb *nameBuilder, pf *fileDesc,
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fieldDesc_Number:
|
case descfield.FieldDescriptorProto_Number:
|
||||||
xd.number = pref.FieldNumber(v)
|
xd.number = pref.FieldNumber(v)
|
||||||
}
|
}
|
||||||
case wire.BytesType:
|
case wire.BytesType:
|
||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fieldDesc_Name:
|
case descfield.FieldDescriptorProto_Name:
|
||||||
xd.fullName = nb.AppendFullName(pd.FullName(), v)
|
xd.fullName = nb.AppendFullName(pd.FullName(), v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -345,7 +346,7 @@ func (sd *serviceDesc) unmarshalSeed(b []byte, nb *nameBuilder, pf *fileDesc, pd
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case serviceDesc_Name:
|
case descfield.ServiceDescriptorProto_Name:
|
||||||
sd.fullName = nb.AppendFullName(pd.FullName(), v)
|
sd.fullName = nb.AppendFullName(pd.FullName(), v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
|
descfield "github.com/golang/protobuf/v2/internal/descfield"
|
||||||
defval "github.com/golang/protobuf/v2/internal/encoding/defval"
|
defval "github.com/golang/protobuf/v2/internal/encoding/defval"
|
||||||
wire "github.com/golang/protobuf/v2/internal/encoding/wire"
|
wire "github.com/golang/protobuf/v2/internal/encoding/wire"
|
||||||
pimpl "github.com/golang/protobuf/v2/internal/impl"
|
pimpl "github.com/golang/protobuf/v2/internal/impl"
|
||||||
@ -344,16 +345,16 @@ func (fd *fileDesc) unmarshalFull(b []byte) {
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fileDesc_PublicImports:
|
case descfield.FileDescriptorProto_PublicDependency:
|
||||||
fd.lazy.imports[v].IsPublic = true
|
fd.lazy.imports[v].IsPublic = true
|
||||||
case fileDesc_WeakImports:
|
case descfield.FileDescriptorProto_WeakDependency:
|
||||||
fd.lazy.imports[v].IsWeak = true
|
fd.lazy.imports[v].IsWeak = true
|
||||||
}
|
}
|
||||||
case wire.BytesType:
|
case wire.BytesType:
|
||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fileDesc_Syntax:
|
case descfield.FileDescriptorProto_Syntax:
|
||||||
hasSyntax = true
|
hasSyntax = true
|
||||||
switch string(v) {
|
switch string(v) {
|
||||||
case "proto2":
|
case "proto2":
|
||||||
@ -363,23 +364,23 @@ func (fd *fileDesc) unmarshalFull(b []byte) {
|
|||||||
default:
|
default:
|
||||||
panic("invalid syntax")
|
panic("invalid syntax")
|
||||||
}
|
}
|
||||||
case fileDesc_Imports:
|
case descfield.FileDescriptorProto_Dependency:
|
||||||
fd.lazy.imports = append(fd.lazy.imports, pref.FileImport{
|
fd.lazy.imports = append(fd.lazy.imports, pref.FileImport{
|
||||||
FileDescriptor: ptype.PlaceholderFile(nb.MakeString(v), ""),
|
FileDescriptor: ptype.PlaceholderFile(nb.MakeString(v), ""),
|
||||||
})
|
})
|
||||||
case fileDesc_Enums:
|
case descfield.FileDescriptorProto_EnumType:
|
||||||
fd.enums.list[enumIdx].unmarshalFull(v, nb)
|
fd.enums.list[enumIdx].unmarshalFull(v, nb)
|
||||||
enumIdx++
|
enumIdx++
|
||||||
case fileDesc_Messages:
|
case descfield.FileDescriptorProto_MessageType:
|
||||||
fd.messages.list[messageIdx].unmarshalFull(v, nb)
|
fd.messages.list[messageIdx].unmarshalFull(v, nb)
|
||||||
messageIdx++
|
messageIdx++
|
||||||
case fileDesc_Extensions:
|
case descfield.FileDescriptorProto_Extension:
|
||||||
fd.extensions.list[extensionIdx].unmarshalFull(v, nb)
|
fd.extensions.list[extensionIdx].unmarshalFull(v, nb)
|
||||||
extensionIdx++
|
extensionIdx++
|
||||||
case fileDesc_Services:
|
case descfield.FileDescriptorProto_Service:
|
||||||
fd.services.list[serviceIdx].unmarshalFull(v, nb)
|
fd.services.list[serviceIdx].unmarshalFull(v, nb)
|
||||||
serviceIdx++
|
serviceIdx++
|
||||||
case fileDesc_Options:
|
case descfield.FileDescriptorProto_Options:
|
||||||
fd.lazy.options = append(fd.lazy.options, v...)
|
fd.lazy.options = append(fd.lazy.options, v...)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -405,13 +406,13 @@ func (ed *enumDesc) unmarshalFull(b []byte, nb *nameBuilder) {
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case enumDesc_Values:
|
case descfield.EnumDescriptorProto_Value:
|
||||||
rawValues = append(rawValues, v)
|
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)))
|
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))
|
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...)
|
ed.lazy.options = append(ed.lazy.options, v...)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -439,9 +440,9 @@ func unmarshalEnumReservedRange(b []byte) (r [2]pref.EnumNumber) {
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case enumReservedRange_Start:
|
case descfield.EnumDescriptorProto_EnumReservedRange_Start:
|
||||||
r[0] = pref.EnumNumber(v)
|
r[0] = pref.EnumNumber(v)
|
||||||
case enumReservedRange_End:
|
case descfield.EnumDescriptorProto_EnumReservedRange_End:
|
||||||
r[1] = pref.EnumNumber(v)
|
r[1] = pref.EnumNumber(v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -465,16 +466,16 @@ func (vd *enumValueDesc) unmarshalFull(b []byte, nb *nameBuilder, pf *fileDesc,
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case enumValueDesc_Number:
|
case descfield.EnumValueDescriptorProto_Number:
|
||||||
vd.number = pref.EnumNumber(v)
|
vd.number = pref.EnumNumber(v)
|
||||||
}
|
}
|
||||||
case wire.BytesType:
|
case wire.BytesType:
|
||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case enumValueDesc_Name:
|
case descfield.EnumValueDescriptorProto_Name:
|
||||||
vd.fullName = nb.AppendFullName(pd.FullName(), v)
|
vd.fullName = nb.AppendFullName(pd.FullName(), v)
|
||||||
case enumValueDesc_Options:
|
case descfield.EnumValueDescriptorProto_Options:
|
||||||
vd.options = append(vd.options, v...)
|
vd.options = append(vd.options, v...)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -498,28 +499,28 @@ func (md *messageDesc) unmarshalFull(b []byte, nb *nameBuilder) {
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case messageDesc_Fields:
|
case descfield.DescriptorProto_Field:
|
||||||
rawFields = append(rawFields, v)
|
rawFields = append(rawFields, v)
|
||||||
case messageDesc_Oneofs:
|
case descfield.DescriptorProto_OneofDecl:
|
||||||
rawOneofs = append(rawOneofs, v)
|
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)))
|
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))
|
md.lazy.resvRanges.list = append(md.lazy.resvRanges.list, unmarshalMessageReservedRange(v))
|
||||||
case messageDesc_ExtensionRanges:
|
case descfield.DescriptorProto_ExtensionRange:
|
||||||
r, opts := unmarshalMessageExtensionRange(v)
|
r, opts := unmarshalMessageExtensionRange(v)
|
||||||
md.lazy.extRanges.list = append(md.lazy.extRanges.list, r)
|
md.lazy.extRanges.list = append(md.lazy.extRanges.list, r)
|
||||||
md.lazy.extRangeOptions = append(md.lazy.extRangeOptions, opts)
|
md.lazy.extRangeOptions = append(md.lazy.extRangeOptions, opts)
|
||||||
case messageDesc_Enums:
|
case descfield.DescriptorProto_EnumType:
|
||||||
md.enums.list[enumIdx].unmarshalFull(v, nb)
|
md.enums.list[enumIdx].unmarshalFull(v, nb)
|
||||||
enumIdx++
|
enumIdx++
|
||||||
case messageDesc_Messages:
|
case descfield.DescriptorProto_NestedType:
|
||||||
md.messages.list[messageIdx].unmarshalFull(v, nb)
|
md.messages.list[messageIdx].unmarshalFull(v, nb)
|
||||||
messageIdx++
|
messageIdx++
|
||||||
case messageDesc_Extensions:
|
case descfield.DescriptorProto_Extension:
|
||||||
md.extensions.list[extensionIdx].unmarshalFull(v, nb)
|
md.extensions.list[extensionIdx].unmarshalFull(v, nb)
|
||||||
extensionIdx++
|
extensionIdx++
|
||||||
case messageDesc_Options:
|
case descfield.DescriptorProto_Options:
|
||||||
md.unmarshalOptions(v)
|
md.unmarshalOptions(v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -557,7 +558,7 @@ func (md *messageDesc) unmarshalOptions(b []byte) {
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case messageOptions_IsMapEntry:
|
case descfield.MessageOptions_MapEntry:
|
||||||
md.lazy.isMapEntry = wire.DecodeBool(v)
|
md.lazy.isMapEntry = wire.DecodeBool(v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -576,9 +577,9 @@ func unmarshalMessageReservedRange(b []byte) (r [2]pref.FieldNumber) {
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case messageReservedRange_Start:
|
case descfield.DescriptorProto_ReservedRange_Start:
|
||||||
r[0] = pref.FieldNumber(v)
|
r[0] = pref.FieldNumber(v)
|
||||||
case messageReservedRange_End:
|
case descfield.DescriptorProto_ReservedRange_End:
|
||||||
r[1] = pref.FieldNumber(v)
|
r[1] = pref.FieldNumber(v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -598,16 +599,16 @@ func unmarshalMessageExtensionRange(b []byte) (r [2]pref.FieldNumber, opts []byt
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case messageExtensionRange_Start:
|
case descfield.DescriptorProto_ExtensionRange_Start:
|
||||||
r[0] = pref.FieldNumber(v)
|
r[0] = pref.FieldNumber(v)
|
||||||
case messageExtensionRange_End:
|
case descfield.DescriptorProto_ExtensionRange_End:
|
||||||
r[1] = pref.FieldNumber(v)
|
r[1] = pref.FieldNumber(v)
|
||||||
}
|
}
|
||||||
case wire.BytesType:
|
case wire.BytesType:
|
||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case messageExtensionRange_Options:
|
case descfield.DescriptorProto_ExtensionRange_Options:
|
||||||
opts = append(opts, v...)
|
opts = append(opts, v...)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -633,13 +634,13 @@ func (fd *fieldDesc) unmarshalFull(b []byte, nb *nameBuilder, pf *fileDesc, pd p
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fieldDesc_Number:
|
case descfield.FieldDescriptorProto_Number:
|
||||||
fd.number = pref.FieldNumber(v)
|
fd.number = pref.FieldNumber(v)
|
||||||
case fieldDesc_Cardinality:
|
case descfield.FieldDescriptorProto_Label:
|
||||||
fd.cardinality = pref.Cardinality(v)
|
fd.cardinality = pref.Cardinality(v)
|
||||||
case fieldDesc_Kind:
|
case descfield.FieldDescriptorProto_Type:
|
||||||
fd.kind = pref.Kind(v)
|
fd.kind = pref.Kind(v)
|
||||||
case fieldDesc_OneofIndex:
|
case descfield.FieldDescriptorProto_OneofIndex:
|
||||||
// In messageDesc.UnmarshalFull, we allocate slices for both
|
// In messageDesc.UnmarshalFull, we allocate slices for both
|
||||||
// the field and oneof descriptors before unmarshaling either
|
// the field and oneof descriptors before unmarshaling either
|
||||||
// of them. This ensures pointers to slice elements are stable.
|
// of them. This ensures pointers to slice elements are stable.
|
||||||
@ -654,17 +655,17 @@ func (fd *fieldDesc) unmarshalFull(b []byte, nb *nameBuilder, pf *fileDesc, pd p
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fieldDesc_Name:
|
case descfield.FieldDescriptorProto_Name:
|
||||||
fd.fullName = nb.AppendFullName(pd.FullName(), v)
|
fd.fullName = nb.AppendFullName(pd.FullName(), v)
|
||||||
case fieldDesc_JSONName:
|
case descfield.FieldDescriptorProto_JsonName:
|
||||||
fd.hasJSONName = true
|
fd.hasJSONName = true
|
||||||
fd.jsonName = nb.MakeString(v)
|
fd.jsonName = nb.MakeString(v)
|
||||||
case fieldDesc_Default:
|
case descfield.FieldDescriptorProto_DefaultValue:
|
||||||
fd.defVal.has = true
|
fd.defVal.has = true
|
||||||
rawDefVal = v
|
rawDefVal = v
|
||||||
case fieldDesc_TypeName:
|
case descfield.FieldDescriptorProto_TypeName:
|
||||||
rawTypeName = v
|
rawTypeName = v
|
||||||
case fieldDesc_Options:
|
case descfield.FieldDescriptorProto_Options:
|
||||||
fd.unmarshalOptions(v)
|
fd.unmarshalOptions(v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -703,10 +704,10 @@ func (fd *fieldDesc) unmarshalOptions(b []byte) {
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fieldOptions_IsPacked:
|
case descfield.FieldOptions_Packed:
|
||||||
fd.hasPacked = true
|
fd.hasPacked = true
|
||||||
fd.isPacked = wire.DecodeBool(v)
|
fd.isPacked = wire.DecodeBool(v)
|
||||||
case fieldOptions_IsWeak:
|
case descfield.FieldOptions_Weak:
|
||||||
fd.isWeak = wire.DecodeBool(v)
|
fd.isWeak = wire.DecodeBool(v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -729,9 +730,9 @@ func (od *oneofDesc) unmarshalFull(b []byte, nb *nameBuilder, pf *fileDesc, pd p
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case oneofDesc_Name:
|
case descfield.OneofDescriptorProto_Name:
|
||||||
od.fullName = nb.AppendFullName(pd.FullName(), v)
|
od.fullName = nb.AppendFullName(pd.FullName(), v)
|
||||||
case oneofDesc_Options:
|
case descfield.OneofDescriptorProto_Options:
|
||||||
od.options = append(od.options, v...)
|
od.options = append(od.options, v...)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -754,22 +755,22 @@ func (xd *extensionDesc) unmarshalFull(b []byte, nb *nameBuilder) {
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fieldDesc_Cardinality:
|
case descfield.FieldDescriptorProto_Label:
|
||||||
xd.lazy.cardinality = pref.Cardinality(v)
|
xd.lazy.cardinality = pref.Cardinality(v)
|
||||||
case fieldDesc_Kind:
|
case descfield.FieldDescriptorProto_Type:
|
||||||
xd.lazy.kind = pref.Kind(v)
|
xd.lazy.kind = pref.Kind(v)
|
||||||
}
|
}
|
||||||
case wire.BytesType:
|
case wire.BytesType:
|
||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fieldDesc_JSONName:
|
case descfield.FieldDescriptorProto_JsonName:
|
||||||
xd.lazy.hasJSONName = true
|
xd.lazy.hasJSONName = true
|
||||||
xd.lazy.jsonName = nb.MakeString(v)
|
xd.lazy.jsonName = nb.MakeString(v)
|
||||||
case fieldDesc_Default:
|
case descfield.FieldDescriptorProto_DefaultValue:
|
||||||
xd.lazy.defVal.has = true
|
xd.lazy.defVal.has = true
|
||||||
rawDefVal = v
|
rawDefVal = v
|
||||||
case fieldDesc_Options:
|
case descfield.FieldDescriptorProto_Options:
|
||||||
xd.unmarshalOptions(v)
|
xd.unmarshalOptions(v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -799,7 +800,7 @@ func (xd *extensionDesc) unmarshalOptions(b []byte) {
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case fieldOptions_IsPacked:
|
case descfield.FieldOptions_Packed:
|
||||||
xd.lazy.isPacked = wire.DecodeBool(v)
|
xd.lazy.isPacked = wire.DecodeBool(v)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -820,9 +821,9 @@ func (sd *serviceDesc) unmarshalFull(b []byte, nb *nameBuilder) {
|
|||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case serviceDesc_Methods:
|
case descfield.ServiceDescriptorProto_Method:
|
||||||
rawMethods = append(rawMethods, v)
|
rawMethods = append(rawMethods, v)
|
||||||
case serviceDesc_Options:
|
case descfield.ServiceDescriptorProto_Options:
|
||||||
sd.lazy.options = append(sd.lazy.options, v...)
|
sd.lazy.options = append(sd.lazy.options, v...)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -854,18 +855,18 @@ func (md *methodDesc) unmarshalFull(b []byte, nb *nameBuilder, pf *fileDesc, pd
|
|||||||
v, m := wire.ConsumeVarint(b)
|
v, m := wire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case methodDesc_IsStreamingClient:
|
case descfield.MethodDescriptorProto_ClientStreaming:
|
||||||
md.isStreamingClient = wire.DecodeBool(v)
|
md.isStreamingClient = wire.DecodeBool(v)
|
||||||
case methodDesc_IsStreamingServer:
|
case descfield.MethodDescriptorProto_ServerStreaming:
|
||||||
md.isStreamingServer = wire.DecodeBool(v)
|
md.isStreamingServer = wire.DecodeBool(v)
|
||||||
}
|
}
|
||||||
case wire.BytesType:
|
case wire.BytesType:
|
||||||
v, m := wire.ConsumeBytes(b)
|
v, m := wire.ConsumeBytes(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
switch num {
|
switch num {
|
||||||
case methodDesc_Name:
|
case descfield.MethodDescriptorProto_Name:
|
||||||
md.fullName = nb.AppendFullName(pd.FullName(), v)
|
md.fullName = nb.AppendFullName(pd.FullName(), v)
|
||||||
case methodDesc_Options:
|
case descfield.MethodDescriptorProto_Options:
|
||||||
md.options = append(md.options, v...)
|
md.options = append(md.options, v...)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -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
|
|
||||||
)
|
|
@ -29,6 +29,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
|
"github.com/golang/protobuf/v2/internal/descfield"
|
||||||
"github.com/golang/protobuf/v2/internal/scalar"
|
"github.com/golang/protobuf/v2/internal/scalar"
|
||||||
"github.com/golang/protobuf/v2/reflect/protodesc"
|
"github.com/golang/protobuf/v2/reflect/protodesc"
|
||||||
"github.com/golang/protobuf/v2/reflect/protoreflect"
|
"github.com/golang/protobuf/v2/reflect/protoreflect"
|
||||||
@ -519,9 +520,9 @@ type Message struct {
|
|||||||
func newMessage(gen *Plugin, f *File, parent *Message, desc protoreflect.MessageDescriptor) *Message {
|
func newMessage(gen *Plugin, f *File, parent *Message, desc protoreflect.MessageDescriptor) *Message {
|
||||||
var loc Location
|
var loc Location
|
||||||
if parent != nil {
|
if parent != nil {
|
||||||
loc = parent.Location.appendPath(messageMessageField, int32(desc.Index()))
|
loc = parent.Location.appendPath(descfield.DescriptorProto_NestedType, int32(desc.Index()))
|
||||||
} else {
|
} else {
|
||||||
loc = f.location(fileMessageField, int32(desc.Index()))
|
loc = f.location(descfield.FileDescriptorProto_MessageType, int32(desc.Index()))
|
||||||
}
|
}
|
||||||
message := &Message{
|
message := &Message{
|
||||||
Desc: desc,
|
Desc: desc,
|
||||||
@ -637,11 +638,11 @@ func newField(gen *Plugin, f *File, message *Message, desc protoreflect.FieldDes
|
|||||||
var loc Location
|
var loc Location
|
||||||
switch {
|
switch {
|
||||||
case desc.ExtendedType() != nil && message == nil:
|
case desc.ExtendedType() != nil && message == nil:
|
||||||
loc = f.location(fileExtensionField, int32(desc.Index()))
|
loc = f.location(descfield.FileDescriptorProto_Extension, int32(desc.Index()))
|
||||||
case desc.ExtendedType() != nil && message != nil:
|
case desc.ExtendedType() != nil && message != nil:
|
||||||
loc = message.Location.appendPath(messageExtensionField, int32(desc.Index()))
|
loc = message.Location.appendPath(descfield.DescriptorProto_Extension, int32(desc.Index()))
|
||||||
default:
|
default:
|
||||||
loc = message.Location.appendPath(messageFieldField, int32(desc.Index()))
|
loc = message.Location.appendPath(descfield.DescriptorProto_Field, int32(desc.Index()))
|
||||||
}
|
}
|
||||||
field := &Field{
|
field := &Field{
|
||||||
Desc: desc,
|
Desc: desc,
|
||||||
@ -702,7 +703,7 @@ func newOneof(gen *Plugin, f *File, message *Message, desc protoreflect.OneofDes
|
|||||||
Desc: desc,
|
Desc: desc,
|
||||||
ParentMessage: message,
|
ParentMessage: message,
|
||||||
GoName: camelCase(string(desc.Name())),
|
GoName: camelCase(string(desc.Name())),
|
||||||
Location: message.Location.appendPath(messageOneofField, int32(desc.Index())),
|
Location: message.Location.appendPath(descfield.DescriptorProto_OneofDecl, int32(desc.Index())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -724,9 +725,9 @@ type Enum struct {
|
|||||||
func newEnum(gen *Plugin, f *File, parent *Message, desc protoreflect.EnumDescriptor) *Enum {
|
func newEnum(gen *Plugin, f *File, parent *Message, desc protoreflect.EnumDescriptor) *Enum {
|
||||||
var loc Location
|
var loc Location
|
||||||
if parent != nil {
|
if parent != nil {
|
||||||
loc = parent.Location.appendPath(messageEnumField, int32(desc.Index()))
|
loc = parent.Location.appendPath(descfield.DescriptorProto_EnumType, int32(desc.Index()))
|
||||||
} else {
|
} else {
|
||||||
loc = f.location(fileEnumField, int32(desc.Index()))
|
loc = f.location(descfield.FileDescriptorProto_EnumType, int32(desc.Index()))
|
||||||
}
|
}
|
||||||
enum := &Enum{
|
enum := &Enum{
|
||||||
Desc: desc,
|
Desc: desc,
|
||||||
@ -761,7 +762,7 @@ func newEnumValue(gen *Plugin, f *File, message *Message, enum *Enum, desc proto
|
|||||||
return &EnumValue{
|
return &EnumValue{
|
||||||
Desc: desc,
|
Desc: desc,
|
||||||
GoIdent: f.GoImportPath.Ident(name),
|
GoIdent: f.GoImportPath.Ident(name),
|
||||||
Location: enum.Location.appendPath(enumValueField, int32(desc.Index())),
|
Location: enum.Location.appendPath(descfield.EnumDescriptorProto_Value, int32(desc.Index())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -778,7 +779,7 @@ func newService(gen *Plugin, f *File, desc protoreflect.ServiceDescriptor) *Serv
|
|||||||
service := &Service{
|
service := &Service{
|
||||||
Desc: desc,
|
Desc: desc,
|
||||||
GoName: camelCase(string(desc.Name())),
|
GoName: camelCase(string(desc.Name())),
|
||||||
Location: f.location(fileServiceField, int32(desc.Index())),
|
Location: f.location(descfield.FileDescriptorProto_Service, int32(desc.Index())),
|
||||||
}
|
}
|
||||||
for i, mdescs := 0, desc.Methods(); i < mdescs.Len(); i++ {
|
for i, mdescs := 0, desc.Methods(); i < mdescs.Len(); i++ {
|
||||||
service.Methods = append(service.Methods, newMethod(gen, f, service, mdescs.Get(i)))
|
service.Methods = append(service.Methods, newMethod(gen, f, service, mdescs.Get(i)))
|
||||||
@ -802,7 +803,7 @@ func newMethod(gen *Plugin, f *File, service *Service, desc protoreflect.MethodD
|
|||||||
Desc: desc,
|
Desc: desc,
|
||||||
GoName: camelCase(string(desc.Name())),
|
GoName: camelCase(string(desc.Name())),
|
||||||
ParentService: service,
|
ParentService: service,
|
||||||
Location: service.Location.appendPath(serviceMethodField, int32(desc.Index())),
|
Location: service.Location.appendPath(descfield.ServiceDescriptorProto_Method, int32(desc.Index())),
|
||||||
}
|
}
|
||||||
return method
|
return method
|
||||||
}
|
}
|
||||||
@ -1081,34 +1082,6 @@ const (
|
|||||||
pathTypeSourceRelative
|
pathTypeSourceRelative
|
||||||
)
|
)
|
||||||
|
|
||||||
// The SourceCodeInfo message describes the location of elements of a parsed
|
|
||||||
// .proto file by way of a "path", which is a sequence of integers that
|
|
||||||
// describe the route from a FileDescriptorProto to the relevant submessage.
|
|
||||||
// The path alternates between a field number of a repeated field, and an index
|
|
||||||
// into that repeated field. The constants below define the field numbers that
|
|
||||||
// are used.
|
|
||||||
//
|
|
||||||
// See descriptor.proto for more information about this.
|
|
||||||
const (
|
|
||||||
// field numbers in FileDescriptorProto
|
|
||||||
filePackageField = 2 // package
|
|
||||||
fileMessageField = 4 // message_type
|
|
||||||
fileEnumField = 5 // enum_type
|
|
||||||
fileServiceField = 6 // service
|
|
||||||
fileExtensionField = 7 // extension
|
|
||||||
// field numbers in DescriptorProto
|
|
||||||
messageFieldField = 2 // field
|
|
||||||
messageMessageField = 3 // nested_type
|
|
||||||
messageEnumField = 4 // enum_type
|
|
||||||
messageExtensionField = 6 // extension
|
|
||||||
messageOneofField = 8 // oneof_decl
|
|
||||||
// field numbers in EnumDescriptorProto
|
|
||||||
enumValueField = 2 // value
|
|
||||||
// field numbers in ServiceDescriptorProto
|
|
||||||
serviceMethodField = 2 // method
|
|
||||||
serviceStreamField = 4 // stream
|
|
||||||
)
|
|
||||||
|
|
||||||
// A Location is a location in a .proto source file.
|
// A Location is a location in a .proto source file.
|
||||||
//
|
//
|
||||||
// See the google.protobuf.SourceCodeInfo documentation in descriptor.proto
|
// See the google.protobuf.SourceCodeInfo documentation in descriptor.proto
|
||||||
|
Loading…
x
Reference in New Issue
Block a user