From ebc699d09917d3b867eb08fe8470657c3a355592 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Thu, 13 Sep 2018 08:50:13 -0700 Subject: [PATCH] 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 --- cmd/protoc-gen-go/main.go | 85 ++++++- .../testdata/proto2/fields.pb.go | 207 ++++++++++++------ .../testdata/proto2/fields.proto | 35 ++- 3 files changed, 256 insertions(+), 71 deletions(-) diff --git a/cmd/protoc-gen-go/main.go b/cmd/protoc-gen-go/main.go index 9213ea82..b90b43c2 100644 --- a/cmd/protoc-gen-go/main.go +++ b/cmd/protoc-gen-go/main.go @@ -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, ",") } diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go index f3302a5f..5100c7a3 100644 --- a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go +++ b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go @@ -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, } diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.proto b/cmd/protoc-gen-go/testdata/proto2/fields.proto index 1e65c6da..f0a2bb3a 100644 --- a/cmd/protoc-gen-go/testdata/proto2/fields.proto +++ b/cmd/protoc-gen-go/testdata/proto2/fields.proto @@ -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 {} }