protobuf: fix handling of delimited extensions in editions

Change-Id: I5207e3e1d51e55147a7ec8374548aeb6a5312172
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/595337
Reviewed-by: Lasse Folger <lassefolger@google.com>
Reviewed-by: Michael Stapelberg <stapelberg@google.com>
Auto-Submit: Michael Stapelberg <stapelberg@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go b/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
index c15a000..6ccaa41 100644
--- a/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
+++ b/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
@@ -1251,7 +1251,7 @@
 		ExtensionType: (*GroupLikeType)(nil),
 		Field:         121,
 		Name:          "protobuf_test_messages.editions.groupliketype",
-		Tag:           "bytes,121,opt,name=groupliketype",
+		Tag:           "group,121,opt,name=GroupLikeType",
 		Filename:      "conformance/test_protos/test_messages_edition2023.proto",
 	},
 	{
@@ -1259,7 +1259,7 @@
 		ExtensionType: (*GroupLikeType)(nil),
 		Field:         122,
 		Name:          "protobuf_test_messages.editions.delimited_ext",
-		Tag:           "bytes,122,opt,name=delimited_ext",
+		Tag:           "group,122,opt,name=GroupLikeType",
 		Filename:      "conformance/test_protos/test_messages_edition2023.proto",
 	},
 }
diff --git a/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go b/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
index e14ad7b..bf2f28e 100644
--- a/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
+++ b/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
@@ -2806,7 +2806,7 @@
 		ExtensionType: (*GroupField)(nil),
 		Field:         121,
 		Name:          "protobuf_test_messages.editions.proto2.groupfield",
-		Tag:           "bytes,121,opt,name=groupfield",
+		Tag:           "group,121,opt,name=GroupField",
 		Filename:      "editions/golden/test_messages_proto2_editions.proto",
 	},
 	{
diff --git a/internal/testprotos/testeditions/test_extension.pb.go b/internal/testprotos/testeditions/test_extension.pb.go
index 2d7cb14..5adc5d4 100644
--- a/internal/testprotos/testeditions/test_extension.pb.go
+++ b/internal/testprotos/testeditions/test_extension.pb.go
@@ -429,7 +429,7 @@
 		ExtensionType: (*OptionalGroup)(nil),
 		Field:         16,
 		Name:          "goproto.proto.testeditions.optionalgroup",
-		Tag:           "bytes,16,opt,name=optionalgroup",
+		Tag:           "group,16,opt,name=OptionalGroup",
 		Filename:      "internal/testprotos/testeditions/test_extension.proto",
 	},
 	{
@@ -573,7 +573,7 @@
 		ExtensionType: ([]*RepeatedGroup)(nil),
 		Field:         46,
 		Name:          "goproto.proto.testeditions.repeatedgroup",
-		Tag:           "bytes,46,rep,name=repeatedgroup",
+		Tag:           "group,46,rep,name=RepeatedGroup",
 		Filename:      "internal/testprotos/testeditions/test_extension.proto",
 	},
 	{
diff --git a/reflect/protodesc/desc_init.go b/reflect/protodesc/desc_init.go
index 8561755..42c1f83 100644
--- a/reflect/protodesc/desc_init.go
+++ b/reflect/protodesc/desc_init.go
@@ -214,6 +214,9 @@
 		if xd.JsonName != nil {
 			x.L2.StringName.InitJSON(xd.GetJsonName())
 		}
+		if x.L1.Kind == protoreflect.MessageKind && x.L1.EditionFeatures.IsDelimitedEncoded {
+			x.L1.Kind = protoreflect.GroupKind
+		}
 	}
 	return xs, nil
 }