Produce an error when unmarshaling text protos if a oneof field is set more than once.
PiperOrigin-RevId: 137859856
diff --git a/proto/text_parser.go b/proto/text_parser.go
index 4fd0531..a6bab2f 100644
--- a/proto/text_parser.go
+++ b/proto/text_parser.go
@@ -592,7 +592,11 @@
 			props = oop.Prop
 			nv := reflect.New(oop.Type.Elem())
 			dst = nv.Elem().Field(0)
-			sv.Field(oop.Field).Set(nv)
+			field := sv.Field(oop.Field)
+			if !field.IsNil() {
+				return p.errorf("oneof field '%s' is already set", name)
+			}
+			field.Set(nv)
 		}
 		if !dst.IsValid() {
 			return p.errorf("unknown field name %q in %v", name, st)