proto: fix merge semantics for oneof message

The proper semantics for a message field within a oneof
when unmarshaling is to merge into an existing message,
rather than replacing it.

Change-Id: I7c08f6e4fa958c6ee6241e9083f7311515a97e15
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/185957
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/proto/decode_test.go b/proto/decode_test.go
index acbbcb5..ecdd973 100644
--- a/proto/decode_test.go
+++ b/proto/decode_test.go
@@ -881,16 +881,18 @@
 		wire: pack.Message{pack.Tag{112, pack.BytesType}, pack.LengthPrefix(pack.Message{})}.Marshal(),
 	},
 	{
-		desc: "oneof (overridden message)",
+		desc: "oneof (merged message)",
 		decodeTo: []proto.Message{
 			&testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofNestedMessage{
 				&testpb.TestAllTypes_NestedMessage{
+					A: scalar.Int32(1),
 					Corecursive: &testpb.TestAllTypes{
 						OptionalInt32: scalar.Int32(43),
 					},
 				},
 			}}, &test3pb.TestAllTypes{OneofField: &test3pb.TestAllTypes_OneofNestedMessage{
 				&test3pb.TestAllTypes_NestedMessage{
+					A: 1,
 					Corecursive: &test3pb.TestAllTypes{
 						OptionalInt32: 43,
 					},