cmd/protoc-gen-go: generate def= protobuf field tag, default constants

Change-Id: Id5cc34f0c1a5eb72f19e648844a5480827bcbda3
Reviewed-on: https://go-review.googlesource.com/135256
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
This commit is contained in:
Damien Neil 2018-09-13 08:50:13 -07:00
parent e6fa22ab33
commit ebc699d099
3 changed files with 256 additions and 71 deletions

View File

@ -13,6 +13,7 @@ import (
"encoding/hex"
"flag"
"fmt"
"math"
"strconv"
"strings"
@ -321,6 +322,59 @@ func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *File, messag
})
g.P()
// Constants and vars holding the default values of fields.
for _, field := range message.Fields {
if !field.Desc.HasDefault() {
continue
}
defVarName := "Default_" + message.GoIdent.GoName + "_" + field.GoIdent.GoName
def := field.Desc.Default()
switch field.Desc.Kind() {
case protoreflect.StringKind:
g.P("const ", defVarName, " string = ", strconv.Quote(def.String()))
case protoreflect.BytesKind:
g.P("var ", defVarName, " []byte = []byte(", strconv.Quote(string(def.Bytes())), ")")
case protoreflect.EnumKind:
enum := field.EnumType
evalue := enum.Values[enum.Desc.Values().ByNumber(def.Enum()).Index()]
g.P("const ", defVarName, " ", field.EnumType.GoIdent, " = ", evalue.GoIdent)
case protoreflect.FloatKind, protoreflect.DoubleKind:
// Floating point numbers need extra handling for -Inf/Inf/NaN.
f := field.Desc.Default().Float()
goType := "float64"
if field.Desc.Kind() == protoreflect.FloatKind {
goType = "float32"
}
// funcCall returns a call to a function in the math package,
// possibly converting the result to float32.
funcCall := func(fn, param string) string {
s := g.QualifiedGoIdent(protogen.GoIdent{
GoImportPath: "math",
GoName: fn,
}) + param
if goType != "float64" {
s = goType + "(" + s + ")"
}
return s
}
switch {
case math.IsInf(f, -1):
g.P("var ", defVarName, " ", goType, " = ", funcCall("Inf", "(-1)"))
case math.IsInf(f, 1):
g.P("var ", defVarName, " ", goType, " = ", funcCall("Inf", "(1)"))
case math.IsNaN(f):
g.P("var ", defVarName, " ", goType, " = ", funcCall("NaN", "()"))
default:
g.P("const ", defVarName, " ", goType, " = ", f)
}
default:
goType := fieldGoType(g, field)
goType = strings.TrimPrefix(goType, "*")
g.P("const ", defVarName, " ", goType, " = ", def.Interface())
}
}
g.P()
// TODO: getters
for _, nested := range message.Messages {
@ -390,7 +444,6 @@ func fieldProtobufTag(field *protogen.Field) string {
case protoreflect.Repeated:
tag = append(tag, "rep")
}
// TODO: default values
// TODO: packed
// name
name := string(field.Desc.Name())
@ -417,6 +470,36 @@ func fieldProtobufTag(field *protogen.Field) string {
if field.Desc.OneofType() != nil {
tag = append(tag, "oneof")
}
// default value
// This must appear last in the tag, since commas in strings aren't escaped.
if field.Desc.HasDefault() {
var def string
switch field.Desc.Kind() {
case protoreflect.BoolKind:
if field.Desc.Default().Bool() {
def = "1"
} else {
def = "0"
}
case protoreflect.BytesKind:
def = string(field.Desc.Default().Bytes())
case protoreflect.FloatKind, protoreflect.DoubleKind:
f := field.Desc.Default().Float()
switch {
case math.IsInf(f, -1):
def = "-inf"
case math.IsInf(f, 1):
def = "inf"
case math.IsNaN(f):
def = "nan"
default:
def = fmt.Sprint(f)
}
default:
def = fmt.Sprint(field.Desc.Default().Interface())
}
tag = append(tag, "def="+def)
}
return strings.Join(tag, ",")
}

View File

@ -3,7 +3,10 @@
package proto2
import proto "github.com/golang/protobuf/proto"
import (
proto "github.com/golang/protobuf/proto"
math "math"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
@ -15,14 +18,17 @@ type FieldTestMessage_Enum int32
const (
FieldTestMessage_ZERO FieldTestMessage_Enum = 0
FieldTestMessage_ONE FieldTestMessage_Enum = 1
)
var FieldTestMessage_Enum_name = map[int32]string{
0: "ZERO",
1: "ONE",
}
var FieldTestMessage_Enum_value = map[string]int32{
"ZERO": 0,
"ONE": 1,
}
func (x FieldTestMessage_Enum) Enum() *FieldTestMessage_Enum {
@ -49,7 +55,7 @@ func (FieldTestMessage_Enum) EnumDescriptor() ([]byte, []int) {
}
type FieldTestMessage struct {
OptionalBool *string `protobuf:"bytes,1,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
OptionalBool *bool `protobuf:"varint,1,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
OptionalEnum *FieldTestMessage_Enum `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
OptionalInt32 *int32 `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
OptionalSint32 *int32 `protobuf:"zigzag32,4,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
@ -67,7 +73,7 @@ type FieldTestMessage struct {
OptionalBytes []byte `protobuf:"bytes,16,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
Optional_Message *FieldTestMessage_Message `protobuf:"bytes,17,opt,name=optional_Message,json=optionalMessage" json:"optional_Message,omitempty"`
Optionalgroup *FieldTestMessage_OptionalGroup `protobuf:"group,18,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
RequiredBool *string `protobuf:"bytes,101,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
RequiredBool *bool `protobuf:"varint,101,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
RequiredEnum *FieldTestMessage_Enum `protobuf:"varint,102,req,name=required_enum,json=requiredEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"required_enum,omitempty"`
RequiredInt32 *int32 `protobuf:"varint,103,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
RequiredSint32 *int32 `protobuf:"zigzag32,104,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
@ -85,7 +91,7 @@ type FieldTestMessage struct {
RequiredBytes []byte `protobuf:"bytes,116,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
Required_Message *FieldTestMessage_Message `protobuf:"bytes,117,req,name=required_Message,json=requiredMessage" json:"required_Message,omitempty"`
Requiredgroup *FieldTestMessage_RequiredGroup `protobuf:"group,118,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
RepeatedBool []string `protobuf:"bytes,201,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
RepeatedBool []bool `protobuf:"varint,201,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
RepeatedEnum []FieldTestMessage_Enum `protobuf:"varint,202,rep,name=repeated_enum,json=repeatedEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"repeated_enum,omitempty"`
RepeatedInt32 []int32 `protobuf:"varint,203,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
RepeatedSint32 []int32 `protobuf:"zigzag32,204,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
@ -103,6 +109,28 @@ type FieldTestMessage struct {
RepeatedBytes [][]byte `protobuf:"bytes,216,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
Repeated_Message []*FieldTestMessage_Message `protobuf:"bytes,217,rep,name=repeated_Message,json=repeatedMessage" json:"repeated_Message,omitempty"`
Repeatedgroup []*FieldTestMessage_RepeatedGroup `protobuf:"group,218,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
DefaultBool *bool `protobuf:"varint,301,opt,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
DefaultEnum *FieldTestMessage_Enum `protobuf:"varint,302,opt,name=default_enum,json=defaultEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum,def=1" json:"default_enum,omitempty"`
DefaultInt32 *int32 `protobuf:"varint,303,opt,name=default_int32,json=defaultInt32,def=1" json:"default_int32,omitempty"`
DefaultSint32 *int32 `protobuf:"zigzag32,304,opt,name=default_sint32,json=defaultSint32,def=1" json:"default_sint32,omitempty"`
DefaultUint32 *uint32 `protobuf:"varint,305,opt,name=default_uint32,json=defaultUint32,def=1" json:"default_uint32,omitempty"`
DefaultInt64 *int64 `protobuf:"varint,306,opt,name=default_int64,json=defaultInt64,def=1" json:"default_int64,omitempty"`
DefaultSint64 *int64 `protobuf:"zigzag64,307,opt,name=default_sint64,json=defaultSint64,def=1" json:"default_sint64,omitempty"`
DefaultUint64 *uint64 `protobuf:"varint,308,opt,name=default_uint64,json=defaultUint64,def=1" json:"default_uint64,omitempty"`
DefaultSfixed32 *int32 `protobuf:"fixed32,309,opt,name=default_sfixed32,json=defaultSfixed32,def=1" json:"default_sfixed32,omitempty"`
DefaultFixed32 *uint32 `protobuf:"fixed32,310,opt,name=default_fixed32,json=defaultFixed32,def=1" json:"default_fixed32,omitempty"`
DefaultFloat *float32 `protobuf:"fixed32,311,opt,name=default_float,json=defaultFloat,def=1.5" json:"default_float,omitempty"`
DefaultSfixed64 *int64 `protobuf:"fixed64,312,opt,name=default_sfixed64,json=defaultSfixed64,def=1" json:"default_sfixed64,omitempty"`
DefaultFixed64 *uint64 `protobuf:"fixed64,313,opt,name=default_fixed64,json=defaultFixed64,def=1" json:"default_fixed64,omitempty"`
DefaultDouble *float64 `protobuf:"fixed64,314,opt,name=default_double,json=defaultDouble,def=1.5" json:"default_double,omitempty"`
DefaultString *string `protobuf:"bytes,315,opt,name=default_string,json=defaultString,def=x,y" json:"default_string,omitempty"`
DefaultBytes []byte `protobuf:"bytes,316,opt,name=default_bytes,json=defaultBytes,def=x,y" json:"default_bytes,omitempty"`
DefaultFloatNeginf *float32 `protobuf:"fixed32,400,opt,name=default_float_neginf,json=defaultFloatNeginf,def=-inf" json:"default_float_neginf,omitempty"`
DefaultFloatPosinf *float32 `protobuf:"fixed32,401,opt,name=default_float_posinf,json=defaultFloatPosinf,def=inf" json:"default_float_posinf,omitempty"`
DefaultFloatNan *float32 `protobuf:"fixed32,402,opt,name=default_float_nan,json=defaultFloatNan,def=nan" json:"default_float_nan,omitempty"`
DefaultDoubleNeginf *float64 `protobuf:"fixed64,403,opt,name=default_double_neginf,json=defaultDoubleNeginf,def=-inf" json:"default_double_neginf,omitempty"`
DefaultDoublePosinf *float64 `protobuf:"fixed64,404,opt,name=default_double_posinf,json=defaultDoublePosinf,def=inf" json:"default_double_posinf,omitempty"`
DefaultDoubleNan *float64 `protobuf:"fixed64,405,opt,name=default_double_nan,json=defaultDoubleNan,def=nan" json:"default_double_nan,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -132,6 +160,30 @@ func (m *FieldTestMessage) XXX_DiscardUnknown() {
var xxx_messageInfo_FieldTestMessage proto.InternalMessageInfo
const Default_FieldTestMessage_DefaultBool bool = true
const Default_FieldTestMessage_DefaultEnum FieldTestMessage_Enum = FieldTestMessage_ONE
const Default_FieldTestMessage_DefaultInt32 int32 = 1
const Default_FieldTestMessage_DefaultSint32 int32 = 1
const Default_FieldTestMessage_DefaultUint32 uint32 = 1
const Default_FieldTestMessage_DefaultInt64 int64 = 1
const Default_FieldTestMessage_DefaultSint64 int64 = 1
const Default_FieldTestMessage_DefaultUint64 uint64 = 1
const Default_FieldTestMessage_DefaultSfixed32 int32 = 1
const Default_FieldTestMessage_DefaultFixed32 uint32 = 1
const Default_FieldTestMessage_DefaultFloat float32 = 1.5
const Default_FieldTestMessage_DefaultSfixed64 int64 = 1
const Default_FieldTestMessage_DefaultFixed64 uint64 = 1
const Default_FieldTestMessage_DefaultDouble float64 = 1.5
const Default_FieldTestMessage_DefaultString string = "x,y"
var Default_FieldTestMessage_DefaultBytes []byte = []byte("x,y")
var Default_FieldTestMessage_DefaultFloatNeginf float32 = float32(math.Inf(-1))
var Default_FieldTestMessage_DefaultFloatPosinf float32 = float32(math.Inf(1))
var Default_FieldTestMessage_DefaultFloatNan float32 = float32(math.NaN())
var Default_FieldTestMessage_DefaultDoubleNeginf float64 = math.Inf(-1)
var Default_FieldTestMessage_DefaultDoublePosinf float64 = math.Inf(1)
var Default_FieldTestMessage_DefaultDoubleNan float64 = math.NaN()
type FieldTestMessage_OptionalGroup struct {
OptionalGroup *string `protobuf:"bytes,19,opt,name=optional_group,json=optionalGroup" json:"optional_group,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -262,66 +314,89 @@ func init() {
func init() { proto.RegisterFile("proto2/fields.proto", fileDescriptor_fd8a9d72b841fd68) }
var fileDescriptor_fd8a9d72b841fd68 = []byte{
// 969 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x96, 0xdb, 0x6f, 0x1b, 0x45,
0x14, 0xc6, 0x99, 0x89, 0x9b, 0x34, 0xdb, 0x38, 0x71, 0xb6, 0x02, 0x8d, 0x78, 0x3a, 0x2a, 0xb7,
0x01, 0x5a, 0x5b, 0x72, 0x87, 0x41, 0x88, 0xb7, 0x88, 0xa6, 0xe2, 0x01, 0x55, 0x2c, 0xf0, 0x92,
0x22, 0x55, 0x4e, 0xbc, 0x59, 0x0c, 0x1b, 0x8f, 0x6b, 0xaf, 0xb9, 0xfc, 0x7d, 0x3c, 0x71, 0xbf,
0xdf, 0xff, 0x19, 0x74, 0xe6, 0xcc, 0x65, 0x67, 0xdd, 0x87, 0x26, 0x4f, 0xb6, 0x4f, 0xbe, 0xf3,
0x7d, 0x73, 0xc6, 0xe7, 0xe7, 0x4d, 0x76, 0x73, 0xb1, 0x34, 0x8d, 0x19, 0x8f, 0xce, 0x67, 0x65,
0x3d, 0x5d, 0x0d, 0xed, 0xa7, 0xfc, 0xd9, 0xca, 0xd8, 0x37, 0xf4, 0xf1, 0x8c, 0x5e, 0xc6, 0xb7,
0xbe, 0x7e, 0x2e, 0x1b, 0x1c, 0xa3, 0xee, 0xc3, 0x72, 0xd5, 0xbc, 0x57, 0xae, 0x56, 0x93, 0xaa,
0xcc, 0x5f, 0xc8, 0xfa, 0x66, 0xd1, 0xcc, 0xcc, 0x7c, 0x52, 0x3f, 0x3a, 0x35, 0xa6, 0x16, 0x0c,
0x98, 0xdc, 0x2d, 0xf6, 0x7c, 0xf1, 0xc8, 0x98, 0x3a, 0x7f, 0xbf, 0x25, 0x2a, 0xe7, 0xeb, 0x0b,
0xc1, 0x81, 0xc9, 0xfd, 0xf1, 0xed, 0xe1, 0x13, 0x83, 0x86, 0xdd, 0x90, 0xe1, 0xbd, 0xf9, 0xfa,
0x22, 0x5a, 0xe2, 0xa7, 0xfc, 0xa5, 0x6c, 0x3f, 0x58, 0xce, 0xe6, 0xcd, 0xdd, 0xb1, 0xd8, 0x02,
0x26, 0xaf, 0x15, 0x21, 0xe8, 0x5d, 0x2c, 0xe6, 0xaf, 0x64, 0x07, 0x41, 0xb6, 0x22, 0x5d, 0x0f,
0x98, 0x3c, 0x2c, 0x42, 0xf7, 0x07, 0xb3, 0x0d, 0xe1, 0x9a, 0x84, 0xd7, 0x80, 0xc9, 0x7e, 0x14,
0x7e, 0x44, 0xc2, 0x4e, 0xb0, 0x56, 0x62, 0x1b, 0x98, 0xdc, 0x4a, 0x82, 0xb5, 0xda, 0x08, 0xd6,
0x4a, 0xec, 0x00, 0x93, 0x79, 0x1a, 0xdc, 0x11, 0xae, 0x49, 0x78, 0x1d, 0x98, 0xec, 0xa5, 0xc1,
0x5a, 0xe5, 0xaf, 0x67, 0x87, 0xd1, 0xf1, 0x7c, 0xf6, 0x65, 0x39, 0xbd, 0x3b, 0x16, 0xbb, 0xc0,
0xe4, 0x41, 0x31, 0x08, 0x9e, 0xae, 0x9e, 0xbf, 0x9a, 0x85, 0xda, 0x23, 0xaf, 0xcd, 0x80, 0xc9,
0x9d, 0x22, 0xa4, 0x1d, 0x3b, 0x69, 0x7b, 0xa0, 0xf3, 0xda, 0x4c, 0x1a, 0x71, 0x03, 0x98, 0xe4,
0x71, 0xa0, 0x63, 0x2c, 0x3e, 0x21, 0x5e, 0x2b, 0xb1, 0x07, 0x4c, 0x0e, 0xba, 0xf1, 0x5a, 0x6d,
0xc6, 0x6b, 0x25, 0xfa, 0xc0, 0xe4, 0x76, 0x27, 0xbe, 0x33, 0xff, 0xd4, 0xac, 0x4f, 0xeb, 0x52,
0xec, 0x03, 0x93, 0x2c, 0xce, 0xff, 0x8e, 0xad, 0xa6, 0x37, 0xda, 0x2c, 0x67, 0xf3, 0x4a, 0x1c,
0xd8, 0x5d, 0x8b, 0x37, 0x6a, 0xab, 0xc9, 0x40, 0xa7, 0x5f, 0x35, 0xe5, 0x4a, 0x0c, 0x80, 0xc9,
0xbd, 0x38, 0xd0, 0x11, 0x16, 0xf3, 0x93, 0xd6, 0x19, 0xdd, 0xa2, 0x89, 0x43, 0x60, 0xf2, 0xc6,
0x78, 0xf4, 0xb4, 0x7b, 0xe9, 0x5e, 0xe3, 0x50, 0x9e, 0x8a, 0x87, 0x71, 0xe1, 0xab, 0xa5, 0x59,
0x2f, 0x44, 0x0e, 0x4c, 0x66, 0xe3, 0x37, 0x9e, 0xd6, 0xf8, 0x81, 0x6b, 0xbe, 0x8f, 0xcd, 0x45,
0xea, 0x85, 0xc8, 0x2d, 0xcb, 0xc7, 0xeb, 0xd9, 0xb2, 0x9c, 0x12, 0x72, 0x25, 0x70, 0x44, 0xce,
0x17, 0x3d, 0x72, 0x41, 0x64, 0x91, 0x3b, 0x07, 0x7e, 0x79, 0xe4, 0xbc, 0x85, 0x47, 0x2e, 0x58,
0x12, 0x21, 0x15, 0x70, 0x44, 0xce, 0x57, 0x03, 0x72, 0x41, 0xe6, 0x90, 0xfb, 0x04, 0x38, 0x22,
0xe7, 0xcb, 0x11, 0xb9, 0x20, 0x74, 0xc8, 0xcd, 0x80, 0x23, 0x72, 0xbe, 0x1c, 0x91, 0x6b, 0x07,
0x6b, 0x25, 0x3e, 0x05, 0x8e, 0xc8, 0xb5, 0x82, 0x69, 0x93, 0x92, 0x60, 0xad, 0xc4, 0x67, 0xc0,
0x11, 0xb9, 0x76, 0x70, 0x47, 0xe8, 0x90, 0xab, 0x81, 0x23, 0x72, 0xed, 0x60, 0x42, 0x2e, 0x3a,
0x7a, 0x8c, 0x2e, 0x80, 0x23, 0x72, 0xc1, 0xb3, 0x85, 0x5c, 0x10, 0x7b, 0xed, 0x1c, 0x38, 0x22,
0xe7, 0xeb, 0x2d, 0xe4, 0xa2, 0xd4, 0x22, 0x67, 0x80, 0x23, 0x72, 0x41, 0xe8, 0x91, 0xeb, 0xc4,
0x6b, 0x25, 0x16, 0xc0, 0x11, 0xb9, 0x34, 0x9e, 0x90, 0x4b, 0xe3, 0xb5, 0x12, 0x8f, 0x81, 0x23,
0x72, 0x49, 0x7c, 0x67, 0x7e, 0x87, 0xdc, 0x12, 0x38, 0x22, 0xe7, 0xcb, 0x11, 0xb9, 0x78, 0x00,
0x42, 0x6e, 0x65, 0x77, 0x2d, 0xde, 0x68, 0x40, 0x2e, 0xae, 0xa4, 0x45, 0xae, 0x01, 0x8e, 0xc8,
0x85, 0x9d, 0xf4, 0xc8, 0x05, 0x99, 0x47, 0x6e, 0x0d, 0xfc, 0x4a, 0xc8, 0x79, 0xa3, 0x16, 0x72,
0xbe, 0x44, 0xc8, 0x7d, 0x0e, 0xfc, 0x32, 0xc8, 0x15, 0xae, 0xd9, 0x21, 0x97, 0x78, 0xe5, 0x2f,
0xa2, 0xf9, 0xa2, 0x9c, 0x34, 0x1e, 0xb9, 0x6f, 0x18, 0x6c, 0x11, 0x73, 0x54, 0xb5, 0xcc, 0x15,
0x2d, 0x95, 0x65, 0xee, 0x5b, 0x54, 0x5d, 0x01, 0x3a, 0xf2, 0xb0, 0xd0, 0xbd, 0x8c, 0x37, 0xeb,
0x3c, 0x89, 0x91, 0xef, 0xd0, 0xd4, 0x52, 0x47, 0x65, 0xa2, 0x4e, 0xe2, 0x57, 0xe5, 0x74, 0x8e,
0xba, 0xef, 0x51, 0x68, 0xb1, 0xa3, 0xba, 0xc3, 0xae, 0xad, 0x74, 0xd8, 0xfd, 0x80, 0xca, 0x7e,
0x54, 0x3a, 0xee, 0x3a, 0xd9, 0x5a, 0x89, 0x1f, 0x51, 0xb8, 0x95, 0x64, 0x6b, 0xb5, 0x91, 0xad,
0x95, 0xf8, 0x09, 0x85, 0x79, 0x9a, 0xdd, 0x51, 0x3a, 0xf2, 0x7e, 0x46, 0x65, 0x2f, 0xcd, 0xd6,
0x2a, 0xbf, 0x8d, 0xbb, 0xef, 0x3d, 0x3d, 0x4e, 0xbf, 0xa0, 0xd6, 0xb2, 0xe7, 0x5c, 0x3d, 0x7b,
0xaf, 0x65, 0xa1, 0x16, 0xd8, 0xfb, 0x15, 0xc5, 0x16, 0x3e, 0xfa, 0x83, 0x87, 0xaf, 0x3d, 0x15,
0xc1, 0xf7, 0x1b, 0x2a, 0x79, 0x9c, 0x8a, 0xe8, 0xdb, 0x3c, 0x81, 0x56, 0xe2, 0x77, 0x94, 0x0e,
0xba, 0x27, 0xd0, 0x6a, 0xf3, 0x04, 0x5a, 0x89, 0x3f, 0x50, 0xbc, 0xdd, 0x39, 0x41, 0xe7, 0x16,
0x1c, 0x7f, 0x7f, 0xa2, 0x94, 0xc5, 0x5b, 0x70, 0x00, 0x26, 0x37, 0x4b, 0x00, 0xfe, 0x45, 0x9b,
0x17, 0x6f, 0x96, 0x08, 0x6c, 0x4f, 0x45, 0x04, 0xfe, 0x8d, 0xc2, 0xbd, 0x38, 0x15, 0x21, 0xf8,
0xb0, 0x75, 0x4e, 0x8f, 0xe0, 0x3f, 0xa8, 0xbc, 0x1a, 0x83, 0xe4, 0xe4, 0x19, 0xfc, 0x38, 0x02,
0x40, 0x0c, 0xfe, 0x8b, 0xce, 0x97, 0x82, 0x90, 0xba, 0x03, 0x84, 0x2d, 0xb3, 0xe7, 0x75, 0xd6,
0x4f, 0x9e, 0x8b, 0xc9, 0x83, 0x9e, 0xf2, 0x6e, 0xda, 0x7f, 0x08, 0xc2, 0xf3, 0xf2, 0xbe, 0xef,
0x4b, 0xe0, 0x4e, 0x7e, 0xad, 0xa8, 0xef, 0x0b, 0xfb, 0xab, 0x16, 0xa0, 0xa7, 0xbe, 0x37, 0xb1,
0xaf, 0x75, 0x9e, 0xe4, 0x8e, 0xa9, 0xef, 0x3f, 0xfa, 0x32, 0xc2, 0x41, 0xa9, 0x71, 0x37, 0xdb,
0x71, 0x03, 0xdd, 0x1a, 0x64, 0x3d, 0x8b, 0xf1, 0xf5, 0xac, 0x77, 0x72, 0xaf, 0x78, 0x30, 0x78,
0xe6, 0xe8, 0xed, 0x93, 0xb7, 0x2a, 0x63, 0xaa, 0xba, 0x1c, 0x56, 0xa6, 0x9e, 0xcc, 0xab, 0xa1,
0x59, 0x56, 0x23, 0x7b, 0x1f, 0xa3, 0xb3, 0x8b, 0x29, 0xbd, 0x3b, 0xbb, 0x53, 0x95, 0xf3, 0x3b,
0x95, 0x19, 0x35, 0xe5, 0xaa, 0x99, 0x4e, 0x9a, 0x09, 0x95, 0xc7, 0xff, 0x07, 0x00, 0x00, 0xff,
0xff, 0xc9, 0x6e, 0x69, 0xe6, 0xaf, 0x0b, 0x00, 0x00,
// 1337 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0x59, 0x73, 0xdc, 0x44,
0x10, 0xc7, 0x19, 0x69, 0xe3, 0x63, 0xb2, 0x6b, 0xaf, 0x15, 0x52, 0x35, 0xf0, 0x40, 0x4d, 0x85,
0x23, 0x0a, 0x89, 0xd7, 0x64, 0xa3, 0x4c, 0x88, 0x79, 0x4b, 0x11, 0x53, 0x3c, 0x90, 0x80, 0x20,
0x2f, 0x0e, 0x55, 0x2e, 0xd9, 0xab, 0x15, 0x0b, 0x6b, 0x69, 0xb3, 0xab, 0x85, 0xe4, 0x5b, 0x70,
0x7e, 0x0c, 0xee, 0xfb, 0xf8, 0x02, 0xdc, 0xf7, 0xfd, 0x61, 0xa0, 0x7a, 0x7a, 0x66, 0x34, 0x23,
0xe5, 0x21, 0xf6, 0x93, 0xbd, 0xbd, 0xff, 0xee, 0x7f, 0x77, 0x5b, 0xbf, 0xd1, 0x98, 0x1e, 0x9b,
0x4c, 0x8b, 0xb2, 0xe8, 0x6f, 0x0c, 0x47, 0xe9, 0x78, 0x30, 0xeb, 0xc9, 0x4f, 0xc1, 0xf1, 0xac,
0x90, 0xbf, 0xe0, 0xc7, 0x3d, 0xfc, 0xd1, 0x3f, 0xf1, 0xdf, 0x7d, 0xb4, 0xbb, 0x05, 0xba, 0xe7,
0xd2, 0x59, 0xf9, 0x54, 0x3a, 0x9b, 0x25, 0x59, 0x1a, 0xdc, 0x4f, 0x3b, 0xc5, 0xa4, 0x1c, 0x15,
0x79, 0x32, 0xde, 0xd9, 0x2d, 0x8a, 0x31, 0x23, 0x9c, 0x84, 0x4b, 0x71, 0x5b, 0x07, 0x2f, 0x15,
0xc5, 0x38, 0x78, 0xc6, 0x12, 0xa5, 0xf9, 0x7c, 0x9f, 0x79, 0x9c, 0x84, 0x2b, 0xfd, 0x33, 0xbd,
0xdb, 0x1a, 0xf5, 0xea, 0x26, 0xbd, 0xcb, 0xf9, 0x7c, 0xbf, 0x2a, 0x09, 0x9f, 0x82, 0x07, 0xe9,
0x8a, 0x29, 0x39, 0xca, 0xcb, 0x73, 0x7d, 0xe6, 0x73, 0x12, 0x1e, 0x89, 0x8d, 0xd1, 0x93, 0x10,
0x0c, 0x4e, 0xd2, 0x55, 0x23, 0x9b, 0xa1, 0xae, 0xc5, 0x49, 0xb8, 0x16, 0x9b, 0xec, 0x67, 0x47,
0x0d, 0xe1, 0x1c, 0x85, 0x47, 0x38, 0x09, 0x3b, 0x95, 0xf0, 0x1a, 0x0a, 0x6b, 0xc6, 0x22, 0x62,
0x0b, 0x9c, 0x84, 0xbe, 0x63, 0x2c, 0xa2, 0x86, 0xb1, 0x88, 0xd8, 0x22, 0x27, 0x61, 0xe0, 0x1a,
0xd7, 0x84, 0x73, 0x14, 0x2e, 0x71, 0x12, 0xb6, 0x5c, 0x63, 0x11, 0x05, 0xa7, 0xe9, 0x5a, 0x55,
0x71, 0x38, 0xba, 0x99, 0x0e, 0xce, 0xf5, 0xd9, 0x32, 0x27, 0xe1, 0x6a, 0xdc, 0x35, 0x35, 0x55,
0x3c, 0x38, 0x45, 0x4d, 0x6c, 0x47, 0x6b, 0x29, 0x27, 0xe1, 0x62, 0x6c, 0xdc, 0xb6, 0x94, 0xd4,
0x1e, 0x68, 0x38, 0x2e, 0x92, 0x92, 0x1d, 0xe5, 0x24, 0xf4, 0xaa, 0x81, 0xb6, 0x20, 0x78, 0x1b,
0x7b, 0x11, 0xb1, 0x36, 0x27, 0x61, 0xb7, 0x6e, 0x2f, 0xa2, 0xa6, 0xbd, 0x88, 0x58, 0x87, 0x93,
0x70, 0xa1, 0x66, 0x5f, 0x9b, 0x7f, 0x50, 0xcc, 0x77, 0xc7, 0x29, 0x5b, 0xe1, 0x24, 0x24, 0xd5,
0xfc, 0x8f, 0xcb, 0xa8, 0xbb, 0xd1, 0x72, 0x3a, 0xca, 0x33, 0xb6, 0xca, 0x49, 0xb8, 0x6c, 0x6d,
0x54, 0x46, 0x9d, 0x81, 0x76, 0x6f, 0x95, 0xe9, 0x8c, 0x75, 0x39, 0x09, 0xdb, 0xd5, 0x40, 0x97,
0x20, 0x18, 0x6c, 0x5b, 0x3d, 0xaa, 0x07, 0x8d, 0xad, 0x71, 0x12, 0x1e, 0xed, 0x6f, 0xdc, 0xe9,
0x73, 0xa9, 0x7e, 0x56, 0x43, 0x69, 0x2a, 0xae, 0x57, 0x0f, 0x7c, 0x36, 0x2d, 0xe6, 0x13, 0x16,
0x70, 0x12, 0xd2, 0xfe, 0xf9, 0x3b, 0x2d, 0x7c, 0x55, 0x25, 0x3f, 0x01, 0xc9, 0xb1, 0x5b, 0x0b,
0x90, 0x9b, 0xa6, 0x37, 0xe6, 0xa3, 0x69, 0x3a, 0x40, 0xe4, 0x52, 0xee, 0x01, 0x72, 0x3a, 0xa8,
0x91, 0x33, 0x22, 0x89, 0xdc, 0x90, 0x7b, 0x07, 0x47, 0x4e, 0x97, 0xd0, 0xc8, 0x99, 0x92, 0x48,
0x48, 0xc6, 0x3d, 0x40, 0x4e, 0x47, 0x0d, 0x72, 0x46, 0xa6, 0x90, 0x7b, 0x81, 0x7b, 0x80, 0x9c,
0x0e, 0x57, 0xc8, 0x19, 0xa1, 0x42, 0x6e, 0xc4, 0x3d, 0x40, 0x4e, 0x87, 0x2b, 0xe4, 0x6c, 0x63,
0x11, 0xb1, 0x17, 0xb9, 0x07, 0xc8, 0x59, 0xc6, 0xf8, 0x24, 0x39, 0xc6, 0x22, 0x62, 0x2f, 0x71,
0x0f, 0x90, 0xb3, 0x8d, 0x6b, 0x42, 0x85, 0xdc, 0x98, 0x7b, 0x80, 0x9c, 0x6d, 0x8c, 0xc8, 0x55,
0x15, 0x35, 0x46, 0xfb, 0xdc, 0x03, 0xe4, 0x4c, 0x4d, 0x0b, 0x39, 0x23, 0xd6, 0xda, 0x9c, 0x7b,
0x80, 0x9c, 0x8e, 0x5b, 0xc8, 0x55, 0x52, 0x89, 0x5c, 0xc1, 0x3d, 0x40, 0xce, 0x08, 0x35, 0x72,
0x35, 0x7b, 0x11, 0xb1, 0x09, 0xf7, 0x00, 0x39, 0xd7, 0x1e, 0x91, 0x73, 0xed, 0x45, 0xc4, 0x6e,
0x70, 0x0f, 0x90, 0x73, 0xec, 0x6b, 0xf3, 0x2b, 0xe4, 0xa6, 0xdc, 0x03, 0xe4, 0x74, 0xb8, 0x42,
0xae, 0x6a, 0x00, 0x91, 0x9b, 0x71, 0x0f, 0x90, 0x33, 0xf6, 0x06, 0xb9, 0xea, 0x91, 0x94, 0xc8,
0x95, 0xdc, 0x03, 0xe4, 0xcc, 0x33, 0xa9, 0x91, 0x33, 0x32, 0x8d, 0xdc, 0x9c, 0x7b, 0x87, 0x42,
0x4e, 0x17, 0xb2, 0x90, 0xd3, 0x21, 0x44, 0xee, 0x65, 0xee, 0x1d, 0x04, 0xb9, 0x58, 0x25, 0x2b,
0xe4, 0x9c, 0x5a, 0xc1, 0x03, 0x50, 0x7c, 0x92, 0x26, 0xa5, 0x46, 0xee, 0x6b, 0xc2, 0x7d, 0x64,
0x0e, 0xa3, 0x92, 0xb9, 0xd8, 0x52, 0x49, 0xe6, 0xbe, 0x01, 0xd5, 0x21, 0xa0, 0xc3, 0x1a, 0x12,
0xba, 0x87, 0x60, 0xb3, 0xaa, 0x26, 0x32, 0xf2, 0x2d, 0x14, 0x95, 0xd4, 0x61, 0x18, 0xa9, 0x0b,
0xe1, 0x4f, 0xa5, 0x74, 0x8a, 0xba, 0xef, 0x40, 0x28, 0xb1, 0xc3, 0xb8, 0xc2, 0xce, 0x56, 0x2a,
0xec, 0xbe, 0x07, 0x65, 0xa7, 0x52, 0x2a, 0xee, 0x6a, 0xde, 0x22, 0x62, 0x3f, 0x80, 0xd0, 0x77,
0xbc, 0x45, 0xd4, 0xf0, 0x16, 0x11, 0xfb, 0x11, 0x84, 0x81, 0xeb, 0x5d, 0x53, 0x2a, 0xf2, 0x7e,
0x02, 0x65, 0xcb, 0xf5, 0x16, 0x51, 0x70, 0x06, 0x9e, 0x7d, 0x5d, 0x53, 0xe3, 0xf4, 0x33, 0x68,
0x25, 0x7b, 0xaa, 0xaa, 0x66, 0xef, 0x61, 0x6a, 0x62, 0x86, 0xbd, 0x5f, 0x40, 0x2c, 0xe1, 0xc3,
0x2f, 0x34, 0x7c, 0xf6, 0x54, 0x08, 0xdf, 0xaf, 0xa0, 0xf4, 0xaa, 0xa9, 0x90, 0xbe, 0x66, 0x07,
0x22, 0x62, 0xbf, 0x81, 0xb4, 0x5b, 0xef, 0x40, 0x44, 0xcd, 0x0e, 0x44, 0xc4, 0x7e, 0x07, 0xf1,
0x42, 0xad, 0x83, 0xda, 0x16, 0x14, 0x7f, 0x7f, 0x80, 0x94, 0x54, 0x5b, 0x50, 0x00, 0x3a, 0x9b,
0x45, 0x00, 0xff, 0x04, 0xe5, 0xb2, 0xb5, 0x59, 0x24, 0xd0, 0x9e, 0x0a, 0x09, 0xfc, 0x0b, 0x84,
0xed, 0x6a, 0x2a, 0x44, 0xf0, 0xba, 0xd5, 0xa7, 0x46, 0xf0, 0x6f, 0x50, 0x1e, 0x8e, 0x41, 0xac,
0xa4, 0x19, 0x7c, 0xbe, 0x02, 0x00, 0x19, 0xfc, 0x07, 0x2a, 0x1f, 0x08, 0x42, 0xcc, 0x36, 0x10,
0x5a, 0xc5, 0x82, 0x90, 0xb6, 0x07, 0xe9, 0x30, 0x99, 0x8f, 0x4b, 0x64, 0xf0, 0x6d, 0xb8, 0x45,
0x2e, 0x6d, 0xb6, 0xca, 0xe9, 0x3c, 0x8d, 0x8f, 0xaa, 0xaf, 0x24, 0x88, 0xd7, 0x2a, 0xa5, 0xe4,
0xf0, 0x9d, 0x43, 0xdc, 0x37, 0x37, 0xfd, 0xab, 0x57, 0x2e, 0x9b, 0xb2, 0x92, 0xc5, 0x93, 0xb4,
0xa3, 0xcb, 0x22, 0x37, 0xef, 0x42, 0xdd, 0x23, 0x9b, 0xe4, 0x6c, 0xac, 0xfd, 0x10, 0xc6, 0x53,
0x74, 0x45, 0x0b, 0x15, 0x8b, 0xef, 0x81, 0x72, 0x0d, 0x94, 0xba, 0x84, 0xa2, 0xd1, 0x92, 0x2a,
0x18, 0xdf, 0x07, 0x69, 0xc7, 0x96, 0x5e, 0xd3, 0xef, 0x4b, 0xdb, 0x5e, 0x44, 0xec, 0x03, 0x50,
0xfa, 0x35, 0x7b, 0xf9, 0x2a, 0x70, 0xec, 0x45, 0xc4, 0x3e, 0x04, 0x65, 0x50, 0xb7, 0x77, 0xa5,
0x8a, 0xc7, 0x8f, 0x40, 0xda, 0xaa, 0xdb, 0x8b, 0x28, 0x58, 0xa7, 0x5d, 0x53, 0x55, 0x33, 0xf6,
0x31, 0x88, 0x57, 0x41, 0xbc, 0xaa, 0xeb, 0x6a, 0x24, 0x4f, 0x53, 0x1d, 0x32, 0x44, 0x7e, 0x02,
0xea, 0x45, 0x50, 0x6b, 0xd3, 0x2d, 0xf3, 0xee, 0x34, 0xa3, 0x21, 0x92, 0x9f, 0x82, 0xd4, 0xdb,
0xf4, 0xcf, 0xf6, 0xce, 0x9b, 0xe1, 0x10, 0xcb, 0x46, 0x1b, 0x22, 0x62, 0x9f, 0x81, 0xba, 0xdb,
0x6c, 0x43, 0xbe, 0xc2, 0xdd, 0x36, 0x44, 0xc4, 0x3e, 0x07, 0xf5, 0x42, 0xa3, 0x0d, 0x29, 0x36,
0xdb, 0x50, 0x5c, 0x7e, 0x01, 0x5a, 0x82, 0x7d, 0xe8, 0x16, 0x15, 0x9b, 0x96, 0x58, 0xa1, 0xf9,
0x25, 0x88, 0x97, 0x37, 0xfd, 0x9b, 0x67, 0x6e, 0x55, 0x7b, 0x46, 0x3c, 0xad, 0x01, 0x91, 0xce,
0xaf, 0x40, 0xdb, 0x46, 0xad, 0x1e, 0x10, 0x09, 0xbd, 0x40, 0xef, 0x76, 0x76, 0xb1, 0x93, 0xa7,
0xd9, 0x28, 0x1f, 0xb2, 0x57, 0x7d, 0xb9, 0x92, 0xd6, 0xfa, 0x28, 0x1f, 0xc6, 0x81, 0xbd, 0x93,
0x2b, 0x52, 0x10, 0x88, 0x7a, 0xe2, 0xa4, 0x98, 0x41, 0xe2, 0x6b, 0x98, 0xe8, 0x37, 0xf2, 0x9e,
0x96, 0xdf, 0x07, 0x8f, 0xd0, 0xb5, 0x9a, 0x61, 0x92, 0xb3, 0xd7, 0x55, 0x52, 0x9e, 0xe4, 0x66,
0xa9, 0x68, 0x96, 0xe4, 0xc1, 0x45, 0x7a, 0xdc, 0xdd, 0x93, 0xee, 0xf1, 0x0d, 0x5f, 0xae, 0x0b,
0x7b, 0x3c, 0xe6, 0xec, 0x4b, 0x35, 0xf9, 0x68, 0x23, 0x55, 0x75, 0xf9, 0x26, 0xa6, 0xfa, 0xcd,
0x4c, 0xd5, 0x66, 0x9f, 0x06, 0x75, 0xd3, 0x24, 0x67, 0x6f, 0xa9, 0x34, 0xe8, 0xb3, 0xeb, 0x1a,
0x26, 0xf9, 0xbd, 0x82, 0x76, 0x9c, 0xab, 0xb4, 0xf3, 0xbf, 0x01, 0x1e, 0x51, 0xc7, 0xe4, 0xff,
0x10, 0xe6, 0x8a, 0x2d, 0x65, 0x90, 0xe7, 0xdc, 0x07, 0x9c, 0x0b, 0x0e, 0xe6, 0xbd, 0x22, 0x2f,
0x42, 0xe6, 0x9e, 0x80, 0x79, 0x17, 0x20, 0xcf, 0x3a, 0xc2, 0x9c, 0x63, 0x19, 0xf3, 0xfe, 0xc5,
0xf3, 0xdb, 0x9c, 0x6d, 0x98, 0xb8, 0x4c, 0x17, 0xd5, 0xe1, 0x73, 0xe2, 0x1e, 0xda, 0x92, 0xa7,
0xcd, 0x12, 0x6d, 0x6d, 0x5f, 0x8e, 0xaf, 0x76, 0xef, 0x0a, 0x16, 0x29, 0x9c, 0x45, 0x5d, 0x72,
0xe9, 0xb1, 0xed, 0x8b, 0x59, 0x51, 0x64, 0xe3, 0xb4, 0x97, 0x15, 0xe3, 0x24, 0xcf, 0x7a, 0xc5,
0x34, 0xdb, 0x90, 0x87, 0xd8, 0xc6, 0xde, 0xfe, 0x00, 0x7f, 0xdb, 0x5b, 0xcf, 0xd2, 0x7c, 0x3d,
0x2b, 0x36, 0xca, 0x74, 0x56, 0x0e, 0x92, 0x32, 0xc1, 0x70, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff,
0xff, 0xd7, 0x14, 0x76, 0x33, 0xeb, 0x0f, 0x00, 0x00,
}

View File

@ -9,7 +9,7 @@ package goproto.protoc.proto2;
option go_package = "google.golang.org/proto/cmd/protoc-gen-go/testdata/proto2";
message FieldTestMessage {
optional string optional_bool = 1;
optional bool optional_bool = 1;
optional Enum optional_enum = 2;
optional int32 optional_int32 = 3;
optional sint32 optional_sint32 = 4;
@ -30,7 +30,7 @@ message FieldTestMessage {
optional string optional_group = 19;
}
required string required_bool = 101;
required bool required_bool = 101;
required Enum required_enum = 102;
required int32 required_int32 = 103;
required sint32 required_sint32 = 104;
@ -51,7 +51,7 @@ message FieldTestMessage {
required string required_group = 119;
}
repeated string repeated_bool = 201;
repeated bool repeated_bool = 201;
repeated Enum repeated_enum = 202;
repeated int32 repeated_int32 = 203;
repeated sint32 repeated_sint32 = 204;
@ -72,6 +72,33 @@ message FieldTestMessage {
repeated string repeated_group = 219;
}
enum Enum { ZERO = 0; }
optional bool default_bool = 301 [default=true];
optional Enum default_enum = 302 [default=ONE];
optional int32 default_int32 = 303 [default=1];
optional sint32 default_sint32 = 304 [default=1];
optional uint32 default_uint32 = 305 [default=1];
optional int64 default_int64 = 306 [default=1];
optional sint64 default_sint64 = 307 [default=1];
optional uint64 default_uint64 = 308 [default=1];
optional sfixed32 default_sfixed32 = 309 [default=1];
optional fixed32 default_fixed32 = 310 [default=1];
optional float default_float = 311 [default=1.5];
optional sfixed64 default_sfixed64 = 312 [default=1];
optional fixed64 default_fixed64 = 313 [default=1];
optional double default_double = 314 [default=1.5];
optional string default_string = 315 [default="x,y"];
optional bytes default_bytes = 316 [default="x,y"];
optional float default_float_neginf = 400 [default=-inf];
optional float default_float_posinf = 401 [default=inf];
optional float default_float_nan = 402 [default=nan];
optional double default_double_neginf = 403 [default=-inf];
optional double default_double_posinf = 404 [default=inf];
optional double default_double_nan = 405 [default=nan];
enum Enum {
ZERO = 0;
ONE = 1;
}
message Message {}
}