Permit omission of a colon before a message-typed map value.
diff --git a/proto/decode.go b/proto/decode.go
index 88622c3..129792e 100644
--- a/proto/decode.go
+++ b/proto/decode.go
@@ -518,9 +518,7 @@
if err != nil {
return err
}
- sp := new(string)
- *sp = s
- *structPointer_String(base, p.field) = sp
+ *structPointer_String(base, p.field) = &s
return nil
}
diff --git a/proto/text_parser.go b/proto/text_parser.go
index ddd9579..d1caeff 100644
--- a/proto/text_parser.go
+++ b/proto/text_parser.go
@@ -570,7 +570,7 @@
if err := p.consumeToken("value"); err != nil {
return err
}
- if err := p.consumeToken(":"); err != nil {
+ if err := p.checkForColon(props.mvalprop, dst.Type().Elem()); err != nil {
return err
}
if err := p.readAny(val, props.mvalprop); err != nil {
diff --git a/proto/text_parser_test.go b/proto/text_parser_test.go
index e5ee8b9..1360e8e 100644
--- a/proto/text_parser_test.go
+++ b/proto/text_parser_test.go
@@ -463,6 +463,7 @@
m := new(MessageWithMap)
const in = `name_mapping:<key:1234 value:"Feist"> name_mapping:<key:1 value:"Beatles">` +
`msg_mapping:<key:-4 value:<f: 2.0>>` +
+ `msg_mapping<key:-2 value<f: 4.0>>` + // no colon after "value"
`byte_mapping:<key:true value:"so be it">`
want := &MessageWithMap{
NameMapping: map[int32]string{
@@ -471,6 +472,7 @@
},
MsgMapping: map[int64]*FloatingPoint{
-4: {F: Float64(2.0)},
+ -2: {F: Float64(4.0)},
},
ByteMapping: map[bool][]byte{
true: []byte("so be it"),