internal/testprotos: make TestAllExtensions recursive

Tweak the test message to allow creating messages with extensions that
contain extensions that contain extensions, etc.

Change-Id: I41844ae699c88ab96bf0d30db3a3fbaf09616161
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/216761
Reviewed-by: Joe Tsai <joetsai@google.com>
diff --git a/proto/merge_test.go b/proto/merge_test.go
index 18243cc..e59feb9 100644
--- a/proto/merge_test.go
+++ b/proto/merge_test.go
@@ -288,7 +288,7 @@
 			m := new(testpb.TestAllExtensions)
 			proto.SetExtension(m, testpb.E_OptionalInt32Extension, int32(32))
 			proto.SetExtension(m, testpb.E_OptionalNestedMessageExtension,
-				&testpb.TestAllTypes_NestedMessage{
+				&testpb.TestAllExtensions_NestedMessage{
 					A: proto.Int32(50),
 				},
 			)
@@ -296,28 +296,28 @@
 			return m
 		}(),
 		src: func() proto.Message {
+			m2 := new(testpb.TestAllExtensions)
+			proto.SetExtension(m2, testpb.E_OptionalInt64Extension, int64(1000))
 			m := new(testpb.TestAllExtensions)
 			proto.SetExtension(m, testpb.E_OptionalInt64Extension, int64(64))
 			proto.SetExtension(m, testpb.E_OptionalNestedMessageExtension,
-				&testpb.TestAllTypes_NestedMessage{
-					Corecursive: &testpb.TestAllTypes{
-						OptionalInt64: proto.Int64(1000),
-					},
+				&testpb.TestAllExtensions_NestedMessage{
+					Corecursive: m2,
 				},
 			)
 			proto.SetExtension(m, testpb.E_RepeatedFixed32Extension, []uint32{4, 5, 6})
 			return m
 		}(),
 		want: func() proto.Message {
+			m2 := new(testpb.TestAllExtensions)
+			proto.SetExtension(m2, testpb.E_OptionalInt64Extension, int64(1000))
 			m := new(testpb.TestAllExtensions)
 			proto.SetExtension(m, testpb.E_OptionalInt32Extension, int32(32))
 			proto.SetExtension(m, testpb.E_OptionalInt64Extension, int64(64))
 			proto.SetExtension(m, testpb.E_OptionalNestedMessageExtension,
-				&testpb.TestAllTypes_NestedMessage{
-					A: proto.Int32(50),
-					Corecursive: &testpb.TestAllTypes{
-						OptionalInt64: proto.Int64(1000),
-					},
+				&testpb.TestAllExtensions_NestedMessage{
+					A:           proto.Int32(50),
+					Corecursive: m2,
 				},
 			)
 			proto.SetExtension(m, testpb.E_RepeatedFixed32Extension, []uint32{1, 2, 3, 4, 5, 6})