goprotobuf: Match C++ for text format of unknown fields.
R=r
CC=golang-dev
https://codereview.appspot.com/7982043
diff --git a/proto/text_parser.go b/proto/text_parser.go
index b4e4bc1..9bf8095 100644
--- a/proto/text_parser.go
+++ b/proto/text_parser.go
@@ -505,8 +505,11 @@
return p.errorf("unknown field name %q in %v", tok.value, st)
}
+ dst := sv.Field(fi)
+ isDstNil := isNil(dst)
+
// Check that it's not already set if it's not a repeated field.
- if !props.Repeated && !isNil(sv.Field(fi)) {
+ if !props.Repeated && !isDstNil {
return p.errorf("non-repeated field %q was repeated", tok.value)
}
@@ -514,8 +517,6 @@
return err
}
- dst := sv.Field(fi)
-
// Parse into the field.
if err := p.readAny(dst, props); err != nil {
return err