Преглед изворни кода

cmd/protoc-gen-go: generate for v2-only dependencies

This removes yet another set of dependencies of v2 on v1.
The only remaining dependency are in the _test.go files,
primarily for proto.Equal.

Changes made:
* cmd/protoc-gen-go no longer generates any functionality that depends
on the v1 package, and instead only depends on v2.
* internal/fileinit.FileBuilder.MessageOutputTypes is switched from
protoreflect.MessageType to protoimpl.MessageType since the
implementation must be fully inialized before registration occurs.
* The test for internal/legacy/file_test.go is switched to a legacy_test
package to avoid a cyclic dependency.
This requires Load{Enum,Message,File}Desc to be exported.

Change-Id: I43e2fe64cff4eea204258ce11e791aca5eb6e569
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/169298
Reviewed-by: Damien Neil <dneil@google.com>
Joe Tsai пре 6 година
родитељ
комит
35ec98fdcb
69 измењених фајлова са 500 додато и 3733 уклоњено
  1. 1 1
      cmd/protoc-gen-go-grpc/testdata/go.mod
  2. 3 2
      cmd/protoc-gen-go-grpc/testdata/grpc/deprecation.pb.go
  3. 6 50
      cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go
  4. 1 89
      cmd/protoc-gen-go/internal_gengo/main.go
  5. 6 21
      cmd/protoc-gen-go/internal_gengo/reflect.go
  6. 5 31
      cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
  7. 1 1
      cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
  8. 10 130
      cmd/protoc-gen-go/testdata/comments/comments.pb.go
  9. 5 31
      cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
  10. 6 50
      cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
  11. 12 215
      cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
  12. 5 30
      cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
  13. 5 65
      cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
  14. 6 50
      cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
  15. 1 1
      cmd/protoc-gen-go/testdata/go.mod
  16. 5 30
      cmd/protoc-gen-go/testdata/import_public/a.pb.go
  17. 5 30
      cmd/protoc-gen-go/testdata/import_public/b.pb.go
  18. 6 54
      cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
  19. 5 30
      cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
  20. 5 30
      cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
  21. 5 30
      cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
  22. 6 51
      cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
  23. 5 30
      cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
  24. 5 30
      cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
  25. 5 30
      cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
  26. 5 30
      cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
  27. 5 30
      cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
  28. 5 30
      cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
  29. 5 30
      cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
  30. 5 30
      cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
  31. 5 30
      cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
  32. 5 31
      cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
  33. 6 56
      cmd/protoc-gen-go/testdata/proto2/enum.pb.go
  34. 10 134
      cmd/protoc-gen-go/testdata/proto2/fields.pb.go
  35. 7 70
      cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
  36. 5 30
      cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
  37. 3 3
      cmd/protoc-gen-go/testdata/proto3/enum.pb.go
  38. 6 54
      cmd/protoc-gen-go/testdata/proto3/fields.pb.go
  39. 23 412
      encoding/testprotos/pb2/test.pb.go
  40. 11 157
      encoding/testprotos/pb3/test.pb.go
  41. 1 1
      go.mod
  42. 3 1
      go.sum
  43. 11 3
      internal/fileinit/desc.go
  44. 0 7
      internal/fileinit/desc_init.go
  45. 6 4
      internal/legacy/enum.go
  46. 1 1
      internal/legacy/extension.go
  47. 4 2
      internal/legacy/file.go
  48. 105 104
      internal/legacy/file_test.go
  49. 7 5
      internal/legacy/message.go
  50. 8 92
      internal/testprotos/conformance/conformance.pb.go
  51. 5 30
      internal/testprotos/legacy/legacy.pb.go
  52. 3 3
      internal/testprotos/test/ext.pb.go
  53. 17 328
      internal/testprotos/test/test.pb.go
  54. 5 31
      internal/testprotos/test/test_import.pb.go
  55. 5 30
      internal/testprotos/test/test_public.pb.go
  56. 5 30
      internal/testprotos/test/test_weak.pb.go
  57. 8 99
      reflect/protoregistry/testprotos/test.pb.go
  58. 1 8
      types/descriptor/descriptor.pb.go
  59. 5 30
      types/known/any.pb.go
  60. 7 70
      types/known/api.pb.go
  61. 5 30
      types/known/duration.pb.go
  62. 5 30
      types/known/empty.pb.go
  63. 5 30
      types/known/field_mask.pb.go
  64. 5 30
      types/known/source_context.pb.go
  65. 7 72
      types/known/struct.pb.go
  66. 5 30
      types/known/timestamp.pb.go
  67. 9 113
      types/known/type.pb.go
  68. 13 190
      types/known/wrappers.pb.go
  69. 8 90
      types/plugin/plugin.pb.go

+ 1 - 1
cmd/protoc-gen-go-grpc/testdata/go.mod

@@ -1,7 +1,7 @@
 module github.com/golang/protobuf/v2/cmd/protoc-gen-go-grpc/testdata
 module github.com/golang/protobuf/v2/cmd/protoc-gen-go-grpc/testdata
 
 
 require (
 require (
-	github.com/golang/protobuf v1.2.1-0.20190322195920-d94fb84e04b7
+	github.com/golang/protobuf v1.2.1-0.20190326022002-be03c15fcaa2
 	github.com/golang/protobuf/v2 v2.0.0
 	github.com/golang/protobuf/v2 v2.0.0
 	google.golang.org/grpc v1.19.0
 	google.golang.org/grpc v1.19.0
 )
 )

+ 3 - 2
cmd/protoc-gen-go-grpc/testdata/grpc/deprecation.pb.go

@@ -4,8 +4,8 @@
 package grpc
 package grpc
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 )
 )
 
 
@@ -54,8 +54,9 @@ func xxx_File_grpc_deprecation_proto_init() {
 		RawDescriptor:     xxx_File_grpc_deprecation_proto_rawdesc,
 		RawDescriptor:     xxx_File_grpc_deprecation_proto_rawdesc,
 		GoTypes:           xxx_File_grpc_deprecation_proto_goTypes,
 		GoTypes:           xxx_File_grpc_deprecation_proto_goTypes,
 		DependencyIndexes: xxx_File_grpc_deprecation_proto_depIdxs,
 		DependencyIndexes: xxx_File_grpc_deprecation_proto_depIdxs,
+		FilesRegistry:     protoregistry.GlobalFiles,
+		TypesRegistry:     protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	proto.RegisterFile("grpc/deprecation.proto", xxx_File_grpc_deprecation_proto_rawdesc_gzipped)
 	xxx_File_grpc_deprecation_proto_goTypes = nil
 	xxx_File_grpc_deprecation_proto_goTypes = nil
 	xxx_File_grpc_deprecation_proto_depIdxs = nil
 	xxx_File_grpc_deprecation_proto_depIdxs = nil
 }
 }

+ 6 - 50
cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go

@@ -4,10 +4,9 @@
 package grpc
 package grpc
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Request struct {
 type Request struct {
@@ -20,7 +19,7 @@ func (m *Request) ProtoReflect() protoreflect.Message {
 	return xxx_File_grpc_grpc_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_grpc_grpc_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Request) Reset()         { *m = Request{} }
 func (m *Request) Reset()         { *m = Request{} }
-func (m *Request) String() string { return proto.CompactTextString(m) }
+func (m *Request) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Request) ProtoMessage()    {}
 func (*Request) ProtoMessage()    {}
 
 
 // Deprecated: Use Request.ProtoReflect.Type instead.
 // Deprecated: Use Request.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*Request) Descriptor() ([]byte, []int) {
 	return xxx_File_grpc_grpc_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_grpc_grpc_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Request) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Request.Unmarshal(m, b)
-}
-func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Request.Marshal(b, m, deterministic)
-}
-func (m *Request) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Request.Merge(m, src)
-}
-func (m *Request) XXX_Size() int {
-	return xxx_messageInfo_Request.Size(m)
-}
-func (m *Request) XXX_DiscardUnknown() {
-	xxx_messageInfo_Request.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Request proto.InternalMessageInfo
-
 type Response struct {
 type Response struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -56,7 +37,7 @@ func (m *Response) ProtoReflect() protoreflect.Message {
 	return xxx_File_grpc_grpc_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_grpc_grpc_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Response) Reset()         { *m = Response{} }
 func (m *Response) Reset()         { *m = Response{} }
-func (m *Response) String() string { return proto.CompactTextString(m) }
+func (m *Response) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Response) ProtoMessage()    {}
 func (*Response) ProtoMessage()    {}
 
 
 // Deprecated: Use Response.ProtoReflect.Type instead.
 // Deprecated: Use Response.ProtoReflect.Type instead.
@@ -64,24 +45,6 @@ func (*Response) Descriptor() ([]byte, []int) {
 	return xxx_File_grpc_grpc_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_grpc_grpc_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *Response) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Response.Unmarshal(m, b)
-}
-func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Response.Marshal(b, m, deterministic)
-}
-func (m *Response) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Response.Merge(m, src)
-}
-func (m *Response) XXX_Size() int {
-	return xxx_messageInfo_Response.Size(m)
-}
-func (m *Response) XXX_DiscardUnknown() {
-	xxx_messageInfo_Response.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Response proto.InternalMessageInfo
-
 var xxx_File_grpc_grpc_proto_rawdesc = []byte{
 var xxx_File_grpc_grpc_proto_rawdesc = []byte{
 	// 466 bytes of the wire-encoded FileDescriptorProto
 	// 466 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x0a, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74,
@@ -143,21 +106,14 @@ func xxx_File_grpc_grpc_proto_init() {
 	if File_grpc_grpc_proto != nil {
 	if File_grpc_grpc_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 2)
 	File_grpc_grpc_proto = protoimpl.FileBuilder{
 	File_grpc_grpc_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_grpc_grpc_proto_rawdesc,
 		RawDescriptor:      xxx_File_grpc_grpc_proto_rawdesc,
 		GoTypes:            xxx_File_grpc_grpc_proto_goTypes,
 		GoTypes:            xxx_File_grpc_grpc_proto_goTypes,
 		DependencyIndexes:  xxx_File_grpc_grpc_proto_depIdxs,
 		DependencyIndexes:  xxx_File_grpc_grpc_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_grpc_grpc_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_grpc_grpc_proto_goTypes[0:][:2]
-	for i, mt := range messageTypes {
-		xxx_File_grpc_grpc_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_grpc_grpc_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("grpc/grpc.proto", xxx_File_grpc_grpc_proto_rawdesc_gzipped)
-	proto.RegisterType((*Request)(nil), "goproto.protoc.grpc.Request")
-	proto.RegisterType((*Response)(nil), "goproto.protoc.grpc.Response")
 	xxx_File_grpc_grpc_proto_goTypes = nil
 	xxx_File_grpc_grpc_proto_goTypes = nil
 	xxx_File_grpc_grpc_proto_depIdxs = nil
 	xxx_File_grpc_grpc_proto_depIdxs = nil
 }
 }

+ 1 - 89
cmd/protoc-gen-go/internal_gengo/main.go

@@ -11,7 +11,6 @@ import (
 	"go/parser"
 	"go/parser"
 	"go/token"
 	"go/token"
 	"math"
 	"math"
-	"sort"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 	"unicode"
 	"unicode"
@@ -28,8 +27,6 @@ import (
 
 
 const (
 const (
 	mathPackage          = protogen.GoImportPath("math")
 	mathPackage          = protogen.GoImportPath("math")
-	reflectPackage       = protogen.GoImportPath("reflect")
-	protoPackage         = protogen.GoImportPath("github.com/golang/protobuf/proto")
 	protoifacePackage    = protogen.GoImportPath("github.com/golang/protobuf/v2/runtime/protoiface")
 	protoifacePackage    = protogen.GoImportPath("github.com/golang/protobuf/v2/runtime/protoiface")
 	protoimplPackage     = protogen.GoImportPath("github.com/golang/protobuf/v2/runtime/protoimpl")
 	protoimplPackage     = protogen.GoImportPath("github.com/golang/protobuf/v2/runtime/protoimpl")
 	protoreflectPackage  = protogen.GoImportPath("github.com/golang/protobuf/v2/reflect/protoreflect")
 	protoreflectPackage  = protogen.GoImportPath("github.com/golang/protobuf/v2/reflect/protoreflect")
@@ -424,11 +421,7 @@ func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, me
 	// Reset
 	// Reset
 	g.P("func (m *", message.GoIdent, ") Reset() { *m = ", message.GoIdent, "{} }")
 	g.P("func (m *", message.GoIdent, ") Reset() { *m = ", message.GoIdent, "{} }")
 	// String
 	// String
-	if isDescriptor(f.File) {
-		g.P("func (m *", message.GoIdent, ") String() string { return ", protoimplPackage.Ident("X"), ".MessageStringOf(m) }")
-	} else {
-		g.P("func (m *", message.GoIdent, ") String() string { return ", protoPackage.Ident("CompactTextString"), "(m) }")
-	}
+	g.P("func (m *", message.GoIdent, ") String() string { return ", protoimplPackage.Ident("X"), ".MessageStringOf(m) }")
 	// ProtoMessage
 	// ProtoMessage
 	g.P("func (*", message.GoIdent, ") ProtoMessage() {}")
 	g.P("func (*", message.GoIdent, ") ProtoMessage() {}")
 	// Descriptor
 	// Descriptor
@@ -462,43 +455,6 @@ func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, me
 
 
 	genWellKnownType(g, "*", message.GoIdent, message.Desc)
 	genWellKnownType(g, "*", message.GoIdent, message.Desc)
 
 
-	// Table-driven proto support.
-	//
-	// TODO: It does not scale to keep adding another method for every
-	// operation on protos that we want to switch over to using the
-	// table-driven approach. Instead, we should only add a single method
-	// that allows getting access to the *InternalMessageInfo struct and then
-	// calling Unmarshal, Marshal, Merge, Size, and Discard directly on that.
-	if !isDescriptor(f.File) {
-		// NOTE: We avoid adding table-driven support for descriptor proto
-		// since this depends on the v1 proto package, which would eventually
-		// need to depend on the descriptor itself.
-		messageInfoVar := "xxx_messageInfo_" + message.GoIdent.GoName
-		// XXX_Unmarshal
-		g.P("func (m *", message.GoIdent, ") XXX_Unmarshal(b []byte) error {")
-		g.P("return ", messageInfoVar, ".Unmarshal(m, b)")
-		g.P("}")
-		// XXX_Marshal
-		g.P("func (m *", message.GoIdent, ") XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {")
-		g.P("return ", messageInfoVar, ".Marshal(b, m, deterministic)")
-		g.P("}")
-		// XXX_Merge
-		g.P("func (m *", message.GoIdent, ") XXX_Merge(src proto.Message) {")
-		g.P(messageInfoVar, ".Merge(m, src)")
-		g.P("}")
-		// XXX_Size
-		g.P("func (m *", message.GoIdent, ") XXX_Size() int {")
-		g.P("return ", messageInfoVar, ".Size(m)")
-		g.P("}")
-		// XXX_DiscardUnknown
-		g.P("func (m *", message.GoIdent, ") XXX_DiscardUnknown() {")
-		g.P(messageInfoVar, ".DiscardUnknown(m)")
-		g.P("}")
-		g.P()
-		g.P("var ", messageInfoVar, " ", protoPackage.Ident("InternalMessageInfo"))
-		g.P()
-	}
-
 	// Constants and vars holding the default values of fields.
 	// Constants and vars holding the default values of fields.
 	for _, field := range message.Fields {
 	for _, field := range message.Fields {
 		if !field.Desc.HasDefault() {
 		if !field.Desc.HasDefault() {
@@ -761,50 +717,6 @@ func extensionVar(f *protogen.File, extension *protogen.Extension) protogen.GoId
 	return f.GoImportPath.Ident(name)
 	return f.GoImportPath.Ident(name)
 }
 }
 
 
-// genRegistrationV1 generates the init function body that registers the
-// types in the generated file with the v1 proto package.
-func genRegistrationV1(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
-	// TODO: Remove this function when we always register with v2.
-	if isDescriptor(f.File) {
-		return
-	}
-
-	g.P(protoPackage.Ident("RegisterFile"), "(", strconv.Quote(f.Desc.Path()), ", ", f.descriptorGzipVar, ")")
-	for _, enum := range f.allEnums {
-		name := enum.GoIdent.GoName
-		g.P(protoPackage.Ident("RegisterEnum"), fmt.Sprintf("(%q, %s_name, %s_value)", enumRegistryName(enum), name, name))
-	}
-	for _, message := range f.allMessages {
-		if message.Desc.IsMapEntry() {
-			continue
-		}
-
-		name := message.GoIdent.GoName
-		g.P(protoPackage.Ident("RegisterType"), fmt.Sprintf("((*%s)(nil), %q)", name, message.Desc.FullName()))
-
-		// Types of map fields, sorted by the name of the field message type.
-		var mapFields []*protogen.Field
-		for _, field := range message.Fields {
-			if field.Desc.IsMap() {
-				mapFields = append(mapFields, field)
-			}
-		}
-		sort.Slice(mapFields, func(i, j int) bool {
-			ni := mapFields[i].MessageType.Desc.FullName()
-			nj := mapFields[j].MessageType.Desc.FullName()
-			return ni < nj
-		})
-		for _, field := range mapFields {
-			typeName := string(field.MessageType.Desc.FullName())
-			goType, _ := fieldGoType(g, field)
-			g.P(protoPackage.Ident("RegisterMapType"), fmt.Sprintf("((%v)(nil), %q)", goType, typeName))
-		}
-	}
-	for _, extension := range f.allExtensions {
-		g.P(protoPackage.Ident("RegisterExtension"), "(", extensionVar(f.File, extension), ")")
-	}
-}
-
 // deprecationComment returns a standard deprecation comment if deprecated is true.
 // deprecationComment returns a standard deprecation comment if deprecated is true.
 func deprecationComment(deprecated bool) string {
 func deprecationComment(deprecated bool) string {
 	if !deprecated {
 	if !deprecated {

+ 6 - 21
cmd/protoc-gen-go/internal_gengo/reflect.go

@@ -149,9 +149,6 @@ func genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f
 		g.P(initFuncName(impFile), "()")
 		g.P(initFuncName(impFile), "()")
 	}
 	}
 
 
-	if len(f.allMessages) > 0 {
-		g.P("messageTypes := make([]", protoreflectPackage.Ident("MessageType"), ",", len(f.allMessages), ")")
-	}
 	if len(f.allExtensions) > 0 {
 	if len(f.allExtensions) > 0 {
 		g.P("extensionTypes := make([]", protoreflectPackage.Ident("ExtensionType"), ",", len(f.allExtensions), ")")
 		g.P("extensionTypes := make([]", protoreflectPackage.Ident("ExtensionType"), ",", len(f.allExtensions), ")")
 	}
 	}
@@ -167,30 +164,20 @@ func genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f
 		g.P("EnumOutputTypes: ", enumTypesVarName(f), ",")
 		g.P("EnumOutputTypes: ", enumTypesVarName(f), ",")
 	}
 	}
 	if len(f.allMessages) > 0 {
 	if len(f.allMessages) > 0 {
-		g.P("MessageOutputTypes: messageTypes,")
+		g.P("MessageOutputTypes: ", messageTypesVarName(f), ",")
 	}
 	}
 	if len(f.allExtensions) > 0 {
 	if len(f.allExtensions) > 0 {
 		g.P("ExtensionOutputTypes: extensionTypes,")
 		g.P("ExtensionOutputTypes: extensionTypes,")
 	}
 	}
-	if isDescriptor(f.File) {
-		// TODO: Enable this for all protos.
-		g.P("FilesRegistry: ", protoregistryPackage.Ident("GlobalFiles"), ",")
-		g.P("TypesRegistry: ", protoregistryPackage.Ident("GlobalTypes"), ",")
-	}
+	g.P("FilesRegistry: ", protoregistryPackage.Ident("GlobalFiles"), ",")
+	g.P("TypesRegistry: ", protoregistryPackage.Ident("GlobalTypes"), ",")
 	g.P("}.Init()")
 	g.P("}.Init()")
 
 
-	// Copy the local list of message types into the global array.
-	if len(f.allMessages) > 0 {
-		g.P("messageGoTypes := ", goTypesVarName(f), "[", len(f.allEnums), ":][:", len(f.allMessages), "]")
-		g.P("for i, mt := range messageTypes {")
-		g.P(messageTypesVarName(f), "[i].GoType = ", reflectPackage.Ident("TypeOf"), "(messageGoTypes[i])")
-		g.P(messageTypesVarName(f), "[i].PBType = mt")
-		g.P("}")
-	}
-
 	// The descriptor proto needs to register the option types with the
 	// The descriptor proto needs to register the option types with the
 	// prototype so that the package can properly handle those option types.
 	// prototype so that the package can properly handle those option types.
-	if isDescriptor(f.File) {
+	//
+	// TODO: Should this be handled by fileinit at runtime?
+	if f.Desc.Path() == "google/protobuf/descriptor.proto" && f.Desc.Package() == "google.protobuf" {
 		for _, m := range f.allMessages {
 		for _, m := range f.allMessages {
 			name := m.GoIdent.GoName
 			name := m.GoIdent.GoName
 			if strings.HasSuffix(name, "Options") {
 			if strings.HasSuffix(name, "Options") {
@@ -199,8 +186,6 @@ func genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f
 		}
 		}
 	}
 	}
 
 
-	genRegistrationV1(gen, g, f)
-
 	g.P(goTypesVarName(f), " = nil") // allow GC to reclaim resource
 	g.P(goTypesVarName(f), " = nil") // allow GC to reclaim resource
 	g.P(depIdxsVarName(f), " = nil") // allow GC to reclaim resource
 	g.P(depIdxsVarName(f), " = nil") // allow GC to reclaim resource
 	g.P("}")
 	g.P("}")

+ 5 - 31
cmd/protoc-gen-go/testdata/annotations/annotations.pb.go

@@ -4,10 +4,9 @@
 package annotations
 package annotations
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type AnnotationsTestEnum int32
 type AnnotationsTestEnum int32
@@ -67,7 +66,7 @@ func (m *AnnotationsTestMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_annotations_annotations_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_annotations_annotations_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *AnnotationsTestMessage) Reset()         { *m = AnnotationsTestMessage{} }
 func (m *AnnotationsTestMessage) Reset()         { *m = AnnotationsTestMessage{} }
-func (m *AnnotationsTestMessage) String() string { return proto.CompactTextString(m) }
+func (m *AnnotationsTestMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*AnnotationsTestMessage) ProtoMessage()    {}
 func (*AnnotationsTestMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use AnnotationsTestMessage.ProtoReflect.Type instead.
 // Deprecated: Use AnnotationsTestMessage.ProtoReflect.Type instead.
@@ -75,24 +74,6 @@ func (*AnnotationsTestMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_annotations_annotations_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_annotations_annotations_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *AnnotationsTestMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AnnotationsTestMessage.Unmarshal(m, b)
-}
-func (m *AnnotationsTestMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AnnotationsTestMessage.Marshal(b, m, deterministic)
-}
-func (m *AnnotationsTestMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AnnotationsTestMessage.Merge(m, src)
-}
-func (m *AnnotationsTestMessage) XXX_Size() int {
-	return xxx_messageInfo_AnnotationsTestMessage.Size(m)
-}
-func (m *AnnotationsTestMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_AnnotationsTestMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AnnotationsTestMessage proto.InternalMessageInfo
-
 func (m *AnnotationsTestMessage) GetAnnotationsTestField() string {
 func (m *AnnotationsTestMessage) GetAnnotationsTestField() string {
 	if m != nil && m.AnnotationsTestField != nil {
 	if m != nil && m.AnnotationsTestField != nil {
 		return *m.AnnotationsTestField
 		return *m.AnnotationsTestField
@@ -140,22 +121,15 @@ func xxx_File_annotations_annotations_proto_init() {
 	if File_annotations_annotations_proto != nil {
 	if File_annotations_annotations_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_annotations_annotations_proto = protoimpl.FileBuilder{
 	File_annotations_annotations_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_annotations_annotations_proto_rawdesc,
 		RawDescriptor:      xxx_File_annotations_annotations_proto_rawdesc,
 		GoTypes:            xxx_File_annotations_annotations_proto_goTypes,
 		GoTypes:            xxx_File_annotations_annotations_proto_goTypes,
 		DependencyIndexes:  xxx_File_annotations_annotations_proto_depIdxs,
 		DependencyIndexes:  xxx_File_annotations_annotations_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_annotations_annotations_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_annotations_annotations_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_annotations_annotations_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_annotations_annotations_proto_goTypes[1:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_annotations_annotations_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_annotations_annotations_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("annotations/annotations.proto", xxx_File_annotations_annotations_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.annotations.AnnotationsTestEnum", AnnotationsTestEnum_name, AnnotationsTestEnum_value)
-	proto.RegisterType((*AnnotationsTestMessage)(nil), "goproto.protoc.annotations.AnnotationsTestMessage")
 	xxx_File_annotations_annotations_proto_goTypes = nil
 	xxx_File_annotations_annotations_proto_goTypes = nil
 	xxx_File_annotations_annotations_proto_depIdxs = nil
 	xxx_File_annotations_annotations_proto_depIdxs = nil
 }
 }

+ 1 - 1
cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta

@@ -1 +1 @@
-annotation:{path:5 path:0 source_file:"annotations/annotations.proto" begin:318 end:337} annotation:{path:5 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:354 end:401} annotation:{path:4 path:0 source_file:"annotations/annotations.proto" begin:1562 end:1584} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:1595 end:1615} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:3170 end:3193}
+annotation:{path:5 path:0 source_file:"annotations/annotations.proto" begin:326 end:345} annotation:{path:5 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:362 end:409} annotation:{path:4 path:0 source_file:"annotations/annotations.proto" begin:1570 end:1592} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:1603 end:1623} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:2467 end:2490}

+ 10 - 130
cmd/protoc-gen-go/testdata/comments/comments.pb.go

@@ -6,10 +6,9 @@
 package comments
 package comments
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // COMMENT: Message1
 // COMMENT: Message1
@@ -31,7 +30,7 @@ func (m *Message1) ProtoReflect() protoreflect.Message {
 	return xxx_File_comments_comments_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_comments_comments_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Message1) Reset()         { *m = Message1{} }
 func (m *Message1) Reset()         { *m = Message1{} }
-func (m *Message1) String() string { return proto.CompactTextString(m) }
+func (m *Message1) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message1) ProtoMessage()    {}
 func (*Message1) ProtoMessage()    {}
 
 
 // Deprecated: Use Message1.ProtoReflect.Type instead.
 // Deprecated: Use Message1.ProtoReflect.Type instead.
@@ -39,24 +38,6 @@ func (*Message1) Descriptor() ([]byte, []int) {
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Message1) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message1.Unmarshal(m, b)
-}
-func (m *Message1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message1.Marshal(b, m, deterministic)
-}
-func (m *Message1) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message1.Merge(m, src)
-}
-func (m *Message1) XXX_Size() int {
-	return xxx_messageInfo_Message1.Size(m)
-}
-func (m *Message1) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message1.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message1 proto.InternalMessageInfo
-
 func (m *Message1) GetField1A() string {
 func (m *Message1) GetField1A() string {
 	if m != nil && m.Field1A != nil {
 	if m != nil && m.Field1A != nil {
 		return *m.Field1A
 		return *m.Field1A
@@ -106,7 +87,7 @@ func (m *Message2) ProtoReflect() protoreflect.Message {
 	return xxx_File_comments_comments_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_comments_comments_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Message2) Reset()         { *m = Message2{} }
 func (m *Message2) Reset()         { *m = Message2{} }
-func (m *Message2) String() string { return proto.CompactTextString(m) }
+func (m *Message2) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message2) ProtoMessage()    {}
 func (*Message2) ProtoMessage()    {}
 
 
 // Deprecated: Use Message2.ProtoReflect.Type instead.
 // Deprecated: Use Message2.ProtoReflect.Type instead.
@@ -114,24 +95,6 @@ func (*Message2) Descriptor() ([]byte, []int) {
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *Message2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message2.Unmarshal(m, b)
-}
-func (m *Message2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message2.Marshal(b, m, deterministic)
-}
-func (m *Message2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message2.Merge(m, src)
-}
-func (m *Message2) XXX_Size() int {
-	return xxx_messageInfo_Message2.Size(m)
-}
-func (m *Message2) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message2 proto.InternalMessageInfo
-
 // COMMENT: Message1A
 // COMMENT: Message1A
 type Message1_Message1A struct {
 type Message1_Message1A struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -143,7 +106,7 @@ func (m *Message1_Message1A) ProtoReflect() protoreflect.Message {
 	return xxx_File_comments_comments_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_comments_comments_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *Message1_Message1A) Reset()         { *m = Message1_Message1A{} }
 func (m *Message1_Message1A) Reset()         { *m = Message1_Message1A{} }
-func (m *Message1_Message1A) String() string { return proto.CompactTextString(m) }
+func (m *Message1_Message1A) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message1_Message1A) ProtoMessage()    {}
 func (*Message1_Message1A) ProtoMessage()    {}
 
 
 // Deprecated: Use Message1_Message1A.ProtoReflect.Type instead.
 // Deprecated: Use Message1_Message1A.ProtoReflect.Type instead.
@@ -151,24 +114,6 @@ func (*Message1_Message1A) Descriptor() ([]byte, []int) {
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0, 0}
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0, 0}
 }
 }
 
 
-func (m *Message1_Message1A) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message1_Message1A.Unmarshal(m, b)
-}
-func (m *Message1_Message1A) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message1_Message1A.Marshal(b, m, deterministic)
-}
-func (m *Message1_Message1A) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message1_Message1A.Merge(m, src)
-}
-func (m *Message1_Message1A) XXX_Size() int {
-	return xxx_messageInfo_Message1_Message1A.Size(m)
-}
-func (m *Message1_Message1A) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message1_Message1A.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message1_Message1A proto.InternalMessageInfo
-
 // COMMENT: Message1B
 // COMMENT: Message1B
 type Message1_Message1B struct {
 type Message1_Message1B struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -180,7 +125,7 @@ func (m *Message1_Message1B) ProtoReflect() protoreflect.Message {
 	return xxx_File_comments_comments_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_comments_comments_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *Message1_Message1B) Reset()         { *m = Message1_Message1B{} }
 func (m *Message1_Message1B) Reset()         { *m = Message1_Message1B{} }
-func (m *Message1_Message1B) String() string { return proto.CompactTextString(m) }
+func (m *Message1_Message1B) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message1_Message1B) ProtoMessage()    {}
 func (*Message1_Message1B) ProtoMessage()    {}
 
 
 // Deprecated: Use Message1_Message1B.ProtoReflect.Type instead.
 // Deprecated: Use Message1_Message1B.ProtoReflect.Type instead.
@@ -188,24 +133,6 @@ func (*Message1_Message1B) Descriptor() ([]byte, []int) {
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0, 1}
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0, 1}
 }
 }
 
 
-func (m *Message1_Message1B) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message1_Message1B.Unmarshal(m, b)
-}
-func (m *Message1_Message1B) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message1_Message1B.Marshal(b, m, deterministic)
-}
-func (m *Message1_Message1B) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message1_Message1B.Merge(m, src)
-}
-func (m *Message1_Message1B) XXX_Size() int {
-	return xxx_messageInfo_Message1_Message1B.Size(m)
-}
-func (m *Message1_Message1B) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message1_Message1B.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message1_Message1B proto.InternalMessageInfo
-
 // COMMENT: Message2A
 // COMMENT: Message2A
 type Message2_Message2A struct {
 type Message2_Message2A struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -217,7 +144,7 @@ func (m *Message2_Message2A) ProtoReflect() protoreflect.Message {
 	return xxx_File_comments_comments_proto_messageTypes[4].MessageOf(m)
 	return xxx_File_comments_comments_proto_messageTypes[4].MessageOf(m)
 }
 }
 func (m *Message2_Message2A) Reset()         { *m = Message2_Message2A{} }
 func (m *Message2_Message2A) Reset()         { *m = Message2_Message2A{} }
-func (m *Message2_Message2A) String() string { return proto.CompactTextString(m) }
+func (m *Message2_Message2A) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message2_Message2A) ProtoMessage()    {}
 func (*Message2_Message2A) ProtoMessage()    {}
 
 
 // Deprecated: Use Message2_Message2A.ProtoReflect.Type instead.
 // Deprecated: Use Message2_Message2A.ProtoReflect.Type instead.
@@ -225,24 +152,6 @@ func (*Message2_Message2A) Descriptor() ([]byte, []int) {
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1, 0}
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1, 0}
 }
 }
 
 
-func (m *Message2_Message2A) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message2_Message2A.Unmarshal(m, b)
-}
-func (m *Message2_Message2A) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message2_Message2A.Marshal(b, m, deterministic)
-}
-func (m *Message2_Message2A) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message2_Message2A.Merge(m, src)
-}
-func (m *Message2_Message2A) XXX_Size() int {
-	return xxx_messageInfo_Message2_Message2A.Size(m)
-}
-func (m *Message2_Message2A) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message2_Message2A.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message2_Message2A proto.InternalMessageInfo
-
 // COMMENT: Message2B
 // COMMENT: Message2B
 type Message2_Message2B struct {
 type Message2_Message2B struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -254,7 +163,7 @@ func (m *Message2_Message2B) ProtoReflect() protoreflect.Message {
 	return xxx_File_comments_comments_proto_messageTypes[5].MessageOf(m)
 	return xxx_File_comments_comments_proto_messageTypes[5].MessageOf(m)
 }
 }
 func (m *Message2_Message2B) Reset()         { *m = Message2_Message2B{} }
 func (m *Message2_Message2B) Reset()         { *m = Message2_Message2B{} }
-func (m *Message2_Message2B) String() string { return proto.CompactTextString(m) }
+func (m *Message2_Message2B) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message2_Message2B) ProtoMessage()    {}
 func (*Message2_Message2B) ProtoMessage()    {}
 
 
 // Deprecated: Use Message2_Message2B.ProtoReflect.Type instead.
 // Deprecated: Use Message2_Message2B.ProtoReflect.Type instead.
@@ -262,24 +171,6 @@ func (*Message2_Message2B) Descriptor() ([]byte, []int) {
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1, 1}
 	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1, 1}
 }
 }
 
 
-func (m *Message2_Message2B) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message2_Message2B.Unmarshal(m, b)
-}
-func (m *Message2_Message2B) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message2_Message2B.Marshal(b, m, deterministic)
-}
-func (m *Message2_Message2B) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message2_Message2B.Merge(m, src)
-}
-func (m *Message2_Message2B) XXX_Size() int {
-	return xxx_messageInfo_Message2_Message2B.Size(m)
-}
-func (m *Message2_Message2B) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message2_Message2B.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message2_Message2B proto.InternalMessageInfo
-
 var xxx_File_comments_comments_proto_rawdesc = []byte{
 var xxx_File_comments_comments_proto_rawdesc = []byte{
 	// 272 bytes of the wire-encoded FileDescriptorProto
 	// 272 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
 	0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
@@ -323,25 +214,14 @@ func xxx_File_comments_comments_proto_init() {
 	if File_comments_comments_proto != nil {
 	if File_comments_comments_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 6)
 	File_comments_comments_proto = protoimpl.FileBuilder{
 	File_comments_comments_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_comments_comments_proto_rawdesc,
 		RawDescriptor:      xxx_File_comments_comments_proto_rawdesc,
 		GoTypes:            xxx_File_comments_comments_proto_goTypes,
 		GoTypes:            xxx_File_comments_comments_proto_goTypes,
 		DependencyIndexes:  xxx_File_comments_comments_proto_depIdxs,
 		DependencyIndexes:  xxx_File_comments_comments_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_comments_comments_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_comments_comments_proto_goTypes[0:][:6]
-	for i, mt := range messageTypes {
-		xxx_File_comments_comments_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_comments_comments_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("comments/comments.proto", xxx_File_comments_comments_proto_rawdesc_gzipped)
-	proto.RegisterType((*Message1)(nil), "goproto.protoc.comments.Message1")
-	proto.RegisterType((*Message2)(nil), "goproto.protoc.comments.Message2")
-	proto.RegisterType((*Message1_Message1A)(nil), "goproto.protoc.comments.Message1.Message1A")
-	proto.RegisterType((*Message1_Message1B)(nil), "goproto.protoc.comments.Message1.Message1B")
-	proto.RegisterType((*Message2_Message2A)(nil), "goproto.protoc.comments.Message2.Message2A")
-	proto.RegisterType((*Message2_Message2B)(nil), "goproto.protoc.comments.Message2.Message2B")
 	xxx_File_comments_comments_proto_goTypes = nil
 	xxx_File_comments_comments_proto_goTypes = nil
 	xxx_File_comments_comments_proto_depIdxs = nil
 	xxx_File_comments_comments_proto_depIdxs = nil
 }
 }

+ 5 - 31
cmd/protoc-gen-go/testdata/comments/deprecated.pb.go

@@ -4,10 +4,9 @@
 package comments
 package comments
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type DeprecatedEnum int32 // Deprecated: Do not use.
 type DeprecatedEnum int32 // Deprecated: Do not use.
@@ -53,7 +52,7 @@ func (m *DeprecatedMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_comments_deprecated_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_comments_deprecated_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *DeprecatedMessage) Reset()         { *m = DeprecatedMessage{} }
 func (m *DeprecatedMessage) Reset()         { *m = DeprecatedMessage{} }
-func (m *DeprecatedMessage) String() string { return proto.CompactTextString(m) }
+func (m *DeprecatedMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*DeprecatedMessage) ProtoMessage()    {}
 func (*DeprecatedMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use DeprecatedMessage.ProtoReflect.Type instead.
 // Deprecated: Use DeprecatedMessage.ProtoReflect.Type instead.
@@ -61,24 +60,6 @@ func (*DeprecatedMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_comments_deprecated_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_comments_deprecated_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *DeprecatedMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeprecatedMessage.Unmarshal(m, b)
-}
-func (m *DeprecatedMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeprecatedMessage.Marshal(b, m, deterministic)
-}
-func (m *DeprecatedMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeprecatedMessage.Merge(m, src)
-}
-func (m *DeprecatedMessage) XXX_Size() int {
-	return xxx_messageInfo_DeprecatedMessage.Size(m)
-}
-func (m *DeprecatedMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeprecatedMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeprecatedMessage proto.InternalMessageInfo
-
 // Deprecated: Do not use.
 // Deprecated: Do not use.
 func (m *DeprecatedMessage) GetDeprecatedField() string {
 func (m *DeprecatedMessage) GetDeprecatedField() string {
 	if m != nil {
 	if m != nil {
@@ -126,22 +107,15 @@ func xxx_File_comments_deprecated_proto_init() {
 	if File_comments_deprecated_proto != nil {
 	if File_comments_deprecated_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_comments_deprecated_proto = protoimpl.FileBuilder{
 	File_comments_deprecated_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_comments_deprecated_proto_rawdesc,
 		RawDescriptor:      xxx_File_comments_deprecated_proto_rawdesc,
 		GoTypes:            xxx_File_comments_deprecated_proto_goTypes,
 		GoTypes:            xxx_File_comments_deprecated_proto_goTypes,
 		DependencyIndexes:  xxx_File_comments_deprecated_proto_depIdxs,
 		DependencyIndexes:  xxx_File_comments_deprecated_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_comments_deprecated_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_comments_deprecated_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_comments_deprecated_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_comments_deprecated_proto_goTypes[1:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_comments_deprecated_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_comments_deprecated_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("comments/deprecated.proto", xxx_File_comments_deprecated_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.comments.DeprecatedEnum", DeprecatedEnum_name, DeprecatedEnum_value)
-	proto.RegisterType((*DeprecatedMessage)(nil), "goproto.protoc.comments.DeprecatedMessage")
 	xxx_File_comments_deprecated_proto_goTypes = nil
 	xxx_File_comments_deprecated_proto_goTypes = nil
 	xxx_File_comments_deprecated_proto_depIdxs = nil
 	xxx_File_comments_deprecated_proto_depIdxs = nil
 }
 }

+ 6 - 50
cmd/protoc-gen-go/testdata/extensions/base/base.pb.go

@@ -4,11 +4,10 @@
 package base
 package base
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type BaseMessage struct {
 type BaseMessage struct {
@@ -23,7 +22,7 @@ func (m *BaseMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_base_base_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_extensions_base_base_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *BaseMessage) Reset()         { *m = BaseMessage{} }
 func (m *BaseMessage) Reset()         { *m = BaseMessage{} }
-func (m *BaseMessage) String() string { return proto.CompactTextString(m) }
+func (m *BaseMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*BaseMessage) ProtoMessage()    {}
 func (*BaseMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use BaseMessage.ProtoReflect.Type instead.
 // Deprecated: Use BaseMessage.ProtoReflect.Type instead.
@@ -41,24 +40,6 @@ func (*BaseMessage) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_BaseMessage
 	return extRange_BaseMessage
 }
 }
 
 
-func (m *BaseMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BaseMessage.Unmarshal(m, b)
-}
-func (m *BaseMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BaseMessage.Marshal(b, m, deterministic)
-}
-func (m *BaseMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BaseMessage.Merge(m, src)
-}
-func (m *BaseMessage) XXX_Size() int {
-	return xxx_messageInfo_BaseMessage.Size(m)
-}
-func (m *BaseMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_BaseMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_BaseMessage proto.InternalMessageInfo
-
 func (m *BaseMessage) GetField() string {
 func (m *BaseMessage) GetField() string {
 	if m != nil && m.Field != nil {
 	if m != nil && m.Field != nil {
 		return *m.Field
 		return *m.Field
@@ -77,7 +58,7 @@ func (m *MessageSetWireFormatMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_base_base_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_extensions_base_base_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *MessageSetWireFormatMessage) Reset()         { *m = MessageSetWireFormatMessage{} }
 func (m *MessageSetWireFormatMessage) Reset()         { *m = MessageSetWireFormatMessage{} }
-func (m *MessageSetWireFormatMessage) String() string { return proto.CompactTextString(m) }
+func (m *MessageSetWireFormatMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*MessageSetWireFormatMessage) ProtoMessage()    {}
 func (*MessageSetWireFormatMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use MessageSetWireFormatMessage.ProtoReflect.Type instead.
 // Deprecated: Use MessageSetWireFormatMessage.ProtoReflect.Type instead.
@@ -94,24 +75,6 @@ func (*MessageSetWireFormatMessage) ExtensionRangeArray() []protoiface.Extension
 	return extRange_MessageSetWireFormatMessage
 	return extRange_MessageSetWireFormatMessage
 }
 }
 
 
-func (m *MessageSetWireFormatMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageSetWireFormatMessage.Unmarshal(m, b)
-}
-func (m *MessageSetWireFormatMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageSetWireFormatMessage.Marshal(b, m, deterministic)
-}
-func (m *MessageSetWireFormatMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageSetWireFormatMessage.Merge(m, src)
-}
-func (m *MessageSetWireFormatMessage) XXX_Size() int {
-	return xxx_messageInfo_MessageSetWireFormatMessage.Size(m)
-}
-func (m *MessageSetWireFormatMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageSetWireFormatMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageSetWireFormatMessage proto.InternalMessageInfo
-
 var xxx_File_extensions_base_base_proto_rawdesc = []byte{
 var xxx_File_extensions_base_base_proto_rawdesc = []byte{
 	// 233 bytes of the wire-encoded FileDescriptorProto
 	// 233 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x61, 0x73,
 	0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x61, 0x73,
@@ -149,21 +112,14 @@ func xxx_File_extensions_base_base_proto_init() {
 	if File_extensions_base_base_proto != nil {
 	if File_extensions_base_base_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 2)
 	File_extensions_base_base_proto = protoimpl.FileBuilder{
 	File_extensions_base_base_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_extensions_base_base_proto_rawdesc,
 		RawDescriptor:      xxx_File_extensions_base_base_proto_rawdesc,
 		GoTypes:            xxx_File_extensions_base_base_proto_goTypes,
 		GoTypes:            xxx_File_extensions_base_base_proto_goTypes,
 		DependencyIndexes:  xxx_File_extensions_base_base_proto_depIdxs,
 		DependencyIndexes:  xxx_File_extensions_base_base_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_extensions_base_base_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_extensions_base_base_proto_goTypes[0:][:2]
-	for i, mt := range messageTypes {
-		xxx_File_extensions_base_base_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_extensions_base_base_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("extensions/base/base.proto", xxx_File_extensions_base_base_proto_rawdesc_gzipped)
-	proto.RegisterType((*BaseMessage)(nil), "goproto.protoc.extension.base.BaseMessage")
-	proto.RegisterType((*MessageSetWireFormatMessage)(nil), "goproto.protoc.extension.base.MessageSetWireFormatMessage")
 	xxx_File_extensions_base_base_proto_goTypes = nil
 	xxx_File_extensions_base_base_proto_goTypes = nil
 	xxx_File_extensions_base_base_proto_depIdxs = nil
 	xxx_File_extensions_base_base_proto_depIdxs = nil
 }
 }

+ 12 - 215
cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go

@@ -4,13 +4,12 @@
 package ext
 package ext
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	base "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/extensions/base"
 	base "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/extensions/base"
 	extra "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/extensions/extra"
 	extra "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/extensions/extra"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Enum int32
 type Enum int32
@@ -70,7 +69,7 @@ func (m *Message) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_ext_ext_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_extensions_ext_ext_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Message) Reset()         { *m = Message{} }
 func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
+func (m *Message) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message) ProtoMessage()    {}
 func (*Message) ProtoMessage()    {}
 
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 // Deprecated: Use Message.ProtoReflect.Type instead.
@@ -78,24 +77,6 @@ func (*Message) Descriptor() ([]byte, []int) {
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
 func (m *Message) GetData() []byte {
 func (m *Message) GetData() []byte {
 	if m != nil {
 	if m != nil {
 		return m.Data
 		return m.Data
@@ -114,7 +95,7 @@ func (m *ExtensionGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_ext_ext_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_extensions_ext_ext_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *ExtensionGroup) Reset()         { *m = ExtensionGroup{} }
 func (m *ExtensionGroup) Reset()         { *m = ExtensionGroup{} }
-func (m *ExtensionGroup) String() string { return proto.CompactTextString(m) }
+func (m *ExtensionGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ExtensionGroup) ProtoMessage()    {}
 func (*ExtensionGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use ExtensionGroup.ProtoReflect.Type instead.
 // Deprecated: Use ExtensionGroup.ProtoReflect.Type instead.
@@ -122,24 +103,6 @@ func (*ExtensionGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *ExtensionGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ExtensionGroup.Unmarshal(m, b)
-}
-func (m *ExtensionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ExtensionGroup.Marshal(b, m, deterministic)
-}
-func (m *ExtensionGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtensionGroup.Merge(m, src)
-}
-func (m *ExtensionGroup) XXX_Size() int {
-	return xxx_messageInfo_ExtensionGroup.Size(m)
-}
-func (m *ExtensionGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_ExtensionGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ExtensionGroup proto.InternalMessageInfo
-
 func (m *ExtensionGroup) GetExtensionGroup() string {
 func (m *ExtensionGroup) GetExtensionGroup() string {
 	if m != nil && m.ExtensionGroup != nil {
 	if m != nil && m.ExtensionGroup != nil {
 		return *m.ExtensionGroup
 		return *m.ExtensionGroup
@@ -158,7 +121,7 @@ func (m *ExtendingMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_ext_ext_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_extensions_ext_ext_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *ExtendingMessage) Reset()         { *m = ExtendingMessage{} }
 func (m *ExtendingMessage) Reset()         { *m = ExtendingMessage{} }
-func (m *ExtendingMessage) String() string { return proto.CompactTextString(m) }
+func (m *ExtendingMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ExtendingMessage) ProtoMessage()    {}
 func (*ExtendingMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use ExtendingMessage.ProtoReflect.Type instead.
 // Deprecated: Use ExtendingMessage.ProtoReflect.Type instead.
@@ -166,24 +129,6 @@ func (*ExtendingMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *ExtendingMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ExtendingMessage.Unmarshal(m, b)
-}
-func (m *ExtendingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ExtendingMessage.Marshal(b, m, deterministic)
-}
-func (m *ExtendingMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtendingMessage.Merge(m, src)
-}
-func (m *ExtendingMessage) XXX_Size() int {
-	return xxx_messageInfo_ExtendingMessage.Size(m)
-}
-func (m *ExtendingMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_ExtendingMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ExtendingMessage proto.InternalMessageInfo
-
 type RepeatedGroup struct {
 type RepeatedGroup struct {
 	RepeatedXGroup       []string `protobuf:"bytes,319,rep,name=repeated_x_group,json=repeatedXGroup" json:"repeated_x_group,omitempty"`
 	RepeatedXGroup       []string `protobuf:"bytes,319,rep,name=repeated_x_group,json=repeatedXGroup" json:"repeated_x_group,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -195,7 +140,7 @@ func (m *RepeatedGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_ext_ext_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_extensions_ext_ext_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *RepeatedGroup) Reset()         { *m = RepeatedGroup{} }
 func (m *RepeatedGroup) Reset()         { *m = RepeatedGroup{} }
-func (m *RepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (m *RepeatedGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*RepeatedGroup) ProtoMessage()    {}
 func (*RepeatedGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use RepeatedGroup.ProtoReflect.Type instead.
 // Deprecated: Use RepeatedGroup.ProtoReflect.Type instead.
@@ -203,24 +148,6 @@ func (*RepeatedGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{3}
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{3}
 }
 }
 
 
-func (m *RepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RepeatedGroup.Unmarshal(m, b)
-}
-func (m *RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RepeatedGroup.Marshal(b, m, deterministic)
-}
-func (m *RepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RepeatedGroup.Merge(m, src)
-}
-func (m *RepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_RepeatedGroup.Size(m)
-}
-func (m *RepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_RepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RepeatedGroup proto.InternalMessageInfo
-
 func (m *RepeatedGroup) GetRepeatedXGroup() []string {
 func (m *RepeatedGroup) GetRepeatedXGroup() []string {
 	if m != nil {
 	if m != nil {
 		return m.RepeatedXGroup
 		return m.RepeatedXGroup
@@ -240,7 +167,7 @@ func (m *Extendable) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_ext_ext_proto_messageTypes[4].MessageOf(m)
 	return xxx_File_extensions_ext_ext_proto_messageTypes[4].MessageOf(m)
 }
 }
 func (m *Extendable) Reset()         { *m = Extendable{} }
 func (m *Extendable) Reset()         { *m = Extendable{} }
-func (m *Extendable) String() string { return proto.CompactTextString(m) }
+func (m *Extendable) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Extendable) ProtoMessage()    {}
 func (*Extendable) ProtoMessage()    {}
 
 
 // Deprecated: Use Extendable.ProtoReflect.Type instead.
 // Deprecated: Use Extendable.ProtoReflect.Type instead.
@@ -257,24 +184,6 @@ func (*Extendable) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_Extendable
 	return extRange_Extendable
 }
 }
 
 
-func (m *Extendable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Extendable.Unmarshal(m, b)
-}
-func (m *Extendable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Extendable.Marshal(b, m, deterministic)
-}
-func (m *Extendable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Extendable.Merge(m, src)
-}
-func (m *Extendable) XXX_Size() int {
-	return xxx_messageInfo_Extendable.Size(m)
-}
-func (m *Extendable) XXX_DiscardUnknown() {
-	xxx_messageInfo_Extendable.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Extendable proto.InternalMessageInfo
-
 // Message set wire format.
 // Message set wire format.
 type MessageSetWireFormatExtension struct {
 type MessageSetWireFormatExtension struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -286,7 +195,7 @@ func (m *MessageSetWireFormatExtension) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_ext_ext_proto_messageTypes[5].MessageOf(m)
 	return xxx_File_extensions_ext_ext_proto_messageTypes[5].MessageOf(m)
 }
 }
 func (m *MessageSetWireFormatExtension) Reset()         { *m = MessageSetWireFormatExtension{} }
 func (m *MessageSetWireFormatExtension) Reset()         { *m = MessageSetWireFormatExtension{} }
-func (m *MessageSetWireFormatExtension) String() string { return proto.CompactTextString(m) }
+func (m *MessageSetWireFormatExtension) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*MessageSetWireFormatExtension) ProtoMessage()    {}
 func (*MessageSetWireFormatExtension) ProtoMessage()    {}
 
 
 // Deprecated: Use MessageSetWireFormatExtension.ProtoReflect.Type instead.
 // Deprecated: Use MessageSetWireFormatExtension.ProtoReflect.Type instead.
@@ -294,24 +203,6 @@ func (*MessageSetWireFormatExtension) Descriptor() ([]byte, []int) {
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{5}
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{5}
 }
 }
 
 
-func (m *MessageSetWireFormatExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageSetWireFormatExtension.Unmarshal(m, b)
-}
-func (m *MessageSetWireFormatExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageSetWireFormatExtension.Marshal(b, m, deterministic)
-}
-func (m *MessageSetWireFormatExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageSetWireFormatExtension.Merge(m, src)
-}
-func (m *MessageSetWireFormatExtension) XXX_Size() int {
-	return xxx_messageInfo_MessageSetWireFormatExtension.Size(m)
-}
-func (m *MessageSetWireFormatExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageSetWireFormatExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageSetWireFormatExtension proto.InternalMessageInfo
-
 type Message_M struct {
 type Message_M struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -322,7 +213,7 @@ func (m *Message_M) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_ext_ext_proto_messageTypes[6].MessageOf(m)
 	return xxx_File_extensions_ext_ext_proto_messageTypes[6].MessageOf(m)
 }
 }
 func (m *Message_M) Reset()         { *m = Message_M{} }
 func (m *Message_M) Reset()         { *m = Message_M{} }
-func (m *Message_M) String() string { return proto.CompactTextString(m) }
+func (m *Message_M) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message_M) ProtoMessage()    {}
 func (*Message_M) ProtoMessage()    {}
 
 
 // Deprecated: Use Message_M.ProtoReflect.Type instead.
 // Deprecated: Use Message_M.ProtoReflect.Type instead.
@@ -330,24 +221,6 @@ func (*Message_M) Descriptor() ([]byte, []int) {
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{0, 0}
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{0, 0}
 }
 }
 
 
-func (m *Message_M) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_M.Unmarshal(m, b)
-}
-func (m *Message_M) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_M.Marshal(b, m, deterministic)
-}
-func (m *Message_M) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_M.Merge(m, src)
-}
-func (m *Message_M) XXX_Size() int {
-	return xxx_messageInfo_Message_M.Size(m)
-}
-func (m *Message_M) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_M.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_M proto.InternalMessageInfo
-
 type ExtendingMessage_ExtendingMessageSubmessage struct {
 type ExtendingMessage_ExtendingMessageSubmessage struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -361,7 +234,7 @@ func (m *ExtendingMessage_ExtendingMessageSubmessage) Reset() {
 	*m = ExtendingMessage_ExtendingMessageSubmessage{}
 	*m = ExtendingMessage_ExtendingMessageSubmessage{}
 }
 }
 func (m *ExtendingMessage_ExtendingMessageSubmessage) String() string {
 func (m *ExtendingMessage_ExtendingMessageSubmessage) String() string {
-	return proto.CompactTextString(m)
+	return protoimpl.X.MessageStringOf(m)
 }
 }
 func (*ExtendingMessage_ExtendingMessageSubmessage) ProtoMessage() {}
 func (*ExtendingMessage_ExtendingMessageSubmessage) ProtoMessage() {}
 
 
@@ -370,24 +243,6 @@ func (*ExtendingMessage_ExtendingMessageSubmessage) Descriptor() ([]byte, []int)
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{2, 0}
 	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{2, 0}
 }
 }
 
 
-func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.Unmarshal(m, b)
-}
-func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.Marshal(b, m, deterministic)
-}
-func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.Merge(m, src)
-}
-func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_Size() int {
-	return xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.Size(m)
-}
-func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage proto.InternalMessageInfo
-
 var xxx_File_extensions_ext_ext_proto_extDescs = []protoiface.ExtensionDescV1{
 var xxx_File_extensions_ext_ext_proto_extDescs = []protoiface.ExtensionDescV1{
 	{
 	{
 		ExtendedType:  (*base.BaseMessage)(nil),
 		ExtendedType:  (*base.BaseMessage)(nil),
@@ -1278,7 +1133,6 @@ func xxx_File_extensions_ext_ext_proto_init() {
 	if File_extensions_ext_ext_proto != nil {
 	if File_extensions_ext_ext_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 8)
 	extensionTypes := make([]protoreflect.ExtensionType, 44)
 	extensionTypes := make([]protoreflect.ExtensionType, 44)
 	File_extensions_ext_ext_proto = protoimpl.FileBuilder{
 	File_extensions_ext_ext_proto = protoimpl.FileBuilder{
 		RawDescriptor:        xxx_File_extensions_ext_ext_proto_rawdesc,
 		RawDescriptor:        xxx_File_extensions_ext_ext_proto_rawdesc,
@@ -1286,68 +1140,11 @@ func xxx_File_extensions_ext_ext_proto_init() {
 		DependencyIndexes:    xxx_File_extensions_ext_ext_proto_depIdxs,
 		DependencyIndexes:    xxx_File_extensions_ext_ext_proto_depIdxs,
 		LegacyExtensions:     xxx_File_extensions_ext_ext_proto_extDescs,
 		LegacyExtensions:     xxx_File_extensions_ext_ext_proto_extDescs,
 		EnumOutputTypes:      xxx_File_extensions_ext_ext_proto_enumTypes,
 		EnumOutputTypes:      xxx_File_extensions_ext_ext_proto_enumTypes,
-		MessageOutputTypes:   messageTypes,
+		MessageOutputTypes:   xxx_File_extensions_ext_ext_proto_messageTypes,
 		ExtensionOutputTypes: extensionTypes,
 		ExtensionOutputTypes: extensionTypes,
+		FilesRegistry:        protoregistry.GlobalFiles,
+		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_extensions_ext_ext_proto_goTypes[1:][:8]
-	for i, mt := range messageTypes {
-		xxx_File_extensions_ext_ext_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_extensions_ext_ext_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("extensions/ext/ext.proto", xxx_File_extensions_ext_ext_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.extension.ext.Enum", Enum_name, Enum_value)
-	proto.RegisterType((*Message)(nil), "goproto.protoc.extension.ext.Message")
-	proto.RegisterType((*ExtensionGroup)(nil), "goproto.protoc.extension.ext.ExtensionGroup")
-	proto.RegisterType((*ExtendingMessage)(nil), "goproto.protoc.extension.ext.ExtendingMessage")
-	proto.RegisterType((*RepeatedGroup)(nil), "goproto.protoc.extension.ext.RepeatedGroup")
-	proto.RegisterType((*Extendable)(nil), "goproto.protoc.extension.ext.Extendable")
-	proto.RegisterType((*MessageSetWireFormatExtension)(nil), "goproto.protoc.extension.ext.MessageSetWireFormatExtension")
-	proto.RegisterType((*Message_M)(nil), "goproto.protoc.extension.ext.Message.M")
-	proto.RegisterType((*ExtendingMessage_ExtendingMessageSubmessage)(nil), "goproto.protoc.extension.ext.ExtendingMessage.ExtendingMessageSubmessage")
-	proto.RegisterExtension(E_ExtensionBool)
-	proto.RegisterExtension(E_ExtensionEnum)
-	proto.RegisterExtension(E_ExtensionInt32)
-	proto.RegisterExtension(E_ExtensionSint32)
-	proto.RegisterExtension(E_ExtensionUint32)
-	proto.RegisterExtension(E_ExtensionInt64)
-	proto.RegisterExtension(E_ExtensionSint64)
-	proto.RegisterExtension(E_ExtensionUint64)
-	proto.RegisterExtension(E_ExtensionSfixed32)
-	proto.RegisterExtension(E_ExtensionFixed32)
-	proto.RegisterExtension(E_ExtensionFloat)
-	proto.RegisterExtension(E_ExtensionSfixed64)
-	proto.RegisterExtension(E_ExtensionFixed64)
-	proto.RegisterExtension(E_ExtensionDouble)
-	proto.RegisterExtension(E_ExtensionString)
-	proto.RegisterExtension(E_ExtensionBytes)
-	proto.RegisterExtension(E_Extension_Message)
-	proto.RegisterExtension(E_Extension_MessageM)
-	proto.RegisterExtension(E_Extensiongroup)
-	proto.RegisterExtension(E_ExtraMessage)
-	proto.RegisterExtension(E_RepeatedXBool)
-	proto.RegisterExtension(E_RepeatedXEnum)
-	proto.RegisterExtension(E_RepeatedXInt32)
-	proto.RegisterExtension(E_RepeatedXSint32)
-	proto.RegisterExtension(E_RepeatedXUint32)
-	proto.RegisterExtension(E_RepeatedXInt64)
-	proto.RegisterExtension(E_RepeatedXSint64)
-	proto.RegisterExtension(E_RepeatedXUint64)
-	proto.RegisterExtension(E_RepeatedXSfixed32)
-	proto.RegisterExtension(E_RepeatedXFixed32)
-	proto.RegisterExtension(E_RepeatedXFloat)
-	proto.RegisterExtension(E_RepeatedXSfixed64)
-	proto.RegisterExtension(E_RepeatedXFixed64)
-	proto.RegisterExtension(E_RepeatedXDouble)
-	proto.RegisterExtension(E_RepeatedXString)
-	proto.RegisterExtension(E_RepeatedXBytes)
-	proto.RegisterExtension(E_RepeatedX_Message)
-	proto.RegisterExtension(E_Repeatedgroup)
-	proto.RegisterExtension(E_ExtendableField)
-	proto.RegisterExtension(E_ExtendableStringField)
-	proto.RegisterExtension(E_MessageSetExtension)
-	proto.RegisterExtension(E_ExtendingMessage_ExtendingMessageString)
-	proto.RegisterExtension(E_ExtendingMessage_ExtendingMessageSubmessage)
-	proto.RegisterExtension(E_MessageSetWireFormatExtension_MessageSetExtension)
 	xxx_File_extensions_ext_ext_proto_goTypes = nil
 	xxx_File_extensions_ext_ext_proto_goTypes = nil
 	xxx_File_extensions_ext_ext_proto_depIdxs = nil
 	xxx_File_extensions_ext_ext_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go

@@ -4,10 +4,9 @@
 package extra
 package extra
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type ExtraMessage struct {
 type ExtraMessage struct {
@@ -21,7 +20,7 @@ func (m *ExtraMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_extra_extra_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_extensions_extra_extra_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *ExtraMessage) Reset()         { *m = ExtraMessage{} }
 func (m *ExtraMessage) Reset()         { *m = ExtraMessage{} }
-func (m *ExtraMessage) String() string { return proto.CompactTextString(m) }
+func (m *ExtraMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ExtraMessage) ProtoMessage()    {}
 func (*ExtraMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use ExtraMessage.ProtoReflect.Type instead.
 // Deprecated: Use ExtraMessage.ProtoReflect.Type instead.
@@ -29,24 +28,6 @@ func (*ExtraMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_extensions_extra_extra_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_extensions_extra_extra_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *ExtraMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ExtraMessage.Unmarshal(m, b)
-}
-func (m *ExtraMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ExtraMessage.Marshal(b, m, deterministic)
-}
-func (m *ExtraMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtraMessage.Merge(m, src)
-}
-func (m *ExtraMessage) XXX_Size() int {
-	return xxx_messageInfo_ExtraMessage.Size(m)
-}
-func (m *ExtraMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_ExtraMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ExtraMessage proto.InternalMessageInfo
-
 func (m *ExtraMessage) GetData() []byte {
 func (m *ExtraMessage) GetData() []byte {
 	if m != nil {
 	if m != nil {
 		return m.Data
 		return m.Data
@@ -86,20 +67,14 @@ func xxx_File_extensions_extra_extra_proto_init() {
 	if File_extensions_extra_extra_proto != nil {
 	if File_extensions_extra_extra_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_extensions_extra_extra_proto = protoimpl.FileBuilder{
 	File_extensions_extra_extra_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_extensions_extra_extra_proto_rawdesc,
 		RawDescriptor:      xxx_File_extensions_extra_extra_proto_rawdesc,
 		GoTypes:            xxx_File_extensions_extra_extra_proto_goTypes,
 		GoTypes:            xxx_File_extensions_extra_extra_proto_goTypes,
 		DependencyIndexes:  xxx_File_extensions_extra_extra_proto_depIdxs,
 		DependencyIndexes:  xxx_File_extensions_extra_extra_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_extensions_extra_extra_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_extensions_extra_extra_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_extensions_extra_extra_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_extensions_extra_extra_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("extensions/extra/extra.proto", xxx_File_extensions_extra_extra_proto_rawdesc_gzipped)
-	proto.RegisterType((*ExtraMessage)(nil), "goproto.protoc.extension.extra.ExtraMessage")
 	xxx_File_extensions_extra_extra_proto_goTypes = nil
 	xxx_File_extensions_extra_extra_proto_goTypes = nil
 	xxx_File_extensions_extra_extra_proto_depIdxs = nil
 	xxx_File_extensions_extra_extra_proto_depIdxs = nil
 }
 }

+ 5 - 65
cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go

@@ -4,12 +4,11 @@
 package proto3
 package proto3
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	descriptor "github.com/golang/protobuf/v2/types/descriptor"
 	descriptor "github.com/golang/protobuf/v2/types/descriptor"
-	reflect "reflect"
 )
 )
 
 
 type Enum int32
 type Enum int32
@@ -54,7 +53,7 @@ func (m *Message) ProtoReflect() protoreflect.Message {
 	return xxx_File_extensions_proto3_ext3_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_extensions_proto3_ext3_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Message) Reset()         { *m = Message{} }
 func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
+func (m *Message) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message) ProtoMessage()    {}
 func (*Message) ProtoMessage()    {}
 
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 // Deprecated: Use Message.ProtoReflect.Type instead.
@@ -62,24 +61,6 @@ func (*Message) Descriptor() ([]byte, []int) {
 	return xxx_File_extensions_proto3_ext3_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_extensions_proto3_ext3_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
 var xxx_File_extensions_proto3_ext3_proto_extDescs = []protoiface.ExtensionDescV1{
 var xxx_File_extensions_proto3_ext3_proto_extDescs = []protoiface.ExtensionDescV1{
 	{
 	{
 		ExtendedType:  (*descriptor.MessageOptions)(nil),
 		ExtendedType:  (*descriptor.MessageOptions)(nil),
@@ -725,7 +706,6 @@ func xxx_File_extensions_proto3_ext3_proto_init() {
 	if File_extensions_proto3_ext3_proto != nil {
 	if File_extensions_proto3_ext3_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	extensionTypes := make([]protoreflect.ExtensionType, 34)
 	extensionTypes := make([]protoreflect.ExtensionType, 34)
 	File_extensions_proto3_ext3_proto = protoimpl.FileBuilder{
 	File_extensions_proto3_ext3_proto = protoimpl.FileBuilder{
 		RawDescriptor:        xxx_File_extensions_proto3_ext3_proto_rawdesc,
 		RawDescriptor:        xxx_File_extensions_proto3_ext3_proto_rawdesc,
@@ -733,51 +713,11 @@ func xxx_File_extensions_proto3_ext3_proto_init() {
 		DependencyIndexes:    xxx_File_extensions_proto3_ext3_proto_depIdxs,
 		DependencyIndexes:    xxx_File_extensions_proto3_ext3_proto_depIdxs,
 		LegacyExtensions:     xxx_File_extensions_proto3_ext3_proto_extDescs,
 		LegacyExtensions:     xxx_File_extensions_proto3_ext3_proto_extDescs,
 		EnumOutputTypes:      xxx_File_extensions_proto3_ext3_proto_enumTypes,
 		EnumOutputTypes:      xxx_File_extensions_proto3_ext3_proto_enumTypes,
-		MessageOutputTypes:   messageTypes,
+		MessageOutputTypes:   xxx_File_extensions_proto3_ext3_proto_messageTypes,
 		ExtensionOutputTypes: extensionTypes,
 		ExtensionOutputTypes: extensionTypes,
+		FilesRegistry:        protoregistry.GlobalFiles,
+		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_extensions_proto3_ext3_proto_goTypes[1:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_extensions_proto3_ext3_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_extensions_proto3_ext3_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("extensions/proto3/ext3.proto", xxx_File_extensions_proto3_ext3_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.extension.proto3.Enum", Enum_name, Enum_value)
-	proto.RegisterType((*Message)(nil), "goproto.protoc.extension.proto3.Message")
-	proto.RegisterExtension(E_ExtensionBool)
-	proto.RegisterExtension(E_ExtensionEnum)
-	proto.RegisterExtension(E_ExtensionInt32)
-	proto.RegisterExtension(E_ExtensionSint32)
-	proto.RegisterExtension(E_ExtensionUint32)
-	proto.RegisterExtension(E_ExtensionInt64)
-	proto.RegisterExtension(E_ExtensionSint64)
-	proto.RegisterExtension(E_ExtensionUint64)
-	proto.RegisterExtension(E_ExtensionSfixed32)
-	proto.RegisterExtension(E_ExtensionFixed32)
-	proto.RegisterExtension(E_ExtensionFloat)
-	proto.RegisterExtension(E_ExtensionSfixed64)
-	proto.RegisterExtension(E_ExtensionFixed64)
-	proto.RegisterExtension(E_ExtensionDouble)
-	proto.RegisterExtension(E_ExtensionString)
-	proto.RegisterExtension(E_ExtensionBytes)
-	proto.RegisterExtension(E_Extension_Message)
-	proto.RegisterExtension(E_RepeatedExtensionBool)
-	proto.RegisterExtension(E_RepeatedExtensionEnum)
-	proto.RegisterExtension(E_RepeatedExtensionInt32)
-	proto.RegisterExtension(E_RepeatedExtensionSint32)
-	proto.RegisterExtension(E_RepeatedExtensionUint32)
-	proto.RegisterExtension(E_RepeatedExtensionInt64)
-	proto.RegisterExtension(E_RepeatedExtensionSint64)
-	proto.RegisterExtension(E_RepeatedExtensionUint64)
-	proto.RegisterExtension(E_RepeatedExtensionSfixed32)
-	proto.RegisterExtension(E_RepeatedExtensionFixed32)
-	proto.RegisterExtension(E_RepeatedExtensionFloat)
-	proto.RegisterExtension(E_RepeatedExtensionSfixed64)
-	proto.RegisterExtension(E_RepeatedExtensionFixed64)
-	proto.RegisterExtension(E_RepeatedExtensionDouble)
-	proto.RegisterExtension(E_RepeatedExtensionString)
-	proto.RegisterExtension(E_RepeatedExtensionBytes)
-	proto.RegisterExtension(E_RepeatedExtension_Message)
 	xxx_File_extensions_proto3_ext3_proto_goTypes = nil
 	xxx_File_extensions_proto3_ext3_proto_goTypes = nil
 	xxx_File_extensions_proto3_ext3_proto_depIdxs = nil
 	xxx_File_extensions_proto3_ext3_proto_depIdxs = nil
 }
 }

+ 6 - 50
cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go

@@ -4,10 +4,9 @@
 package fieldnames
 package fieldnames
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // Assorted edge cases in field name conflict resolution.
 // Assorted edge cases in field name conflict resolution.
@@ -59,7 +58,7 @@ func (m *Message) ProtoReflect() protoreflect.Message {
 	return xxx_File_fieldnames_fieldnames_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_fieldnames_fieldnames_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Message) Reset()         { *m = Message{} }
 func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
+func (m *Message) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message) ProtoMessage()    {}
 func (*Message) ProtoMessage()    {}
 
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 // Deprecated: Use Message.ProtoReflect.Type instead.
@@ -67,24 +66,6 @@ func (*Message) Descriptor() ([]byte, []int) {
 	return xxx_File_fieldnames_fieldnames_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_fieldnames_fieldnames_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
 func (m *Message) GetFieldOne() string {
 func (m *Message) GetFieldOne() string {
 	if m != nil && m.FieldOne != nil {
 	if m != nil && m.FieldOne != nil {
 		return *m.FieldOne
 		return *m.FieldOne
@@ -288,7 +269,7 @@ func (m *Message_OneofMessageConflict) ProtoReflect() protoreflect.Message {
 	return xxx_File_fieldnames_fieldnames_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_fieldnames_fieldnames_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Message_OneofMessageConflict) Reset()         { *m = Message_OneofMessageConflict{} }
 func (m *Message_OneofMessageConflict) Reset()         { *m = Message_OneofMessageConflict{} }
-func (m *Message_OneofMessageConflict) String() string { return proto.CompactTextString(m) }
+func (m *Message_OneofMessageConflict) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message_OneofMessageConflict) ProtoMessage()    {}
 func (*Message_OneofMessageConflict) ProtoMessage()    {}
 
 
 // Deprecated: Use Message_OneofMessageConflict.ProtoReflect.Type instead.
 // Deprecated: Use Message_OneofMessageConflict.ProtoReflect.Type instead.
@@ -296,24 +277,6 @@ func (*Message_OneofMessageConflict) Descriptor() ([]byte, []int) {
 	return xxx_File_fieldnames_fieldnames_proto_rawdesc_gzipped, []int{0, 0}
 	return xxx_File_fieldnames_fieldnames_proto_rawdesc_gzipped, []int{0, 0}
 }
 }
 
 
-func (m *Message_OneofMessageConflict) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_OneofMessageConflict.Unmarshal(m, b)
-}
-func (m *Message_OneofMessageConflict) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_OneofMessageConflict.Marshal(b, m, deterministic)
-}
-func (m *Message_OneofMessageConflict) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_OneofMessageConflict.Merge(m, src)
-}
-func (m *Message_OneofMessageConflict) XXX_Size() int {
-	return xxx_messageInfo_Message_OneofMessageConflict.Size(m)
-}
-func (m *Message_OneofMessageConflict) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_OneofMessageConflict.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_OneofMessageConflict proto.InternalMessageInfo
-
 var xxx_File_fieldnames_fieldnames_proto_rawdesc = []byte{
 var xxx_File_fieldnames_fieldnames_proto_rawdesc = []byte{
 	// 826 bytes of the wire-encoded FileDescriptorProto
 	// 826 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x1b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x2f, 0x66, 0x69, 0x65,
 	0x0a, 0x1b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x2f, 0x66, 0x69, 0x65,
@@ -388,21 +351,14 @@ func xxx_File_fieldnames_fieldnames_proto_init() {
 	if File_fieldnames_fieldnames_proto != nil {
 	if File_fieldnames_fieldnames_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 2)
 	File_fieldnames_fieldnames_proto = protoimpl.FileBuilder{
 	File_fieldnames_fieldnames_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_fieldnames_fieldnames_proto_rawdesc,
 		RawDescriptor:      xxx_File_fieldnames_fieldnames_proto_rawdesc,
 		GoTypes:            xxx_File_fieldnames_fieldnames_proto_goTypes,
 		GoTypes:            xxx_File_fieldnames_fieldnames_proto_goTypes,
 		DependencyIndexes:  xxx_File_fieldnames_fieldnames_proto_depIdxs,
 		DependencyIndexes:  xxx_File_fieldnames_fieldnames_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_fieldnames_fieldnames_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_fieldnames_fieldnames_proto_goTypes[0:][:2]
-	for i, mt := range messageTypes {
-		xxx_File_fieldnames_fieldnames_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_fieldnames_fieldnames_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("fieldnames/fieldnames.proto", xxx_File_fieldnames_fieldnames_proto_rawdesc_gzipped)
-	proto.RegisterType((*Message)(nil), "goproto.protoc.fieldnames.Message")
-	proto.RegisterType((*Message_OneofMessageConflict)(nil), "goproto.protoc.fieldnames.Message.OneofMessageConflict")
 	xxx_File_fieldnames_fieldnames_proto_goTypes = nil
 	xxx_File_fieldnames_fieldnames_proto_goTypes = nil
 	xxx_File_fieldnames_fieldnames_proto_depIdxs = nil
 	xxx_File_fieldnames_fieldnames_proto_depIdxs = nil
 }
 }

+ 1 - 1
cmd/protoc-gen-go/testdata/go.mod

@@ -1,7 +1,7 @@
 module github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata
 module github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata
 
 
 require (
 require (
-	github.com/golang/protobuf v1.2.1-0.20190322195920-d94fb84e04b7
+	github.com/golang/protobuf v1.2.1-0.20190326022002-be03c15fcaa2
 	github.com/golang/protobuf/v2 v2.0.0
 	github.com/golang/protobuf/v2 v2.0.0
 )
 )
 
 

+ 5 - 30
cmd/protoc-gen-go/testdata/import_public/a.pb.go

@@ -4,12 +4,11 @@
 package import_public
 package import_public
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	sub "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/import_public/sub"
 	sub "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/import_public/sub"
 	sub2 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/import_public/sub2"
 	sub2 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/import_public/sub2"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // Symbols defined in public import of import_public/sub/a.proto
 // Symbols defined in public import of import_public/sub/a.proto
@@ -67,7 +66,7 @@ func (m *Public) ProtoReflect() protoreflect.Message {
 	return xxx_File_import_public_a_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_import_public_a_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Public) Reset()         { *m = Public{} }
 func (m *Public) Reset()         { *m = Public{} }
-func (m *Public) String() string { return proto.CompactTextString(m) }
+func (m *Public) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Public) ProtoMessage()    {}
 func (*Public) ProtoMessage()    {}
 
 
 // Deprecated: Use Public.ProtoReflect.Type instead.
 // Deprecated: Use Public.ProtoReflect.Type instead.
@@ -75,24 +74,6 @@ func (*Public) Descriptor() ([]byte, []int) {
 	return xxx_File_import_public_a_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_import_public_a_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Public) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Public.Unmarshal(m, b)
-}
-func (m *Public) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Public.Marshal(b, m, deterministic)
-}
-func (m *Public) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Public.Merge(m, src)
-}
-func (m *Public) XXX_Size() int {
-	return xxx_messageInfo_Public.Size(m)
-}
-func (m *Public) XXX_DiscardUnknown() {
-	xxx_messageInfo_Public.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Public proto.InternalMessageInfo
-
 func (m *Public) GetM() *sub.M {
 func (m *Public) GetM() *sub.M {
 	if m != nil {
 	if m != nil {
 		return m.M
 		return m.M
@@ -167,20 +148,14 @@ func xxx_File_import_public_a_proto_init() {
 		return
 		return
 	}
 	}
 	xxx_File_import_public_b_proto_init()
 	xxx_File_import_public_b_proto_init()
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_import_public_a_proto = protoimpl.FileBuilder{
 	File_import_public_a_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_import_public_a_proto_rawdesc,
 		RawDescriptor:      xxx_File_import_public_a_proto_rawdesc,
 		GoTypes:            xxx_File_import_public_a_proto_goTypes,
 		GoTypes:            xxx_File_import_public_a_proto_goTypes,
 		DependencyIndexes:  xxx_File_import_public_a_proto_depIdxs,
 		DependencyIndexes:  xxx_File_import_public_a_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_import_public_a_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_import_public_a_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_import_public_a_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_import_public_a_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("import_public/a.proto", xxx_File_import_public_a_proto_rawdesc_gzipped)
-	proto.RegisterType((*Public)(nil), "goproto.protoc.import_public.Public")
 	xxx_File_import_public_a_proto_goTypes = nil
 	xxx_File_import_public_a_proto_goTypes = nil
 	xxx_File_import_public_a_proto_depIdxs = nil
 	xxx_File_import_public_a_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/import_public/b.pb.go

@@ -4,11 +4,10 @@
 package import_public
 package import_public
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	sub "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/import_public/sub"
 	sub "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/import_public/sub"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Local struct {
 type Local struct {
@@ -23,7 +22,7 @@ func (m *Local) ProtoReflect() protoreflect.Message {
 	return xxx_File_import_public_b_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_import_public_b_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Local) Reset()         { *m = Local{} }
 func (m *Local) Reset()         { *m = Local{} }
-func (m *Local) String() string { return proto.CompactTextString(m) }
+func (m *Local) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Local) ProtoMessage()    {}
 func (*Local) ProtoMessage()    {}
 
 
 // Deprecated: Use Local.ProtoReflect.Type instead.
 // Deprecated: Use Local.ProtoReflect.Type instead.
@@ -31,24 +30,6 @@ func (*Local) Descriptor() ([]byte, []int) {
 	return xxx_File_import_public_b_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_import_public_b_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Local) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Local.Unmarshal(m, b)
-}
-func (m *Local) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Local.Marshal(b, m, deterministic)
-}
-func (m *Local) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Local.Merge(m, src)
-}
-func (m *Local) XXX_Size() int {
-	return xxx_messageInfo_Local.Size(m)
-}
-func (m *Local) XXX_DiscardUnknown() {
-	xxx_messageInfo_Local.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Local proto.InternalMessageInfo
-
 func (m *Local) GetM() *sub.M {
 func (m *Local) GetM() *sub.M {
 	if m != nil {
 	if m != nil {
 		return m.M
 		return m.M
@@ -106,20 +87,14 @@ func xxx_File_import_public_b_proto_init() {
 	if File_import_public_b_proto != nil {
 	if File_import_public_b_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_import_public_b_proto = protoimpl.FileBuilder{
 	File_import_public_b_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_import_public_b_proto_rawdesc,
 		RawDescriptor:      xxx_File_import_public_b_proto_rawdesc,
 		GoTypes:            xxx_File_import_public_b_proto_goTypes,
 		GoTypes:            xxx_File_import_public_b_proto_goTypes,
 		DependencyIndexes:  xxx_File_import_public_b_proto_depIdxs,
 		DependencyIndexes:  xxx_File_import_public_b_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_import_public_b_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_import_public_b_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_import_public_b_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_import_public_b_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("import_public/b.proto", xxx_File_import_public_b_proto_rawdesc_gzipped)
-	proto.RegisterType((*Local)(nil), "goproto.protoc.import_public.Local")
 	xxx_File_import_public_b_proto_goTypes = nil
 	xxx_File_import_public_b_proto_goTypes = nil
 	xxx_File_import_public_b_proto_depIdxs = nil
 	xxx_File_import_public_b_proto_depIdxs = nil
 }
 }

+ 6 - 54
cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go

@@ -4,13 +4,12 @@
 package sub
 package sub
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	sub2 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/import_public/sub2"
 	sub2 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/import_public/sub2"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	math "math"
 	math "math"
-	reflect "reflect"
 )
 )
 
 
 // Symbols defined in public import of import_public/sub2/a.proto
 // Symbols defined in public import of import_public/sub2/a.proto
@@ -175,7 +174,7 @@ func (m *M) ProtoReflect() protoreflect.Message {
 	return xxx_File_import_public_sub_a_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_import_public_sub_a_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M) Reset()         { *m = M{} }
 func (m *M) Reset()         { *m = M{} }
-func (m *M) String() string { return proto.CompactTextString(m) }
+func (m *M) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M) ProtoMessage()    {}
 func (*M) ProtoMessage()    {}
 
 
 // Deprecated: Use M.ProtoReflect.Type instead.
 // Deprecated: Use M.ProtoReflect.Type instead.
@@ -192,24 +191,6 @@ func (*M) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_M
 	return extRange_M
 }
 }
 
 
-func (m *M) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M.Unmarshal(m, b)
-}
-func (m *M) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M.Marshal(b, m, deterministic)
-}
-func (m *M) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M.Merge(m, src)
-}
-func (m *M) XXX_Size() int {
-	return xxx_messageInfo_M.Size(m)
-}
-func (m *M) XXX_DiscardUnknown() {
-	xxx_messageInfo_M.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M proto.InternalMessageInfo
-
 const Default_M_S string = "default"
 const Default_M_S string = "default"
 
 
 var Default_M_B []byte = []byte("default")
 var Default_M_B []byte = []byte("default")
@@ -302,7 +283,7 @@ func (m *M_Submessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_import_public_sub_a_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_import_public_sub_a_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *M_Submessage) Reset()         { *m = M_Submessage{} }
 func (m *M_Submessage) Reset()         { *m = M_Submessage{} }
-func (m *M_Submessage) String() string { return proto.CompactTextString(m) }
+func (m *M_Submessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M_Submessage) ProtoMessage()    {}
 func (*M_Submessage) ProtoMessage()    {}
 
 
 // Deprecated: Use M_Submessage.ProtoReflect.Type instead.
 // Deprecated: Use M_Submessage.ProtoReflect.Type instead.
@@ -310,24 +291,6 @@ func (*M_Submessage) Descriptor() ([]byte, []int) {
 	return xxx_File_import_public_sub_a_proto_rawdesc_gzipped, []int{0, 0}
 	return xxx_File_import_public_sub_a_proto_rawdesc_gzipped, []int{0, 0}
 }
 }
 
 
-func (m *M_Submessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M_Submessage.Unmarshal(m, b)
-}
-func (m *M_Submessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M_Submessage.Marshal(b, m, deterministic)
-}
-func (m *M_Submessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M_Submessage.Merge(m, src)
-}
-func (m *M_Submessage) XXX_Size() int {
-	return xxx_messageInfo_M_Submessage.Size(m)
-}
-func (m *M_Submessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_M_Submessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M_Submessage proto.InternalMessageInfo
-
 type isM_Submessage_SubmessageOneofField interface {
 type isM_Submessage_SubmessageOneofField interface {
 	isM_Submessage_SubmessageOneofField()
 	isM_Submessage_SubmessageOneofField()
 }
 }
@@ -464,7 +427,6 @@ func xxx_File_import_public_sub_a_proto_init() {
 		return
 		return
 	}
 	}
 	xxx_File_import_public_sub_b_proto_init()
 	xxx_File_import_public_sub_b_proto_init()
-	messageTypes := make([]protoreflect.MessageType, 2)
 	extensionTypes := make([]protoreflect.ExtensionType, 1)
 	extensionTypes := make([]protoreflect.ExtensionType, 1)
 	File_import_public_sub_a_proto = protoimpl.FileBuilder{
 	File_import_public_sub_a_proto = protoimpl.FileBuilder{
 		RawDescriptor:        xxx_File_import_public_sub_a_proto_rawdesc,
 		RawDescriptor:        xxx_File_import_public_sub_a_proto_rawdesc,
@@ -472,21 +434,11 @@ func xxx_File_import_public_sub_a_proto_init() {
 		DependencyIndexes:    xxx_File_import_public_sub_a_proto_depIdxs,
 		DependencyIndexes:    xxx_File_import_public_sub_a_proto_depIdxs,
 		LegacyExtensions:     xxx_File_import_public_sub_a_proto_extDescs,
 		LegacyExtensions:     xxx_File_import_public_sub_a_proto_extDescs,
 		EnumOutputTypes:      xxx_File_import_public_sub_a_proto_enumTypes,
 		EnumOutputTypes:      xxx_File_import_public_sub_a_proto_enumTypes,
-		MessageOutputTypes:   messageTypes,
+		MessageOutputTypes:   xxx_File_import_public_sub_a_proto_messageTypes,
 		ExtensionOutputTypes: extensionTypes,
 		ExtensionOutputTypes: extensionTypes,
+		FilesRegistry:        protoregistry.GlobalFiles,
+		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_import_public_sub_a_proto_goTypes[3:][:2]
-	for i, mt := range messageTypes {
-		xxx_File_import_public_sub_a_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_import_public_sub_a_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("import_public/sub/a.proto", xxx_File_import_public_sub_a_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.import_public.sub.E", E_name, E_value)
-	proto.RegisterEnum("goproto.protoc.import_public.sub.M_Subenum", M_Subenum_name, M_Subenum_value)
-	proto.RegisterEnum("goproto.protoc.import_public.sub.M_Submessage_Submessage_Subenum", M_Submessage_Submessage_Subenum_name, M_Submessage_Submessage_Subenum_value)
-	proto.RegisterType((*M)(nil), "goproto.protoc.import_public.sub.M")
-	proto.RegisterType((*M_Submessage)(nil), "goproto.protoc.import_public.sub.M.Submessage")
-	proto.RegisterExtension(E_ExtensionField)
 	xxx_File_import_public_sub_a_proto_goTypes = nil
 	xxx_File_import_public_sub_a_proto_goTypes = nil
 	xxx_File_import_public_sub_a_proto_depIdxs = nil
 	xxx_File_import_public_sub_a_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go

@@ -4,10 +4,9 @@
 package sub
 package sub
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type M2 struct {
 type M2 struct {
@@ -20,7 +19,7 @@ func (m *M2) ProtoReflect() protoreflect.Message {
 	return xxx_File_import_public_sub_b_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_import_public_sub_b_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M2) Reset()         { *m = M2{} }
 func (m *M2) Reset()         { *m = M2{} }
-func (m *M2) String() string { return proto.CompactTextString(m) }
+func (m *M2) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M2) ProtoMessage()    {}
 func (*M2) ProtoMessage()    {}
 
 
 // Deprecated: Use M2.ProtoReflect.Type instead.
 // Deprecated: Use M2.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*M2) Descriptor() ([]byte, []int) {
 	return xxx_File_import_public_sub_b_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_import_public_sub_b_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *M2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M2.Unmarshal(m, b)
-}
-func (m *M2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M2.Marshal(b, m, deterministic)
-}
-func (m *M2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M2.Merge(m, src)
-}
-func (m *M2) XXX_Size() int {
-	return xxx_messageInfo_M2.Size(m)
-}
-func (m *M2) XXX_DiscardUnknown() {
-	xxx_messageInfo_M2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M2 proto.InternalMessageInfo
-
 var xxx_File_import_public_sub_b_proto_rawdesc = []byte{
 var xxx_File_import_public_sub_b_proto_rawdesc = []byte{
 	// 145 bytes of the wire-encoded FileDescriptorProto
 	// 145 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
@@ -77,20 +58,14 @@ func xxx_File_import_public_sub_b_proto_init() {
 	if File_import_public_sub_b_proto != nil {
 	if File_import_public_sub_b_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_import_public_sub_b_proto = protoimpl.FileBuilder{
 	File_import_public_sub_b_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_import_public_sub_b_proto_rawdesc,
 		RawDescriptor:      xxx_File_import_public_sub_b_proto_rawdesc,
 		GoTypes:            xxx_File_import_public_sub_b_proto_goTypes,
 		GoTypes:            xxx_File_import_public_sub_b_proto_goTypes,
 		DependencyIndexes:  xxx_File_import_public_sub_b_proto_depIdxs,
 		DependencyIndexes:  xxx_File_import_public_sub_b_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_import_public_sub_b_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_import_public_sub_b_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_import_public_sub_b_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_import_public_sub_b_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("import_public/sub/b.proto", xxx_File_import_public_sub_b_proto_rawdesc_gzipped)
-	proto.RegisterType((*M2)(nil), "goproto.protoc.import_public.sub.M2")
 	xxx_File_import_public_sub_b_proto_goTypes = nil
 	xxx_File_import_public_sub_b_proto_goTypes = nil
 	xxx_File_import_public_sub_b_proto_depIdxs = nil
 	xxx_File_import_public_sub_b_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go

@@ -4,10 +4,9 @@
 package sub2
 package sub2
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Sub2Message struct {
 type Sub2Message struct {
@@ -20,7 +19,7 @@ func (m *Sub2Message) ProtoReflect() protoreflect.Message {
 	return xxx_File_import_public_sub2_a_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_import_public_sub2_a_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Sub2Message) Reset()         { *m = Sub2Message{} }
 func (m *Sub2Message) Reset()         { *m = Sub2Message{} }
-func (m *Sub2Message) String() string { return proto.CompactTextString(m) }
+func (m *Sub2Message) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Sub2Message) ProtoMessage()    {}
 func (*Sub2Message) ProtoMessage()    {}
 
 
 // Deprecated: Use Sub2Message.ProtoReflect.Type instead.
 // Deprecated: Use Sub2Message.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*Sub2Message) Descriptor() ([]byte, []int) {
 	return xxx_File_import_public_sub2_a_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_import_public_sub2_a_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Sub2Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Sub2Message.Unmarshal(m, b)
-}
-func (m *Sub2Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Sub2Message.Marshal(b, m, deterministic)
-}
-func (m *Sub2Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Sub2Message.Merge(m, src)
-}
-func (m *Sub2Message) XXX_Size() int {
-	return xxx_messageInfo_Sub2Message.Size(m)
-}
-func (m *Sub2Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Sub2Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Sub2Message proto.InternalMessageInfo
-
 var xxx_File_import_public_sub2_a_proto_rawdesc = []byte{
 var xxx_File_import_public_sub2_a_proto_rawdesc = []byte{
 	// 157 bytes of the wire-encoded FileDescriptorProto
 	// 157 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x1a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
 	0x0a, 0x1a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
@@ -77,20 +58,14 @@ func xxx_File_import_public_sub2_a_proto_init() {
 	if File_import_public_sub2_a_proto != nil {
 	if File_import_public_sub2_a_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_import_public_sub2_a_proto = protoimpl.FileBuilder{
 	File_import_public_sub2_a_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_import_public_sub2_a_proto_rawdesc,
 		RawDescriptor:      xxx_File_import_public_sub2_a_proto_rawdesc,
 		GoTypes:            xxx_File_import_public_sub2_a_proto_goTypes,
 		GoTypes:            xxx_File_import_public_sub2_a_proto_goTypes,
 		DependencyIndexes:  xxx_File_import_public_sub2_a_proto_depIdxs,
 		DependencyIndexes:  xxx_File_import_public_sub2_a_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_import_public_sub2_a_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_import_public_sub2_a_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_import_public_sub2_a_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_import_public_sub2_a_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("import_public/sub2/a.proto", xxx_File_import_public_sub2_a_proto_rawdesc_gzipped)
-	proto.RegisterType((*Sub2Message)(nil), "goproto.protoc.import_public.sub2.Sub2Message")
 	xxx_File_import_public_sub2_a_proto_goTypes = nil
 	xxx_File_import_public_sub2_a_proto_goTypes = nil
 	xxx_File_import_public_sub2_a_proto_depIdxs = nil
 	xxx_File_import_public_sub2_a_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go

@@ -4,10 +4,9 @@
 package fmt
 package fmt
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type M struct {
 type M struct {
@@ -20,7 +19,7 @@ func (m *M) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_fmt_m_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_fmt_m_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M) Reset()         { *m = M{} }
 func (m *M) Reset()         { *m = M{} }
-func (m *M) String() string { return proto.CompactTextString(m) }
+func (m *M) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M) ProtoMessage()    {}
 func (*M) ProtoMessage()    {}
 
 
 // Deprecated: Use M.ProtoReflect.Type instead.
 // Deprecated: Use M.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*M) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_fmt_m_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_fmt_m_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *M) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M.Unmarshal(m, b)
-}
-func (m *M) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M.Marshal(b, m, deterministic)
-}
-func (m *M) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M.Merge(m, src)
-}
-func (m *M) XXX_Size() int {
-	return xxx_messageInfo_M.Size(m)
-}
-func (m *M) XXX_DiscardUnknown() {
-	xxx_messageInfo_M.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M proto.InternalMessageInfo
-
 var xxx_File_imports_fmt_m_proto_rawdesc = []byte{
 var xxx_File_imports_fmt_m_proto_rawdesc = []byte{
 	// 111 bytes of the wire-encoded FileDescriptorProto
 	// 111 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x13, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x66, 0x6d, 0x74, 0x2f, 0x6d, 0x2e,
 	0x0a, 0x13, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x66, 0x6d, 0x74, 0x2f, 0x6d, 0x2e,
@@ -74,20 +55,14 @@ func xxx_File_imports_fmt_m_proto_init() {
 	if File_imports_fmt_m_proto != nil {
 	if File_imports_fmt_m_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_fmt_m_proto = protoimpl.FileBuilder{
 	File_imports_fmt_m_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_fmt_m_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_fmt_m_proto_rawdesc,
 		GoTypes:            xxx_File_imports_fmt_m_proto_goTypes,
 		GoTypes:            xxx_File_imports_fmt_m_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_fmt_m_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_fmt_m_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_fmt_m_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_fmt_m_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_fmt_m_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_fmt_m_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/fmt/m.proto", xxx_File_imports_fmt_m_proto_rawdesc_gzipped)
-	proto.RegisterType((*M)(nil), "fmt.M")
 	xxx_File_imports_fmt_m_proto_goTypes = nil
 	xxx_File_imports_fmt_m_proto_goTypes = nil
 	xxx_File_imports_fmt_m_proto_depIdxs = nil
 	xxx_File_imports_fmt_m_proto_depIdxs = nil
 }
 }

+ 6 - 51
cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go

@@ -4,10 +4,9 @@
 package test_a_1
 package test_a_1
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type E1 int32
 type E1 int32
@@ -52,7 +51,7 @@ func (m *M1) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_a_1_m1_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_a_1_m1_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M1) Reset()         { *m = M1{} }
 func (m *M1) Reset()         { *m = M1{} }
-func (m *M1) String() string { return proto.CompactTextString(m) }
+func (m *M1) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M1) ProtoMessage()    {}
 func (*M1) ProtoMessage()    {}
 
 
 // Deprecated: Use M1.ProtoReflect.Type instead.
 // Deprecated: Use M1.ProtoReflect.Type instead.
@@ -60,24 +59,6 @@ func (*M1) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *M1) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M1.Unmarshal(m, b)
-}
-func (m *M1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M1.Marshal(b, m, deterministic)
-}
-func (m *M1) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M1.Merge(m, src)
-}
-func (m *M1) XXX_Size() int {
-	return xxx_messageInfo_M1.Size(m)
-}
-func (m *M1) XXX_DiscardUnknown() {
-	xxx_messageInfo_M1.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M1 proto.InternalMessageInfo
-
 type M1_1 struct {
 type M1_1 struct {
 	M1                   *M1      `protobuf:"bytes,1,opt,name=m1,proto3" json:"m1,omitempty"`
 	M1                   *M1      `protobuf:"bytes,1,opt,name=m1,proto3" json:"m1,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -89,7 +70,7 @@ func (m *M1_1) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_a_1_m1_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_imports_test_a_1_m1_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *M1_1) Reset()         { *m = M1_1{} }
 func (m *M1_1) Reset()         { *m = M1_1{} }
-func (m *M1_1) String() string { return proto.CompactTextString(m) }
+func (m *M1_1) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M1_1) ProtoMessage()    {}
 func (*M1_1) ProtoMessage()    {}
 
 
 // Deprecated: Use M1_1.ProtoReflect.Type instead.
 // Deprecated: Use M1_1.ProtoReflect.Type instead.
@@ -97,24 +78,6 @@ func (*M1_1) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *M1_1) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M1_1.Unmarshal(m, b)
-}
-func (m *M1_1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M1_1.Marshal(b, m, deterministic)
-}
-func (m *M1_1) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M1_1.Merge(m, src)
-}
-func (m *M1_1) XXX_Size() int {
-	return xxx_messageInfo_M1_1.Size(m)
-}
-func (m *M1_1) XXX_DiscardUnknown() {
-	xxx_messageInfo_M1_1.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M1_1 proto.InternalMessageInfo
-
 func (m *M1_1) GetM1() *M1 {
 func (m *M1_1) GetM1() *M1 {
 	if m != nil {
 	if m != nil {
 		return m.M1
 		return m.M1
@@ -160,23 +123,15 @@ func xxx_File_imports_test_a_1_m1_proto_init() {
 	if File_imports_test_a_1_m1_proto != nil {
 	if File_imports_test_a_1_m1_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 2)
 	File_imports_test_a_1_m1_proto = protoimpl.FileBuilder{
 	File_imports_test_a_1_m1_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_a_1_m1_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_a_1_m1_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_a_1_m1_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_a_1_m1_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_a_1_m1_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_a_1_m1_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_imports_test_a_1_m1_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_imports_test_a_1_m1_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_a_1_m1_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_a_1_m1_proto_goTypes[1:][:2]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_a_1_m1_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_a_1_m1_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_a_1/m1.proto", xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped)
-	proto.RegisterEnum("test.a.E1", E1_name, E1_value)
-	proto.RegisterType((*M1)(nil), "test.a.M1")
-	proto.RegisterType((*M1_1)(nil), "test.a.M1_1")
 	xxx_File_imports_test_a_1_m1_proto_goTypes = nil
 	xxx_File_imports_test_a_1_m1_proto_goTypes = nil
 	xxx_File_imports_test_a_1_m1_proto_depIdxs = nil
 	xxx_File_imports_test_a_1_m1_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go

@@ -4,10 +4,9 @@
 package test_a_1
 package test_a_1
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type M2 struct {
 type M2 struct {
@@ -20,7 +19,7 @@ func (m *M2) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_a_1_m2_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_a_1_m2_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M2) Reset()         { *m = M2{} }
 func (m *M2) Reset()         { *m = M2{} }
-func (m *M2) String() string { return proto.CompactTextString(m) }
+func (m *M2) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M2) ProtoMessage()    {}
 func (*M2) ProtoMessage()    {}
 
 
 // Deprecated: Use M2.ProtoReflect.Type instead.
 // Deprecated: Use M2.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*M2) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_a_1_m2_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_a_1_m2_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *M2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M2.Unmarshal(m, b)
-}
-func (m *M2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M2.Marshal(b, m, deterministic)
-}
-func (m *M2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M2.Merge(m, src)
-}
-func (m *M2) XXX_Size() int {
-	return xxx_messageInfo_M2.Size(m)
-}
-func (m *M2) XXX_DiscardUnknown() {
-	xxx_messageInfo_M2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M2 proto.InternalMessageInfo
-
 var xxx_File_imports_test_a_1_m2_proto_rawdesc = []byte{
 var xxx_File_imports_test_a_1_m2_proto_rawdesc = []byte{
 	// 126 bytes of the wire-encoded FileDescriptorProto
 	// 126 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
@@ -75,20 +56,14 @@ func xxx_File_imports_test_a_1_m2_proto_init() {
 	if File_imports_test_a_1_m2_proto != nil {
 	if File_imports_test_a_1_m2_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_test_a_1_m2_proto = protoimpl.FileBuilder{
 	File_imports_test_a_1_m2_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_a_1_m2_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_a_1_m2_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_a_1_m2_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_a_1_m2_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_a_1_m2_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_a_1_m2_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_a_1_m2_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_a_1_m2_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_a_1_m2_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_a_1_m2_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_a_1/m2.proto", xxx_File_imports_test_a_1_m2_proto_rawdesc_gzipped)
-	proto.RegisterType((*M2)(nil), "test.a.M2")
 	xxx_File_imports_test_a_1_m2_proto_goTypes = nil
 	xxx_File_imports_test_a_1_m2_proto_goTypes = nil
 	xxx_File_imports_test_a_1_m2_proto_depIdxs = nil
 	xxx_File_imports_test_a_1_m2_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go

@@ -4,10 +4,9 @@
 package test_a_2
 package test_a_2
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type M3 struct {
 type M3 struct {
@@ -20,7 +19,7 @@ func (m *M3) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_a_2_m3_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_a_2_m3_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M3) Reset()         { *m = M3{} }
 func (m *M3) Reset()         { *m = M3{} }
-func (m *M3) String() string { return proto.CompactTextString(m) }
+func (m *M3) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M3) ProtoMessage()    {}
 func (*M3) ProtoMessage()    {}
 
 
 // Deprecated: Use M3.ProtoReflect.Type instead.
 // Deprecated: Use M3.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*M3) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_a_2_m3_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_a_2_m3_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *M3) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M3.Unmarshal(m, b)
-}
-func (m *M3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M3.Marshal(b, m, deterministic)
-}
-func (m *M3) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M3.Merge(m, src)
-}
-func (m *M3) XXX_Size() int {
-	return xxx_messageInfo_M3.Size(m)
-}
-func (m *M3) XXX_DiscardUnknown() {
-	xxx_messageInfo_M3.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M3 proto.InternalMessageInfo
-
 var xxx_File_imports_test_a_2_m3_proto_rawdesc = []byte{
 var xxx_File_imports_test_a_2_m3_proto_rawdesc = []byte{
 	// 126 bytes of the wire-encoded FileDescriptorProto
 	// 126 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
@@ -75,20 +56,14 @@ func xxx_File_imports_test_a_2_m3_proto_init() {
 	if File_imports_test_a_2_m3_proto != nil {
 	if File_imports_test_a_2_m3_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_test_a_2_m3_proto = protoimpl.FileBuilder{
 	File_imports_test_a_2_m3_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_a_2_m3_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_a_2_m3_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_a_2_m3_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_a_2_m3_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_a_2_m3_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_a_2_m3_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_a_2_m3_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_a_2_m3_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_a_2_m3_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_a_2_m3_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_a_2/m3.proto", xxx_File_imports_test_a_2_m3_proto_rawdesc_gzipped)
-	proto.RegisterType((*M3)(nil), "test.a.M3")
 	xxx_File_imports_test_a_2_m3_proto_goTypes = nil
 	xxx_File_imports_test_a_2_m3_proto_goTypes = nil
 	xxx_File_imports_test_a_2_m3_proto_depIdxs = nil
 	xxx_File_imports_test_a_2_m3_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go

@@ -4,10 +4,9 @@
 package test_a_2
 package test_a_2
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type M4 struct {
 type M4 struct {
@@ -20,7 +19,7 @@ func (m *M4) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_a_2_m4_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_a_2_m4_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M4) Reset()         { *m = M4{} }
 func (m *M4) Reset()         { *m = M4{} }
-func (m *M4) String() string { return proto.CompactTextString(m) }
+func (m *M4) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M4) ProtoMessage()    {}
 func (*M4) ProtoMessage()    {}
 
 
 // Deprecated: Use M4.ProtoReflect.Type instead.
 // Deprecated: Use M4.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*M4) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_a_2_m4_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_a_2_m4_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *M4) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M4.Unmarshal(m, b)
-}
-func (m *M4) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M4.Marshal(b, m, deterministic)
-}
-func (m *M4) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M4.Merge(m, src)
-}
-func (m *M4) XXX_Size() int {
-	return xxx_messageInfo_M4.Size(m)
-}
-func (m *M4) XXX_DiscardUnknown() {
-	xxx_messageInfo_M4.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M4 proto.InternalMessageInfo
-
 var xxx_File_imports_test_a_2_m4_proto_rawdesc = []byte{
 var xxx_File_imports_test_a_2_m4_proto_rawdesc = []byte{
 	// 126 bytes of the wire-encoded FileDescriptorProto
 	// 126 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
@@ -75,20 +56,14 @@ func xxx_File_imports_test_a_2_m4_proto_init() {
 	if File_imports_test_a_2_m4_proto != nil {
 	if File_imports_test_a_2_m4_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_test_a_2_m4_proto = protoimpl.FileBuilder{
 	File_imports_test_a_2_m4_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_a_2_m4_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_a_2_m4_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_a_2_m4_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_a_2_m4_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_a_2_m4_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_a_2_m4_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_a_2_m4_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_a_2_m4_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_a_2_m4_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_a_2_m4_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_a_2/m4.proto", xxx_File_imports_test_a_2_m4_proto_rawdesc_gzipped)
-	proto.RegisterType((*M4)(nil), "test.a.M4")
 	xxx_File_imports_test_a_2_m4_proto_goTypes = nil
 	xxx_File_imports_test_a_2_m4_proto_goTypes = nil
 	xxx_File_imports_test_a_2_m4_proto_depIdxs = nil
 	xxx_File_imports_test_a_2_m4_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go

@@ -4,10 +4,9 @@
 package beta
 package beta
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type M1 struct {
 type M1 struct {
@@ -20,7 +19,7 @@ func (m *M1) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_b_1_m1_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_b_1_m1_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M1) Reset()         { *m = M1{} }
 func (m *M1) Reset()         { *m = M1{} }
-func (m *M1) String() string { return proto.CompactTextString(m) }
+func (m *M1) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M1) ProtoMessage()    {}
 func (*M1) ProtoMessage()    {}
 
 
 // Deprecated: Use M1.ProtoReflect.Type instead.
 // Deprecated: Use M1.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*M1) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_b_1_m1_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_b_1_m1_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *M1) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M1.Unmarshal(m, b)
-}
-func (m *M1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M1.Marshal(b, m, deterministic)
-}
-func (m *M1) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M1.Merge(m, src)
-}
-func (m *M1) XXX_Size() int {
-	return xxx_messageInfo_M1.Size(m)
-}
-func (m *M1) XXX_DiscardUnknown() {
-	xxx_messageInfo_M1.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M1 proto.InternalMessageInfo
-
 var xxx_File_imports_test_b_1_m1_proto_rawdesc = []byte{
 var xxx_File_imports_test_b_1_m1_proto_rawdesc = []byte{
 	// 137 bytes of the wire-encoded FileDescriptorProto
 	// 137 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62,
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62,
@@ -76,20 +57,14 @@ func xxx_File_imports_test_b_1_m1_proto_init() {
 	if File_imports_test_b_1_m1_proto != nil {
 	if File_imports_test_b_1_m1_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_test_b_1_m1_proto = protoimpl.FileBuilder{
 	File_imports_test_b_1_m1_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_b_1_m1_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_b_1_m1_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_b_1_m1_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_b_1_m1_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_b_1_m1_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_b_1_m1_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_b_1_m1_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_b_1_m1_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_b_1_m1_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_b_1_m1_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_b_1/m1.proto", xxx_File_imports_test_b_1_m1_proto_rawdesc_gzipped)
-	proto.RegisterType((*M1)(nil), "test.b.part1.M1")
 	xxx_File_imports_test_b_1_m1_proto_goTypes = nil
 	xxx_File_imports_test_b_1_m1_proto_goTypes = nil
 	xxx_File_imports_test_b_1_m1_proto_depIdxs = nil
 	xxx_File_imports_test_b_1_m1_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go

@@ -4,10 +4,9 @@
 package beta
 package beta
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type M2 struct {
 type M2 struct {
@@ -20,7 +19,7 @@ func (m *M2) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_b_1_m2_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_b_1_m2_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *M2) Reset()         { *m = M2{} }
 func (m *M2) Reset()         { *m = M2{} }
-func (m *M2) String() string { return proto.CompactTextString(m) }
+func (m *M2) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*M2) ProtoMessage()    {}
 func (*M2) ProtoMessage()    {}
 
 
 // Deprecated: Use M2.ProtoReflect.Type instead.
 // Deprecated: Use M2.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*M2) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_b_1_m2_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_b_1_m2_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *M2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_M2.Unmarshal(m, b)
-}
-func (m *M2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_M2.Marshal(b, m, deterministic)
-}
-func (m *M2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_M2.Merge(m, src)
-}
-func (m *M2) XXX_Size() int {
-	return xxx_messageInfo_M2.Size(m)
-}
-func (m *M2) XXX_DiscardUnknown() {
-	xxx_messageInfo_M2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_M2 proto.InternalMessageInfo
-
 var xxx_File_imports_test_b_1_m2_proto_rawdesc = []byte{
 var xxx_File_imports_test_b_1_m2_proto_rawdesc = []byte{
 	// 137 bytes of the wire-encoded FileDescriptorProto
 	// 137 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62,
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62,
@@ -76,20 +57,14 @@ func xxx_File_imports_test_b_1_m2_proto_init() {
 	if File_imports_test_b_1_m2_proto != nil {
 	if File_imports_test_b_1_m2_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_test_b_1_m2_proto = protoimpl.FileBuilder{
 	File_imports_test_b_1_m2_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_b_1_m2_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_b_1_m2_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_b_1_m2_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_b_1_m2_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_b_1_m2_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_b_1_m2_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_b_1_m2_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_b_1_m2_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_b_1_m2_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_b_1_m2_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_b_1/m2.proto", xxx_File_imports_test_b_1_m2_proto_rawdesc_gzipped)
-	proto.RegisterType((*M2)(nil), "test.b.part2.M2")
 	xxx_File_imports_test_b_1_m2_proto_goTypes = nil
 	xxx_File_imports_test_b_1_m2_proto_goTypes = nil
 	xxx_File_imports_test_b_1_m2_proto_depIdxs = nil
 	xxx_File_imports_test_b_1_m2_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go

@@ -4,11 +4,10 @@
 package imports
 package imports
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	test_a_1 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_a_1"
 	test_a_1 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_a_1"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type A1M1 struct {
 type A1M1 struct {
@@ -22,7 +21,7 @@ func (m *A1M1) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_import_a1m1_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_import_a1m1_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *A1M1) Reset()         { *m = A1M1{} }
 func (m *A1M1) Reset()         { *m = A1M1{} }
-func (m *A1M1) String() string { return proto.CompactTextString(m) }
+func (m *A1M1) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*A1M1) ProtoMessage()    {}
 func (*A1M1) ProtoMessage()    {}
 
 
 // Deprecated: Use A1M1.ProtoReflect.Type instead.
 // Deprecated: Use A1M1.ProtoReflect.Type instead.
@@ -30,24 +29,6 @@ func (*A1M1) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_import_a1m1_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_import_a1m1_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *A1M1) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_A1M1.Unmarshal(m, b)
-}
-func (m *A1M1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_A1M1.Marshal(b, m, deterministic)
-}
-func (m *A1M1) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_A1M1.Merge(m, src)
-}
-func (m *A1M1) XXX_Size() int {
-	return xxx_messageInfo_A1M1.Size(m)
-}
-func (m *A1M1) XXX_DiscardUnknown() {
-	xxx_messageInfo_A1M1.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_A1M1 proto.InternalMessageInfo
-
 func (m *A1M1) GetF() *test_a_1.M1 {
 func (m *A1M1) GetF() *test_a_1.M1 {
 	if m != nil {
 	if m != nil {
 		return m.F
 		return m.F
@@ -90,20 +71,14 @@ func xxx_File_imports_test_import_a1m1_proto_init() {
 	if File_imports_test_import_a1m1_proto != nil {
 	if File_imports_test_import_a1m1_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_test_import_a1m1_proto = protoimpl.FileBuilder{
 	File_imports_test_import_a1m1_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_import_a1m1_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_import_a1m1_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_import_a1m1_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_import_a1m1_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_import_a1m1_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_import_a1m1_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_import_a1m1_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_import_a1m1_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_import_a1m1_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_import_a1m1_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_import_a1m1.proto", xxx_File_imports_test_import_a1m1_proto_rawdesc_gzipped)
-	proto.RegisterType((*A1M1)(nil), "test.A1M1")
 	xxx_File_imports_test_import_a1m1_proto_goTypes = nil
 	xxx_File_imports_test_import_a1m1_proto_goTypes = nil
 	xxx_File_imports_test_import_a1m1_proto_depIdxs = nil
 	xxx_File_imports_test_import_a1m1_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go

@@ -4,11 +4,10 @@
 package imports
 package imports
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	test_a_1 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_a_1"
 	test_a_1 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_a_1"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type A1M2 struct {
 type A1M2 struct {
@@ -22,7 +21,7 @@ func (m *A1M2) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_import_a1m2_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_import_a1m2_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *A1M2) Reset()         { *m = A1M2{} }
 func (m *A1M2) Reset()         { *m = A1M2{} }
-func (m *A1M2) String() string { return proto.CompactTextString(m) }
+func (m *A1M2) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*A1M2) ProtoMessage()    {}
 func (*A1M2) ProtoMessage()    {}
 
 
 // Deprecated: Use A1M2.ProtoReflect.Type instead.
 // Deprecated: Use A1M2.ProtoReflect.Type instead.
@@ -30,24 +29,6 @@ func (*A1M2) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_import_a1m2_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_import_a1m2_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *A1M2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_A1M2.Unmarshal(m, b)
-}
-func (m *A1M2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_A1M2.Marshal(b, m, deterministic)
-}
-func (m *A1M2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_A1M2.Merge(m, src)
-}
-func (m *A1M2) XXX_Size() int {
-	return xxx_messageInfo_A1M2.Size(m)
-}
-func (m *A1M2) XXX_DiscardUnknown() {
-	xxx_messageInfo_A1M2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_A1M2 proto.InternalMessageInfo
-
 func (m *A1M2) GetF() *test_a_1.M2 {
 func (m *A1M2) GetF() *test_a_1.M2 {
 	if m != nil {
 	if m != nil {
 		return m.F
 		return m.F
@@ -90,20 +71,14 @@ func xxx_File_imports_test_import_a1m2_proto_init() {
 	if File_imports_test_import_a1m2_proto != nil {
 	if File_imports_test_import_a1m2_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_test_import_a1m2_proto = protoimpl.FileBuilder{
 	File_imports_test_import_a1m2_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_import_a1m2_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_import_a1m2_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_import_a1m2_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_import_a1m2_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_import_a1m2_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_import_a1m2_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_import_a1m2_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_import_a1m2_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_import_a1m2_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_import_a1m2_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_import_a1m2.proto", xxx_File_imports_test_import_a1m2_proto_rawdesc_gzipped)
-	proto.RegisterType((*A1M2)(nil), "test.A1M2")
 	xxx_File_imports_test_import_a1m2_proto_goTypes = nil
 	xxx_File_imports_test_import_a1m2_proto_goTypes = nil
 	xxx_File_imports_test_import_a1m2_proto_depIdxs = nil
 	xxx_File_imports_test_import_a1m2_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go

@@ -4,14 +4,13 @@
 package imports
 package imports
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	fmt "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/fmt"
 	fmt "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/fmt"
 	test_a_1 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_a_1"
 	test_a_1 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_a_1"
 	_ "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_a_2"
 	_ "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_a_2"
 	test_b_1 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_b_1"
 	test_b_1 "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/imports/test_b_1"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type All struct {
 type All struct {
@@ -29,7 +28,7 @@ func (m *All) ProtoReflect() protoreflect.Message {
 	return xxx_File_imports_test_import_all_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_imports_test_import_all_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *All) Reset()         { *m = All{} }
 func (m *All) Reset()         { *m = All{} }
-func (m *All) String() string { return proto.CompactTextString(m) }
+func (m *All) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*All) ProtoMessage()    {}
 func (*All) ProtoMessage()    {}
 
 
 // Deprecated: Use All.ProtoReflect.Type instead.
 // Deprecated: Use All.ProtoReflect.Type instead.
@@ -37,24 +36,6 @@ func (*All) Descriptor() ([]byte, []int) {
 	return xxx_File_imports_test_import_all_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_imports_test_import_all_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *All) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_All.Unmarshal(m, b)
-}
-func (m *All) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_All.Marshal(b, m, deterministic)
-}
-func (m *All) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_All.Merge(m, src)
-}
-func (m *All) XXX_Size() int {
-	return xxx_messageInfo_All.Size(m)
-}
-func (m *All) XXX_DiscardUnknown() {
-	xxx_messageInfo_All.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_All proto.InternalMessageInfo
-
 func (m *All) GetAm1() *test_a_1.M1 {
 func (m *All) GetAm1() *test_a_1.M1 {
 	if m != nil {
 	if m != nil {
 		return m.Am1
 		return m.Am1
@@ -151,20 +132,14 @@ func xxx_File_imports_test_import_all_proto_init() {
 	if File_imports_test_import_all_proto != nil {
 	if File_imports_test_import_all_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_imports_test_import_all_proto = protoimpl.FileBuilder{
 	File_imports_test_import_all_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_imports_test_import_all_proto_rawdesc,
 		RawDescriptor:      xxx_File_imports_test_import_all_proto_rawdesc,
 		GoTypes:            xxx_File_imports_test_import_all_proto_goTypes,
 		GoTypes:            xxx_File_imports_test_import_all_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_import_all_proto_depIdxs,
 		DependencyIndexes:  xxx_File_imports_test_import_all_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_imports_test_import_all_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_imports_test_import_all_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_imports_test_import_all_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_imports_test_import_all_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("imports/test_import_all.proto", xxx_File_imports_test_import_all_proto_rawdesc_gzipped)
-	proto.RegisterType((*All)(nil), "test.All")
 	xxx_File_imports_test_import_all_proto_goTypes = nil
 	xxx_File_imports_test_import_all_proto_goTypes = nil
 	xxx_File_imports_test_import_all_proto_depIdxs = nil
 	xxx_File_imports_test_import_all_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go

@@ -4,10 +4,9 @@
 package oneoftest
 package oneoftest
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Foo struct {
 type Foo struct {
@@ -23,7 +22,7 @@ func (m *Foo) ProtoReflect() protoreflect.Message {
 	return xxx_File_issue780_oneof_conflict_test_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_issue780_oneof_conflict_test_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Foo) Reset()         { *m = Foo{} }
 func (m *Foo) Reset()         { *m = Foo{} }
-func (m *Foo) String() string { return proto.CompactTextString(m) }
+func (m *Foo) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Foo) ProtoMessage()    {}
 func (*Foo) ProtoMessage()    {}
 
 
 // Deprecated: Use Foo.ProtoReflect.Type instead.
 // Deprecated: Use Foo.ProtoReflect.Type instead.
@@ -31,24 +30,6 @@ func (*Foo) Descriptor() ([]byte, []int) {
 	return xxx_File_issue780_oneof_conflict_test_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_issue780_oneof_conflict_test_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Foo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Foo.Unmarshal(m, b)
-}
-func (m *Foo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Foo.Marshal(b, m, deterministic)
-}
-func (m *Foo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Foo.Merge(m, src)
-}
-func (m *Foo) XXX_Size() int {
-	return xxx_messageInfo_Foo.Size(m)
-}
-func (m *Foo) XXX_DiscardUnknown() {
-	xxx_messageInfo_Foo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Foo proto.InternalMessageInfo
-
 type isFoo_Bar interface {
 type isFoo_Bar interface {
 	isFoo_Bar()
 	isFoo_Bar()
 }
 }
@@ -107,20 +88,14 @@ func xxx_File_issue780_oneof_conflict_test_proto_init() {
 	if File_issue780_oneof_conflict_test_proto != nil {
 	if File_issue780_oneof_conflict_test_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_issue780_oneof_conflict_test_proto = protoimpl.FileBuilder{
 	File_issue780_oneof_conflict_test_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_issue780_oneof_conflict_test_proto_rawdesc,
 		RawDescriptor:      xxx_File_issue780_oneof_conflict_test_proto_rawdesc,
 		GoTypes:            xxx_File_issue780_oneof_conflict_test_proto_goTypes,
 		GoTypes:            xxx_File_issue780_oneof_conflict_test_proto_goTypes,
 		DependencyIndexes:  xxx_File_issue780_oneof_conflict_test_proto_depIdxs,
 		DependencyIndexes:  xxx_File_issue780_oneof_conflict_test_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_issue780_oneof_conflict_test_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_issue780_oneof_conflict_test_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_issue780_oneof_conflict_test_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_issue780_oneof_conflict_test_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("issue780_oneof_conflict/test.proto", xxx_File_issue780_oneof_conflict_test_proto_rawdesc_gzipped)
-	proto.RegisterType((*Foo)(nil), "oneoftest.Foo")
 	xxx_File_issue780_oneof_conflict_test_proto_goTypes = nil
 	xxx_File_issue780_oneof_conflict_test_proto_goTypes = nil
 	xxx_File_issue780_oneof_conflict_test_proto_depIdxs = nil
 	xxx_File_issue780_oneof_conflict_test_proto_depIdxs = nil
 }
 }

+ 5 - 31
cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go

@@ -4,10 +4,9 @@
 package nopackage
 package nopackage
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Enum int32
 type Enum int32
@@ -68,7 +67,7 @@ func (m *Message) ProtoReflect() protoreflect.Message {
 	return xxx_File_nopackage_nopackage_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_nopackage_nopackage_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Message) Reset()         { *m = Message{} }
 func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
+func (m *Message) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message) ProtoMessage()    {}
 func (*Message) ProtoMessage()    {}
 
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 // Deprecated: Use Message.ProtoReflect.Type instead.
@@ -76,24 +75,6 @@ func (*Message) Descriptor() ([]byte, []int) {
 	return xxx_File_nopackage_nopackage_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_nopackage_nopackage_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
 const Default_Message_EnumField Enum = Enum_ZERO
 const Default_Message_EnumField Enum = Enum_ZERO
 
 
 func (m *Message) GetStringField() string {
 func (m *Message) GetStringField() string {
@@ -144,22 +125,15 @@ func xxx_File_nopackage_nopackage_proto_init() {
 	if File_nopackage_nopackage_proto != nil {
 	if File_nopackage_nopackage_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_nopackage_nopackage_proto = protoimpl.FileBuilder{
 	File_nopackage_nopackage_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_nopackage_nopackage_proto_rawdesc,
 		RawDescriptor:      xxx_File_nopackage_nopackage_proto_rawdesc,
 		GoTypes:            xxx_File_nopackage_nopackage_proto_goTypes,
 		GoTypes:            xxx_File_nopackage_nopackage_proto_goTypes,
 		DependencyIndexes:  xxx_File_nopackage_nopackage_proto_depIdxs,
 		DependencyIndexes:  xxx_File_nopackage_nopackage_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_nopackage_nopackage_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_nopackage_nopackage_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_nopackage_nopackage_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_nopackage_nopackage_proto_goTypes[1:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_nopackage_nopackage_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_nopackage_nopackage_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("nopackage/nopackage.proto", xxx_File_nopackage_nopackage_proto_rawdesc_gzipped)
-	proto.RegisterEnum("Enum", Enum_name, Enum_value)
-	proto.RegisterType((*Message)(nil), "Message")
 	xxx_File_nopackage_nopackage_proto_goTypes = nil
 	xxx_File_nopackage_nopackage_proto_goTypes = nil
 	xxx_File_nopackage_nopackage_proto_depIdxs = nil
 	xxx_File_nopackage_nopackage_proto_depIdxs = nil
 }
 }

+ 6 - 56
cmd/protoc-gen-go/testdata/proto2/enum.pb.go

@@ -4,10 +4,9 @@
 package proto2
 package proto2
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // EnumType1 comment.
 // EnumType1 comment.
@@ -311,7 +310,7 @@ func (m *EnumContainerMessage1) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_enum_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_proto2_enum_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *EnumContainerMessage1) Reset()         { *m = EnumContainerMessage1{} }
 func (m *EnumContainerMessage1) Reset()         { *m = EnumContainerMessage1{} }
-func (m *EnumContainerMessage1) String() string { return proto.CompactTextString(m) }
+func (m *EnumContainerMessage1) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*EnumContainerMessage1) ProtoMessage()    {}
 func (*EnumContainerMessage1) ProtoMessage()    {}
 
 
 // Deprecated: Use EnumContainerMessage1.ProtoReflect.Type instead.
 // Deprecated: Use EnumContainerMessage1.ProtoReflect.Type instead.
@@ -319,24 +318,6 @@ func (*EnumContainerMessage1) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *EnumContainerMessage1) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EnumContainerMessage1.Unmarshal(m, b)
-}
-func (m *EnumContainerMessage1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EnumContainerMessage1.Marshal(b, m, deterministic)
-}
-func (m *EnumContainerMessage1) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EnumContainerMessage1.Merge(m, src)
-}
-func (m *EnumContainerMessage1) XXX_Size() int {
-	return xxx_messageInfo_EnumContainerMessage1.Size(m)
-}
-func (m *EnumContainerMessage1) XXX_DiscardUnknown() {
-	xxx_messageInfo_EnumContainerMessage1.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EnumContainerMessage1 proto.InternalMessageInfo
-
 const Default_EnumContainerMessage1_DefaultDuplicate1 EnumType2 = EnumType2_duplicate1
 const Default_EnumContainerMessage1_DefaultDuplicate1 EnumType2 = EnumType2_duplicate1
 const Default_EnumContainerMessage1_DefaultDuplicate2 EnumType2 = EnumType2_duplicate2
 const Default_EnumContainerMessage1_DefaultDuplicate2 EnumType2 = EnumType2_duplicate2
 
 
@@ -367,7 +348,7 @@ func (m *EnumContainerMessage1_EnumContainerMessage2) Reset() {
 	*m = EnumContainerMessage1_EnumContainerMessage2{}
 	*m = EnumContainerMessage1_EnumContainerMessage2{}
 }
 }
 func (m *EnumContainerMessage1_EnumContainerMessage2) String() string {
 func (m *EnumContainerMessage1_EnumContainerMessage2) String() string {
-	return proto.CompactTextString(m)
+	return protoimpl.X.MessageStringOf(m)
 }
 }
 func (*EnumContainerMessage1_EnumContainerMessage2) ProtoMessage() {}
 func (*EnumContainerMessage1_EnumContainerMessage2) ProtoMessage() {}
 
 
@@ -376,24 +357,6 @@ func (*EnumContainerMessage1_EnumContainerMessage2) Descriptor() ([]byte, []int)
 	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0, 0}
 	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0, 0}
 }
 }
 
 
-func (m *EnumContainerMessage1_EnumContainerMessage2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EnumContainerMessage1_EnumContainerMessage2.Unmarshal(m, b)
-}
-func (m *EnumContainerMessage1_EnumContainerMessage2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EnumContainerMessage1_EnumContainerMessage2.Marshal(b, m, deterministic)
-}
-func (m *EnumContainerMessage1_EnumContainerMessage2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EnumContainerMessage1_EnumContainerMessage2.Merge(m, src)
-}
-func (m *EnumContainerMessage1_EnumContainerMessage2) XXX_Size() int {
-	return xxx_messageInfo_EnumContainerMessage1_EnumContainerMessage2.Size(m)
-}
-func (m *EnumContainerMessage1_EnumContainerMessage2) XXX_DiscardUnknown() {
-	xxx_messageInfo_EnumContainerMessage1_EnumContainerMessage2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EnumContainerMessage1_EnumContainerMessage2 proto.InternalMessageInfo
-
 var xxx_File_proto2_enum_proto_rawdesc = []byte{
 var xxx_File_proto2_enum_proto_rawdesc = []byte{
 	// 624 bytes of the wire-encoded FileDescriptorProto
 	// 624 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x2e, 0x70, 0x72,
 	0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x2e, 0x70, 0x72,
@@ -465,28 +428,15 @@ func xxx_File_proto2_enum_proto_init() {
 	if File_proto2_enum_proto != nil {
 	if File_proto2_enum_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 2)
 	File_proto2_enum_proto = protoimpl.FileBuilder{
 	File_proto2_enum_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_proto2_enum_proto_rawdesc,
 		RawDescriptor:      xxx_File_proto2_enum_proto_rawdesc,
 		GoTypes:            xxx_File_proto2_enum_proto_goTypes,
 		GoTypes:            xxx_File_proto2_enum_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto2_enum_proto_depIdxs,
 		DependencyIndexes:  xxx_File_proto2_enum_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_proto2_enum_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_proto2_enum_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_proto2_enum_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_proto2_enum_proto_goTypes[6:][:2]
-	for i, mt := range messageTypes {
-		xxx_File_proto2_enum_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_proto2_enum_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("proto2/enum.proto", xxx_File_proto2_enum_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.proto2.EnumType1", EnumType1_name, EnumType1_value)
-	proto.RegisterEnum("goproto.protoc.proto2.EnumType2", EnumType2_name, EnumType2_value)
-	proto.RegisterEnum("goproto.protoc.proto2.EnumContainerMessage1_NestedEnumType1A", EnumContainerMessage1_NestedEnumType1A_name, EnumContainerMessage1_NestedEnumType1A_value)
-	proto.RegisterEnum("goproto.protoc.proto2.EnumContainerMessage1_NestedEnumType1B", EnumContainerMessage1_NestedEnumType1B_name, EnumContainerMessage1_NestedEnumType1B_value)
-	proto.RegisterEnum("goproto.protoc.proto2.EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A", EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A_name, EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A_value)
-	proto.RegisterEnum("goproto.protoc.proto2.EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B", EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B_name, EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B_value)
-	proto.RegisterType((*EnumContainerMessage1)(nil), "goproto.protoc.proto2.EnumContainerMessage1")
-	proto.RegisterType((*EnumContainerMessage1_EnumContainerMessage2)(nil), "goproto.protoc.proto2.EnumContainerMessage1.EnumContainerMessage2")
 	xxx_File_proto2_enum_proto_goTypes = nil
 	xxx_File_proto2_enum_proto_goTypes = nil
 	xxx_File_proto2_enum_proto_depIdxs = nil
 	xxx_File_proto2_enum_proto_depIdxs = nil
 }
 }

+ 10 - 134
cmd/protoc-gen-go/testdata/proto2/fields.pb.go

@@ -4,11 +4,10 @@
 package proto2
 package proto2
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	math "math"
 	math "math"
-	reflect "reflect"
 )
 )
 
 
 type FieldTestMessage_Enum int32
 type FieldTestMessage_Enum int32
@@ -176,7 +175,7 @@ func (m *FieldTestMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_fields_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_proto2_fields_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *FieldTestMessage) Reset()         { *m = FieldTestMessage{} }
 func (m *FieldTestMessage) Reset()         { *m = FieldTestMessage{} }
-func (m *FieldTestMessage) String() string { return proto.CompactTextString(m) }
+func (m *FieldTestMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldTestMessage) ProtoMessage()    {}
 func (*FieldTestMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldTestMessage.ProtoReflect.Type instead.
 // Deprecated: Use FieldTestMessage.ProtoReflect.Type instead.
@@ -184,24 +183,6 @@ func (*FieldTestMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *FieldTestMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTestMessage.Unmarshal(m, b)
-}
-func (m *FieldTestMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTestMessage.Marshal(b, m, deterministic)
-}
-func (m *FieldTestMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTestMessage.Merge(m, src)
-}
-func (m *FieldTestMessage) XXX_Size() int {
-	return xxx_messageInfo_FieldTestMessage.Size(m)
-}
-func (m *FieldTestMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTestMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldTestMessage proto.InternalMessageInfo
-
 const Default_FieldTestMessage_DefaultBool bool = true
 const Default_FieldTestMessage_DefaultBool bool = true
 const Default_FieldTestMessage_DefaultEnum FieldTestMessage_Enum = FieldTestMessage_ONE
 const Default_FieldTestMessage_DefaultEnum FieldTestMessage_Enum = FieldTestMessage_ONE
 const Default_FieldTestMessage_DefaultInt32 int32 = 1
 const Default_FieldTestMessage_DefaultInt32 int32 = 1
@@ -1130,7 +1111,7 @@ func (m *FieldTestMessage_OptionalGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_fields_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_proto2_fields_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *FieldTestMessage_OptionalGroup) Reset()         { *m = FieldTestMessage_OptionalGroup{} }
 func (m *FieldTestMessage_OptionalGroup) Reset()         { *m = FieldTestMessage_OptionalGroup{} }
-func (m *FieldTestMessage_OptionalGroup) String() string { return proto.CompactTextString(m) }
+func (m *FieldTestMessage_OptionalGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldTestMessage_OptionalGroup) ProtoMessage()    {}
 func (*FieldTestMessage_OptionalGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldTestMessage_OptionalGroup.ProtoReflect.Type instead.
 // Deprecated: Use FieldTestMessage_OptionalGroup.ProtoReflect.Type instead.
@@ -1138,24 +1119,6 @@ func (*FieldTestMessage_OptionalGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 0}
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 0}
 }
 }
 
 
-func (m *FieldTestMessage_OptionalGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Unmarshal(m, b)
-}
-func (m *FieldTestMessage_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Marshal(b, m, deterministic)
-}
-func (m *FieldTestMessage_OptionalGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTestMessage_OptionalGroup.Merge(m, src)
-}
-func (m *FieldTestMessage_OptionalGroup) XXX_Size() int {
-	return xxx_messageInfo_FieldTestMessage_OptionalGroup.Size(m)
-}
-func (m *FieldTestMessage_OptionalGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTestMessage_OptionalGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldTestMessage_OptionalGroup proto.InternalMessageInfo
-
 func (m *FieldTestMessage_OptionalGroup) GetOptionalGroup() string {
 func (m *FieldTestMessage_OptionalGroup) GetOptionalGroup() string {
 	if m != nil && m.OptionalGroup != nil {
 	if m != nil && m.OptionalGroup != nil {
 		return *m.OptionalGroup
 		return *m.OptionalGroup
@@ -1174,7 +1137,7 @@ func (m *FieldTestMessage_RequiredGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_fields_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_proto2_fields_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *FieldTestMessage_RequiredGroup) Reset()         { *m = FieldTestMessage_RequiredGroup{} }
 func (m *FieldTestMessage_RequiredGroup) Reset()         { *m = FieldTestMessage_RequiredGroup{} }
-func (m *FieldTestMessage_RequiredGroup) String() string { return proto.CompactTextString(m) }
+func (m *FieldTestMessage_RequiredGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldTestMessage_RequiredGroup) ProtoMessage()    {}
 func (*FieldTestMessage_RequiredGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldTestMessage_RequiredGroup.ProtoReflect.Type instead.
 // Deprecated: Use FieldTestMessage_RequiredGroup.ProtoReflect.Type instead.
@@ -1182,24 +1145,6 @@ func (*FieldTestMessage_RequiredGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 1}
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 1}
 }
 }
 
 
-func (m *FieldTestMessage_RequiredGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Unmarshal(m, b)
-}
-func (m *FieldTestMessage_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Marshal(b, m, deterministic)
-}
-func (m *FieldTestMessage_RequiredGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTestMessage_RequiredGroup.Merge(m, src)
-}
-func (m *FieldTestMessage_RequiredGroup) XXX_Size() int {
-	return xxx_messageInfo_FieldTestMessage_RequiredGroup.Size(m)
-}
-func (m *FieldTestMessage_RequiredGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTestMessage_RequiredGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldTestMessage_RequiredGroup proto.InternalMessageInfo
-
 func (m *FieldTestMessage_RequiredGroup) GetRequiredGroup() string {
 func (m *FieldTestMessage_RequiredGroup) GetRequiredGroup() string {
 	if m != nil && m.RequiredGroup != nil {
 	if m != nil && m.RequiredGroup != nil {
 		return *m.RequiredGroup
 		return *m.RequiredGroup
@@ -1218,7 +1163,7 @@ func (m *FieldTestMessage_RepeatedGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_fields_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_proto2_fields_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *FieldTestMessage_RepeatedGroup) Reset()         { *m = FieldTestMessage_RepeatedGroup{} }
 func (m *FieldTestMessage_RepeatedGroup) Reset()         { *m = FieldTestMessage_RepeatedGroup{} }
-func (m *FieldTestMessage_RepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (m *FieldTestMessage_RepeatedGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldTestMessage_RepeatedGroup) ProtoMessage()    {}
 func (*FieldTestMessage_RepeatedGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldTestMessage_RepeatedGroup.ProtoReflect.Type instead.
 // Deprecated: Use FieldTestMessage_RepeatedGroup.ProtoReflect.Type instead.
@@ -1226,24 +1171,6 @@ func (*FieldTestMessage_RepeatedGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 2}
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 2}
 }
 }
 
 
-func (m *FieldTestMessage_RepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Unmarshal(m, b)
-}
-func (m *FieldTestMessage_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Marshal(b, m, deterministic)
-}
-func (m *FieldTestMessage_RepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTestMessage_RepeatedGroup.Merge(m, src)
-}
-func (m *FieldTestMessage_RepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_FieldTestMessage_RepeatedGroup.Size(m)
-}
-func (m *FieldTestMessage_RepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTestMessage_RepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldTestMessage_RepeatedGroup proto.InternalMessageInfo
-
 func (m *FieldTestMessage_RepeatedGroup) GetRepeatedGroup() []string {
 func (m *FieldTestMessage_RepeatedGroup) GetRepeatedGroup() []string {
 	if m != nil {
 	if m != nil {
 		return m.RepeatedGroup
 		return m.RepeatedGroup
@@ -1262,7 +1189,7 @@ func (m *FieldTestMessage_OneofGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_fields_proto_messageTypes[7].MessageOf(m)
 	return xxx_File_proto2_fields_proto_messageTypes[7].MessageOf(m)
 }
 }
 func (m *FieldTestMessage_OneofGroup) Reset()         { *m = FieldTestMessage_OneofGroup{} }
 func (m *FieldTestMessage_OneofGroup) Reset()         { *m = FieldTestMessage_OneofGroup{} }
-func (m *FieldTestMessage_OneofGroup) String() string { return proto.CompactTextString(m) }
+func (m *FieldTestMessage_OneofGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldTestMessage_OneofGroup) ProtoMessage()    {}
 func (*FieldTestMessage_OneofGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldTestMessage_OneofGroup.ProtoReflect.Type instead.
 // Deprecated: Use FieldTestMessage_OneofGroup.ProtoReflect.Type instead.
@@ -1270,24 +1197,6 @@ func (*FieldTestMessage_OneofGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 6}
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 6}
 }
 }
 
 
-func (m *FieldTestMessage_OneofGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTestMessage_OneofGroup.Unmarshal(m, b)
-}
-func (m *FieldTestMessage_OneofGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTestMessage_OneofGroup.Marshal(b, m, deterministic)
-}
-func (m *FieldTestMessage_OneofGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTestMessage_OneofGroup.Merge(m, src)
-}
-func (m *FieldTestMessage_OneofGroup) XXX_Size() int {
-	return xxx_messageInfo_FieldTestMessage_OneofGroup.Size(m)
-}
-func (m *FieldTestMessage_OneofGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTestMessage_OneofGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldTestMessage_OneofGroup proto.InternalMessageInfo
-
 func (m *FieldTestMessage_OneofGroup) GetOneofGroupField() string {
 func (m *FieldTestMessage_OneofGroup) GetOneofGroupField() string {
 	if m != nil && m.OneofGroupField != nil {
 	if m != nil && m.OneofGroupField != nil {
 		return *m.OneofGroupField
 		return *m.OneofGroupField
@@ -1305,7 +1214,7 @@ func (m *FieldTestMessage_Message) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_fields_proto_messageTypes[8].MessageOf(m)
 	return xxx_File_proto2_fields_proto_messageTypes[8].MessageOf(m)
 }
 }
 func (m *FieldTestMessage_Message) Reset()         { *m = FieldTestMessage_Message{} }
 func (m *FieldTestMessage_Message) Reset()         { *m = FieldTestMessage_Message{} }
-func (m *FieldTestMessage_Message) String() string { return proto.CompactTextString(m) }
+func (m *FieldTestMessage_Message) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldTestMessage_Message) ProtoMessage()    {}
 func (*FieldTestMessage_Message) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldTestMessage_Message.ProtoReflect.Type instead.
 // Deprecated: Use FieldTestMessage_Message.ProtoReflect.Type instead.
@@ -1313,24 +1222,6 @@ func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 7}
 	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 7}
 }
 }
 
 
-func (m *FieldTestMessage_Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTestMessage_Message.Unmarshal(m, b)
-}
-func (m *FieldTestMessage_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTestMessage_Message.Marshal(b, m, deterministic)
-}
-func (m *FieldTestMessage_Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTestMessage_Message.Merge(m, src)
-}
-func (m *FieldTestMessage_Message) XXX_Size() int {
-	return xxx_messageInfo_FieldTestMessage_Message.Size(m)
-}
-func (m *FieldTestMessage_Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTestMessage_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldTestMessage_Message proto.InternalMessageInfo
-
 var xxx_File_proto2_fields_proto_rawdesc = []byte{
 var xxx_File_proto2_fields_proto_rawdesc = []byte{
 	// 5913 bytes of the wire-encoded FileDescriptorProto
 	// 5913 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e,
 	0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e,
@@ -1751,30 +1642,15 @@ func xxx_File_proto2_fields_proto_init() {
 	if File_proto2_fields_proto != nil {
 	if File_proto2_fields_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 9)
 	File_proto2_fields_proto = protoimpl.FileBuilder{
 	File_proto2_fields_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_proto2_fields_proto_rawdesc,
 		RawDescriptor:      xxx_File_proto2_fields_proto_rawdesc,
 		GoTypes:            xxx_File_proto2_fields_proto_goTypes,
 		GoTypes:            xxx_File_proto2_fields_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto2_fields_proto_depIdxs,
 		DependencyIndexes:  xxx_File_proto2_fields_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_proto2_fields_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_proto2_fields_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_proto2_fields_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_proto2_fields_proto_goTypes[1:][:9]
-	for i, mt := range messageTypes {
-		xxx_File_proto2_fields_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_proto2_fields_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("proto2/fields.proto", xxx_File_proto2_fields_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.proto2.FieldTestMessage_Enum", FieldTestMessage_Enum_name, FieldTestMessage_Enum_value)
-	proto.RegisterType((*FieldTestMessage)(nil), "goproto.protoc.proto2.FieldTestMessage")
-	proto.RegisterMapType((map[uint64]FieldTestMessage_Enum)(nil), "goproto.protoc.proto2.FieldTestMessage.MapFixed64EnumEntry")
-	proto.RegisterMapType((map[int32]int64)(nil), "goproto.protoc.proto2.FieldTestMessage.MapInt32Int64Entry")
-	proto.RegisterMapType((map[string]*FieldTestMessage_Message)(nil), "goproto.protoc.proto2.FieldTestMessage.MapStringMessageEntry")
-	proto.RegisterType((*FieldTestMessage_OptionalGroup)(nil), "goproto.protoc.proto2.FieldTestMessage.OptionalGroup")
-	proto.RegisterType((*FieldTestMessage_RequiredGroup)(nil), "goproto.protoc.proto2.FieldTestMessage.RequiredGroup")
-	proto.RegisterType((*FieldTestMessage_RepeatedGroup)(nil), "goproto.protoc.proto2.FieldTestMessage.RepeatedGroup")
-	proto.RegisterType((*FieldTestMessage_OneofGroup)(nil), "goproto.protoc.proto2.FieldTestMessage.OneofGroup")
-	proto.RegisterType((*FieldTestMessage_Message)(nil), "goproto.protoc.proto2.FieldTestMessage.Message")
 	xxx_File_proto2_fields_proto_goTypes = nil
 	xxx_File_proto2_fields_proto_goTypes = nil
 	xxx_File_proto2_fields_proto_depIdxs = nil
 	xxx_File_proto2_fields_proto_depIdxs = nil
 }
 }

+ 7 - 70
cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go

@@ -4,10 +4,9 @@
 package proto2
 package proto2
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Layer1 struct {
 type Layer1 struct {
@@ -22,7 +21,7 @@ func (m *Layer1) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_nested_messages_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_proto2_nested_messages_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Layer1) Reset()         { *m = Layer1{} }
 func (m *Layer1) Reset()         { *m = Layer1{} }
-func (m *Layer1) String() string { return proto.CompactTextString(m) }
+func (m *Layer1) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Layer1) ProtoMessage()    {}
 func (*Layer1) ProtoMessage()    {}
 
 
 // Deprecated: Use Layer1.ProtoReflect.Type instead.
 // Deprecated: Use Layer1.ProtoReflect.Type instead.
@@ -30,24 +29,6 @@ func (*Layer1) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Layer1) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Layer1.Unmarshal(m, b)
-}
-func (m *Layer1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Layer1.Marshal(b, m, deterministic)
-}
-func (m *Layer1) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Layer1.Merge(m, src)
-}
-func (m *Layer1) XXX_Size() int {
-	return xxx_messageInfo_Layer1.Size(m)
-}
-func (m *Layer1) XXX_DiscardUnknown() {
-	xxx_messageInfo_Layer1.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Layer1 proto.InternalMessageInfo
-
 func (m *Layer1) GetL2() *Layer1_Layer2 {
 func (m *Layer1) GetL2() *Layer1_Layer2 {
 	if m != nil {
 	if m != nil {
 		return m.L2
 		return m.L2
@@ -73,7 +54,7 @@ func (m *Layer1_Layer2) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_nested_messages_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_proto2_nested_messages_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Layer1_Layer2) Reset()         { *m = Layer1_Layer2{} }
 func (m *Layer1_Layer2) Reset()         { *m = Layer1_Layer2{} }
-func (m *Layer1_Layer2) String() string { return proto.CompactTextString(m) }
+func (m *Layer1_Layer2) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Layer1_Layer2) ProtoMessage()    {}
 func (*Layer1_Layer2) ProtoMessage()    {}
 
 
 // Deprecated: Use Layer1_Layer2.ProtoReflect.Type instead.
 // Deprecated: Use Layer1_Layer2.ProtoReflect.Type instead.
@@ -81,24 +62,6 @@ func (*Layer1_Layer2) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0, 0}
 	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0, 0}
 }
 }
 
 
-func (m *Layer1_Layer2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Layer1_Layer2.Unmarshal(m, b)
-}
-func (m *Layer1_Layer2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Layer1_Layer2.Marshal(b, m, deterministic)
-}
-func (m *Layer1_Layer2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Layer1_Layer2.Merge(m, src)
-}
-func (m *Layer1_Layer2) XXX_Size() int {
-	return xxx_messageInfo_Layer1_Layer2.Size(m)
-}
-func (m *Layer1_Layer2) XXX_DiscardUnknown() {
-	xxx_messageInfo_Layer1_Layer2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Layer1_Layer2 proto.InternalMessageInfo
-
 func (m *Layer1_Layer2) GetL3() *Layer1_Layer2_Layer3 {
 func (m *Layer1_Layer2) GetL3() *Layer1_Layer2_Layer3 {
 	if m != nil {
 	if m != nil {
 		return m.L3
 		return m.L3
@@ -116,7 +79,7 @@ func (m *Layer1_Layer2_Layer3) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_nested_messages_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_proto2_nested_messages_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *Layer1_Layer2_Layer3) Reset()         { *m = Layer1_Layer2_Layer3{} }
 func (m *Layer1_Layer2_Layer3) Reset()         { *m = Layer1_Layer2_Layer3{} }
-func (m *Layer1_Layer2_Layer3) String() string { return proto.CompactTextString(m) }
+func (m *Layer1_Layer2_Layer3) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Layer1_Layer2_Layer3) ProtoMessage()    {}
 func (*Layer1_Layer2_Layer3) ProtoMessage()    {}
 
 
 // Deprecated: Use Layer1_Layer2_Layer3.ProtoReflect.Type instead.
 // Deprecated: Use Layer1_Layer2_Layer3.ProtoReflect.Type instead.
@@ -124,24 +87,6 @@ func (*Layer1_Layer2_Layer3) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0, 0, 0}
 	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0, 0, 0}
 }
 }
 
 
-func (m *Layer1_Layer2_Layer3) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Layer1_Layer2_Layer3.Unmarshal(m, b)
-}
-func (m *Layer1_Layer2_Layer3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Layer1_Layer2_Layer3.Marshal(b, m, deterministic)
-}
-func (m *Layer1_Layer2_Layer3) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Layer1_Layer2_Layer3.Merge(m, src)
-}
-func (m *Layer1_Layer2_Layer3) XXX_Size() int {
-	return xxx_messageInfo_Layer1_Layer2_Layer3.Size(m)
-}
-func (m *Layer1_Layer2_Layer3) XXX_DiscardUnknown() {
-	xxx_messageInfo_Layer1_Layer2_Layer3.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Layer1_Layer2_Layer3 proto.InternalMessageInfo
-
 var xxx_File_proto2_nested_messages_proto_rawdesc = []byte{
 var xxx_File_proto2_nested_messages_proto_rawdesc = []byte{
 	// 327 bytes of the wire-encoded FileDescriptorProto
 	// 327 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
 	0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
@@ -190,22 +135,14 @@ func xxx_File_proto2_nested_messages_proto_init() {
 	if File_proto2_nested_messages_proto != nil {
 	if File_proto2_nested_messages_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 3)
 	File_proto2_nested_messages_proto = protoimpl.FileBuilder{
 	File_proto2_nested_messages_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_proto2_nested_messages_proto_rawdesc,
 		RawDescriptor:      xxx_File_proto2_nested_messages_proto_rawdesc,
 		GoTypes:            xxx_File_proto2_nested_messages_proto_goTypes,
 		GoTypes:            xxx_File_proto2_nested_messages_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto2_nested_messages_proto_depIdxs,
 		DependencyIndexes:  xxx_File_proto2_nested_messages_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_proto2_nested_messages_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_proto2_nested_messages_proto_goTypes[0:][:3]
-	for i, mt := range messageTypes {
-		xxx_File_proto2_nested_messages_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_proto2_nested_messages_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("proto2/nested_messages.proto", xxx_File_proto2_nested_messages_proto_rawdesc_gzipped)
-	proto.RegisterType((*Layer1)(nil), "goproto.protoc.proto2.Layer1")
-	proto.RegisterType((*Layer1_Layer2)(nil), "goproto.protoc.proto2.Layer1.Layer2")
-	proto.RegisterType((*Layer1_Layer2_Layer3)(nil), "goproto.protoc.proto2.Layer1.Layer2.Layer3")
 	xxx_File_proto2_nested_messages_proto_goTypes = nil
 	xxx_File_proto2_nested_messages_proto_goTypes = nil
 	xxx_File_proto2_nested_messages_proto_depIdxs = nil
 	xxx_File_proto2_nested_messages_proto_depIdxs = nil
 }
 }

+ 5 - 30
cmd/protoc-gen-go/testdata/proto2/proto2.pb.go

@@ -4,10 +4,9 @@
 package proto2
 package proto2
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Message struct {
 type Message struct {
@@ -22,7 +21,7 @@ func (m *Message) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto2_proto2_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_proto2_proto2_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Message) Reset()         { *m = Message{} }
 func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
+func (m *Message) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message) ProtoMessage()    {}
 func (*Message) ProtoMessage()    {}
 
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 // Deprecated: Use Message.ProtoReflect.Type instead.
@@ -30,24 +29,6 @@ func (*Message) Descriptor() ([]byte, []int) {
 	return xxx_File_proto2_proto2_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_proto2_proto2_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
 func (m *Message) GetI32() int32 {
 func (m *Message) GetI32() int32 {
 	if m != nil && m.I32 != nil {
 	if m != nil && m.I32 != nil {
 		return *m.I32
 		return *m.I32
@@ -97,20 +78,14 @@ func xxx_File_proto2_proto2_proto_init() {
 	if File_proto2_proto2_proto != nil {
 	if File_proto2_proto2_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_proto2_proto2_proto = protoimpl.FileBuilder{
 	File_proto2_proto2_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_proto2_proto2_proto_rawdesc,
 		RawDescriptor:      xxx_File_proto2_proto2_proto_rawdesc,
 		GoTypes:            xxx_File_proto2_proto2_proto_goTypes,
 		GoTypes:            xxx_File_proto2_proto2_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto2_proto2_proto_depIdxs,
 		DependencyIndexes:  xxx_File_proto2_proto2_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_proto2_proto2_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_proto2_proto2_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_proto2_proto2_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_proto2_proto2_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("proto2/proto2.proto", xxx_File_proto2_proto2_proto_rawdesc_gzipped)
-	proto.RegisterType((*Message)(nil), "goproto.protoc.proto2.Message")
 	xxx_File_proto2_proto2_proto_goTypes = nil
 	xxx_File_proto2_proto2_proto_goTypes = nil
 	xxx_File_proto2_proto2_proto_depIdxs = nil
 	xxx_File_proto2_proto2_proto_depIdxs = nil
 }
 }

+ 3 - 3
cmd/protoc-gen-go/testdata/proto3/enum.pb.go

@@ -4,8 +4,8 @@
 package proto3
 package proto3
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 )
 )
 
 
@@ -83,9 +83,9 @@ func xxx_File_proto3_enum_proto_init() {
 		GoTypes:           xxx_File_proto3_enum_proto_goTypes,
 		GoTypes:           xxx_File_proto3_enum_proto_goTypes,
 		DependencyIndexes: xxx_File_proto3_enum_proto_depIdxs,
 		DependencyIndexes: xxx_File_proto3_enum_proto_depIdxs,
 		EnumOutputTypes:   xxx_File_proto3_enum_proto_enumTypes,
 		EnumOutputTypes:   xxx_File_proto3_enum_proto_enumTypes,
+		FilesRegistry:     protoregistry.GlobalFiles,
+		TypesRegistry:     protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	proto.RegisterFile("proto3/enum.proto", xxx_File_proto3_enum_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.proto3.Enum", Enum_name, Enum_value)
 	xxx_File_proto3_enum_proto_goTypes = nil
 	xxx_File_proto3_enum_proto_goTypes = nil
 	xxx_File_proto3_enum_proto_depIdxs = nil
 	xxx_File_proto3_enum_proto_depIdxs = nil
 }
 }

+ 6 - 54
cmd/protoc-gen-go/testdata/proto3/fields.pb.go

@@ -4,10 +4,9 @@
 package proto3
 package proto3
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type FieldTestMessage_Enum int32
 type FieldTestMessage_Enum int32
@@ -89,7 +88,7 @@ func (m *FieldTestMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto3_fields_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_proto3_fields_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *FieldTestMessage) Reset()         { *m = FieldTestMessage{} }
 func (m *FieldTestMessage) Reset()         { *m = FieldTestMessage{} }
-func (m *FieldTestMessage) String() string { return proto.CompactTextString(m) }
+func (m *FieldTestMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldTestMessage) ProtoMessage()    {}
 func (*FieldTestMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldTestMessage.ProtoReflect.Type instead.
 // Deprecated: Use FieldTestMessage.ProtoReflect.Type instead.
@@ -97,24 +96,6 @@ func (*FieldTestMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_proto3_fields_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_proto3_fields_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *FieldTestMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTestMessage.Unmarshal(m, b)
-}
-func (m *FieldTestMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTestMessage.Marshal(b, m, deterministic)
-}
-func (m *FieldTestMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTestMessage.Merge(m, src)
-}
-func (m *FieldTestMessage) XXX_Size() int {
-	return xxx_messageInfo_FieldTestMessage.Size(m)
-}
-func (m *FieldTestMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTestMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldTestMessage proto.InternalMessageInfo
-
 func (m *FieldTestMessage) GetOptionalBool() string {
 func (m *FieldTestMessage) GetOptionalBool() string {
 	if m != nil {
 	if m != nil {
 		return m.OptionalBool
 		return m.OptionalBool
@@ -384,7 +365,7 @@ func (m *FieldTestMessage_Message) ProtoReflect() protoreflect.Message {
 	return xxx_File_proto3_fields_proto_messageTypes[4].MessageOf(m)
 	return xxx_File_proto3_fields_proto_messageTypes[4].MessageOf(m)
 }
 }
 func (m *FieldTestMessage_Message) Reset()         { *m = FieldTestMessage_Message{} }
 func (m *FieldTestMessage_Message) Reset()         { *m = FieldTestMessage_Message{} }
-func (m *FieldTestMessage_Message) String() string { return proto.CompactTextString(m) }
+func (m *FieldTestMessage_Message) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldTestMessage_Message) ProtoMessage()    {}
 func (*FieldTestMessage_Message) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldTestMessage_Message.ProtoReflect.Type instead.
 // Deprecated: Use FieldTestMessage_Message.ProtoReflect.Type instead.
@@ -392,24 +373,6 @@ func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
 	return xxx_File_proto3_fields_proto_rawdesc_gzipped, []int{0, 3}
 	return xxx_File_proto3_fields_proto_rawdesc_gzipped, []int{0, 3}
 }
 }
 
 
-func (m *FieldTestMessage_Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTestMessage_Message.Unmarshal(m, b)
-}
-func (m *FieldTestMessage_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTestMessage_Message.Marshal(b, m, deterministic)
-}
-func (m *FieldTestMessage_Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTestMessage_Message.Merge(m, src)
-}
-func (m *FieldTestMessage_Message) XXX_Size() int {
-	return xxx_messageInfo_FieldTestMessage_Message.Size(m)
-}
-func (m *FieldTestMessage_Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTestMessage_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldTestMessage_Message proto.InternalMessageInfo
-
 var xxx_File_proto3_fields_proto_rawdesc = []byte{
 var xxx_File_proto3_fields_proto_rawdesc = []byte{
 	// 2378 bytes of the wire-encoded FileDescriptorProto
 	// 2378 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e,
 	0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e,
@@ -596,26 +559,15 @@ func xxx_File_proto3_fields_proto_init() {
 	if File_proto3_fields_proto != nil {
 	if File_proto3_fields_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 5)
 	File_proto3_fields_proto = protoimpl.FileBuilder{
 	File_proto3_fields_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_proto3_fields_proto_rawdesc,
 		RawDescriptor:      xxx_File_proto3_fields_proto_rawdesc,
 		GoTypes:            xxx_File_proto3_fields_proto_goTypes,
 		GoTypes:            xxx_File_proto3_fields_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto3_fields_proto_depIdxs,
 		DependencyIndexes:  xxx_File_proto3_fields_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_proto3_fields_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_proto3_fields_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_proto3_fields_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_proto3_fields_proto_goTypes[1:][:5]
-	for i, mt := range messageTypes {
-		xxx_File_proto3_fields_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_proto3_fields_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("proto3/fields.proto", xxx_File_proto3_fields_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.protoc.proto3.FieldTestMessage_Enum", FieldTestMessage_Enum_name, FieldTestMessage_Enum_value)
-	proto.RegisterType((*FieldTestMessage)(nil), "goproto.protoc.proto3.FieldTestMessage")
-	proto.RegisterMapType((map[uint64]FieldTestMessage_Enum)(nil), "goproto.protoc.proto3.FieldTestMessage.MapFixed64EnumEntry")
-	proto.RegisterMapType((map[int32]int64)(nil), "goproto.protoc.proto3.FieldTestMessage.MapInt32Int64Entry")
-	proto.RegisterMapType((map[string]*FieldTestMessage_Message)(nil), "goproto.protoc.proto3.FieldTestMessage.MapStringMessageEntry")
-	proto.RegisterType((*FieldTestMessage_Message)(nil), "goproto.protoc.proto3.FieldTestMessage.Message")
 	xxx_File_proto3_fields_proto_goTypes = nil
 	xxx_File_proto3_fields_proto_goTypes = nil
 	xxx_File_proto3_fields_proto_depIdxs = nil
 	xxx_File_proto3_fields_proto_depIdxs = nil
 }
 }

+ 23 - 412
encoding/testprotos/pb2/test.pb.go

@@ -4,12 +4,11 @@
 package pb2
 package pb2
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	known "github.com/golang/protobuf/v2/types/known"
 	known "github.com/golang/protobuf/v2/types/known"
-	reflect "reflect"
 )
 )
 
 
 type Enum int32
 type Enum int32
@@ -142,7 +141,7 @@ func (m *Scalars) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Scalars) Reset()         { *m = Scalars{} }
 func (m *Scalars) Reset()         { *m = Scalars{} }
-func (m *Scalars) String() string { return proto.CompactTextString(m) }
+func (m *Scalars) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Scalars) ProtoMessage()    {}
 func (*Scalars) ProtoMessage()    {}
 
 
 // Deprecated: Use Scalars.ProtoReflect.Type instead.
 // Deprecated: Use Scalars.ProtoReflect.Type instead.
@@ -150,24 +149,6 @@ func (*Scalars) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Scalars) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scalars.Unmarshal(m, b)
-}
-func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
-}
-func (m *Scalars) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scalars.Merge(m, src)
-}
-func (m *Scalars) XXX_Size() int {
-	return xxx_messageInfo_Scalars.Size(m)
-}
-func (m *Scalars) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scalars.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Scalars proto.InternalMessageInfo
-
 func (m *Scalars) GetOptBool() bool {
 func (m *Scalars) GetOptBool() bool {
 	if m != nil && m.OptBool != nil {
 	if m != nil && m.OptBool != nil {
 		return *m.OptBool
 		return *m.OptBool
@@ -288,7 +269,7 @@ func (m *Enums) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Enums) Reset()         { *m = Enums{} }
 func (m *Enums) Reset()         { *m = Enums{} }
-func (m *Enums) String() string { return proto.CompactTextString(m) }
+func (m *Enums) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Enums) ProtoMessage()    {}
 func (*Enums) ProtoMessage()    {}
 
 
 // Deprecated: Use Enums.ProtoReflect.Type instead.
 // Deprecated: Use Enums.ProtoReflect.Type instead.
@@ -296,24 +277,6 @@ func (*Enums) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *Enums) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Enums.Unmarshal(m, b)
-}
-func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
-}
-func (m *Enums) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Enums.Merge(m, src)
-}
-func (m *Enums) XXX_Size() int {
-	return xxx_messageInfo_Enums.Size(m)
-}
-func (m *Enums) XXX_DiscardUnknown() {
-	xxx_messageInfo_Enums.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Enums proto.InternalMessageInfo
-
 func (m *Enums) GetOptEnum() Enum {
 func (m *Enums) GetOptEnum() Enum {
 	if m != nil && m.OptEnum != nil {
 	if m != nil && m.OptEnum != nil {
 		return *m.OptEnum
 		return *m.OptEnum
@@ -362,7 +325,7 @@ func (m *Repeats) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *Repeats) Reset()         { *m = Repeats{} }
 func (m *Repeats) Reset()         { *m = Repeats{} }
-func (m *Repeats) String() string { return proto.CompactTextString(m) }
+func (m *Repeats) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Repeats) ProtoMessage()    {}
 func (*Repeats) ProtoMessage()    {}
 
 
 // Deprecated: Use Repeats.ProtoReflect.Type instead.
 // Deprecated: Use Repeats.ProtoReflect.Type instead.
@@ -370,24 +333,6 @@ func (*Repeats) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *Repeats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Repeats.Unmarshal(m, b)
-}
-func (m *Repeats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Repeats.Marshal(b, m, deterministic)
-}
-func (m *Repeats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Repeats.Merge(m, src)
-}
-func (m *Repeats) XXX_Size() int {
-	return xxx_messageInfo_Repeats.Size(m)
-}
-func (m *Repeats) XXX_DiscardUnknown() {
-	xxx_messageInfo_Repeats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Repeats proto.InternalMessageInfo
-
 func (m *Repeats) GetRptBool() []bool {
 func (m *Repeats) GetRptBool() []bool {
 	if m != nil {
 	if m != nil {
 		return m.RptBool
 		return m.RptBool
@@ -464,7 +409,7 @@ func (m *Nested) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *Nested) Reset()         { *m = Nested{} }
 func (m *Nested) Reset()         { *m = Nested{} }
-func (m *Nested) String() string { return proto.CompactTextString(m) }
+func (m *Nested) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Nested) ProtoMessage()    {}
 func (*Nested) ProtoMessage()    {}
 
 
 // Deprecated: Use Nested.ProtoReflect.Type instead.
 // Deprecated: Use Nested.ProtoReflect.Type instead.
@@ -472,24 +417,6 @@ func (*Nested) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{3}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{3}
 }
 }
 
 
-func (m *Nested) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nested.Unmarshal(m, b)
-}
-func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
-}
-func (m *Nested) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nested.Merge(m, src)
-}
-func (m *Nested) XXX_Size() int {
-	return xxx_messageInfo_Nested.Size(m)
-}
-func (m *Nested) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nested.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nested proto.InternalMessageInfo
-
 func (m *Nested) GetOptString() string {
 func (m *Nested) GetOptString() string {
 	if m != nil && m.OptString != nil {
 	if m != nil && m.OptString != nil {
 		return *m.OptString
 		return *m.OptString
@@ -519,7 +446,7 @@ func (m *Nests) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[4].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[4].MessageOf(m)
 }
 }
 func (m *Nests) Reset()         { *m = Nests{} }
 func (m *Nests) Reset()         { *m = Nests{} }
-func (m *Nests) String() string { return proto.CompactTextString(m) }
+func (m *Nests) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Nests) ProtoMessage()    {}
 func (*Nests) ProtoMessage()    {}
 
 
 // Deprecated: Use Nests.ProtoReflect.Type instead.
 // Deprecated: Use Nests.ProtoReflect.Type instead.
@@ -527,24 +454,6 @@ func (*Nests) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4}
 }
 }
 
 
-func (m *Nests) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests.Unmarshal(m, b)
-}
-func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
-}
-func (m *Nests) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests.Merge(m, src)
-}
-func (m *Nests) XXX_Size() int {
-	return xxx_messageInfo_Nests.Size(m)
-}
-func (m *Nests) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests proto.InternalMessageInfo
-
 func (m *Nests) GetOptNested() *Nested {
 func (m *Nests) GetOptNested() *Nested {
 	if m != nil {
 	if m != nil {
 		return m.OptNested
 		return m.OptNested
@@ -590,7 +499,7 @@ func (m *Requireds) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[5].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[5].MessageOf(m)
 }
 }
 func (m *Requireds) Reset()         { *m = Requireds{} }
 func (m *Requireds) Reset()         { *m = Requireds{} }
-func (m *Requireds) String() string { return proto.CompactTextString(m) }
+func (m *Requireds) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Requireds) ProtoMessage()    {}
 func (*Requireds) ProtoMessage()    {}
 
 
 // Deprecated: Use Requireds.ProtoReflect.Type instead.
 // Deprecated: Use Requireds.ProtoReflect.Type instead.
@@ -598,24 +507,6 @@ func (*Requireds) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{5}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{5}
 }
 }
 
 
-func (m *Requireds) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Requireds.Unmarshal(m, b)
-}
-func (m *Requireds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Requireds.Marshal(b, m, deterministic)
-}
-func (m *Requireds) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Requireds.Merge(m, src)
-}
-func (m *Requireds) XXX_Size() int {
-	return xxx_messageInfo_Requireds.Size(m)
-}
-func (m *Requireds) XXX_DiscardUnknown() {
-	xxx_messageInfo_Requireds.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Requireds proto.InternalMessageInfo
-
 func (m *Requireds) GetReqBool() bool {
 func (m *Requireds) GetReqBool() bool {
 	if m != nil && m.ReqBool != nil {
 	if m != nil && m.ReqBool != nil {
 		return *m.ReqBool
 		return *m.ReqBool
@@ -671,7 +562,7 @@ func (m *PartialRequired) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[6].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[6].MessageOf(m)
 }
 }
 func (m *PartialRequired) Reset()         { *m = PartialRequired{} }
 func (m *PartialRequired) Reset()         { *m = PartialRequired{} }
-func (m *PartialRequired) String() string { return proto.CompactTextString(m) }
+func (m *PartialRequired) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*PartialRequired) ProtoMessage()    {}
 func (*PartialRequired) ProtoMessage()    {}
 
 
 // Deprecated: Use PartialRequired.ProtoReflect.Type instead.
 // Deprecated: Use PartialRequired.ProtoReflect.Type instead.
@@ -679,24 +570,6 @@ func (*PartialRequired) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{6}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{6}
 }
 }
 
 
-func (m *PartialRequired) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PartialRequired.Unmarshal(m, b)
-}
-func (m *PartialRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PartialRequired.Marshal(b, m, deterministic)
-}
-func (m *PartialRequired) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PartialRequired.Merge(m, src)
-}
-func (m *PartialRequired) XXX_Size() int {
-	return xxx_messageInfo_PartialRequired.Size(m)
-}
-func (m *PartialRequired) XXX_DiscardUnknown() {
-	xxx_messageInfo_PartialRequired.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PartialRequired proto.InternalMessageInfo
-
 func (m *PartialRequired) GetReqString() string {
 func (m *PartialRequired) GetReqString() string {
 	if m != nil && m.ReqString != nil {
 	if m != nil && m.ReqString != nil {
 		return *m.ReqString
 		return *m.ReqString
@@ -722,7 +595,7 @@ func (m *NestedWithRequired) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[7].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[7].MessageOf(m)
 }
 }
 func (m *NestedWithRequired) Reset()         { *m = NestedWithRequired{} }
 func (m *NestedWithRequired) Reset()         { *m = NestedWithRequired{} }
-func (m *NestedWithRequired) String() string { return proto.CompactTextString(m) }
+func (m *NestedWithRequired) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*NestedWithRequired) ProtoMessage()    {}
 func (*NestedWithRequired) ProtoMessage()    {}
 
 
 // Deprecated: Use NestedWithRequired.ProtoReflect.Type instead.
 // Deprecated: Use NestedWithRequired.ProtoReflect.Type instead.
@@ -730,24 +603,6 @@ func (*NestedWithRequired) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{7}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{7}
 }
 }
 
 
-func (m *NestedWithRequired) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NestedWithRequired.Unmarshal(m, b)
-}
-func (m *NestedWithRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NestedWithRequired.Marshal(b, m, deterministic)
-}
-func (m *NestedWithRequired) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NestedWithRequired.Merge(m, src)
-}
-func (m *NestedWithRequired) XXX_Size() int {
-	return xxx_messageInfo_NestedWithRequired.Size(m)
-}
-func (m *NestedWithRequired) XXX_DiscardUnknown() {
-	xxx_messageInfo_NestedWithRequired.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_NestedWithRequired proto.InternalMessageInfo
-
 func (m *NestedWithRequired) GetReqString() string {
 func (m *NestedWithRequired) GetReqString() string {
 	if m != nil && m.ReqString != nil {
 	if m != nil && m.ReqString != nil {
 		return *m.ReqString
 		return *m.ReqString
@@ -771,7 +626,7 @@ func (m *IndirectRequired) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[8].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[8].MessageOf(m)
 }
 }
 func (m *IndirectRequired) Reset()         { *m = IndirectRequired{} }
 func (m *IndirectRequired) Reset()         { *m = IndirectRequired{} }
-func (m *IndirectRequired) String() string { return proto.CompactTextString(m) }
+func (m *IndirectRequired) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*IndirectRequired) ProtoMessage()    {}
 func (*IndirectRequired) ProtoMessage()    {}
 
 
 // Deprecated: Use IndirectRequired.ProtoReflect.Type instead.
 // Deprecated: Use IndirectRequired.ProtoReflect.Type instead.
@@ -779,24 +634,6 @@ func (*IndirectRequired) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{8}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{8}
 }
 }
 
 
-func (m *IndirectRequired) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndirectRequired.Unmarshal(m, b)
-}
-func (m *IndirectRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndirectRequired.Marshal(b, m, deterministic)
-}
-func (m *IndirectRequired) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndirectRequired.Merge(m, src)
-}
-func (m *IndirectRequired) XXX_Size() int {
-	return xxx_messageInfo_IndirectRequired.Size(m)
-}
-func (m *IndirectRequired) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndirectRequired.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IndirectRequired proto.InternalMessageInfo
-
 func (m *IndirectRequired) GetOptNested() *NestedWithRequired {
 func (m *IndirectRequired) GetOptNested() *NestedWithRequired {
 	if m != nil {
 	if m != nil {
 		return m.OptNested
 		return m.OptNested
@@ -863,7 +700,7 @@ func (m *Extensions) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[9].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[9].MessageOf(m)
 }
 }
 func (m *Extensions) Reset()         { *m = Extensions{} }
 func (m *Extensions) Reset()         { *m = Extensions{} }
-func (m *Extensions) String() string { return proto.CompactTextString(m) }
+func (m *Extensions) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Extensions) ProtoMessage()    {}
 func (*Extensions) ProtoMessage()    {}
 
 
 // Deprecated: Use Extensions.ProtoReflect.Type instead.
 // Deprecated: Use Extensions.ProtoReflect.Type instead.
@@ -880,24 +717,6 @@ func (*Extensions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_Extensions
 	return extRange_Extensions
 }
 }
 
 
-func (m *Extensions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Extensions.Unmarshal(m, b)
-}
-func (m *Extensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Extensions.Marshal(b, m, deterministic)
-}
-func (m *Extensions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Extensions.Merge(m, src)
-}
-func (m *Extensions) XXX_Size() int {
-	return xxx_messageInfo_Extensions.Size(m)
-}
-func (m *Extensions) XXX_DiscardUnknown() {
-	xxx_messageInfo_Extensions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Extensions proto.InternalMessageInfo
-
 func (m *Extensions) GetOptString() string {
 func (m *Extensions) GetOptString() string {
 	if m != nil && m.OptString != nil {
 	if m != nil && m.OptString != nil {
 		return *m.OptString
 		return *m.OptString
@@ -929,7 +748,7 @@ func (m *ExtensionsContainer) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[10].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[10].MessageOf(m)
 }
 }
 func (m *ExtensionsContainer) Reset()         { *m = ExtensionsContainer{} }
 func (m *ExtensionsContainer) Reset()         { *m = ExtensionsContainer{} }
-func (m *ExtensionsContainer) String() string { return proto.CompactTextString(m) }
+func (m *ExtensionsContainer) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ExtensionsContainer) ProtoMessage()    {}
 func (*ExtensionsContainer) ProtoMessage()    {}
 
 
 // Deprecated: Use ExtensionsContainer.ProtoReflect.Type instead.
 // Deprecated: Use ExtensionsContainer.ProtoReflect.Type instead.
@@ -937,24 +756,6 @@ func (*ExtensionsContainer) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{10}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{10}
 }
 }
 
 
-func (m *ExtensionsContainer) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ExtensionsContainer.Unmarshal(m, b)
-}
-func (m *ExtensionsContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ExtensionsContainer.Marshal(b, m, deterministic)
-}
-func (m *ExtensionsContainer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtensionsContainer.Merge(m, src)
-}
-func (m *ExtensionsContainer) XXX_Size() int {
-	return xxx_messageInfo_ExtensionsContainer.Size(m)
-}
-func (m *ExtensionsContainer) XXX_DiscardUnknown() {
-	xxx_messageInfo_ExtensionsContainer.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ExtensionsContainer proto.InternalMessageInfo
-
 type MessageSet struct {
 type MessageSet struct {
 	XXX_NoUnkeyedLiteral   struct{}                    `json:"-"`
 	XXX_NoUnkeyedLiteral   struct{}                    `json:"-"`
 	XXX_InternalExtensions protoimpl.ExtensionFieldsV1 `protobuf_messageset:"1" json:"-"`
 	XXX_InternalExtensions protoimpl.ExtensionFieldsV1 `protobuf_messageset:"1" json:"-"`
@@ -966,7 +767,7 @@ func (m *MessageSet) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[11].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[11].MessageOf(m)
 }
 }
 func (m *MessageSet) Reset()         { *m = MessageSet{} }
 func (m *MessageSet) Reset()         { *m = MessageSet{} }
-func (m *MessageSet) String() string { return proto.CompactTextString(m) }
+func (m *MessageSet) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*MessageSet) ProtoMessage()    {}
 func (*MessageSet) ProtoMessage()    {}
 
 
 // Deprecated: Use MessageSet.ProtoReflect.Type instead.
 // Deprecated: Use MessageSet.ProtoReflect.Type instead.
@@ -983,24 +784,6 @@ func (*MessageSet) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_MessageSet
 	return extRange_MessageSet
 }
 }
 
 
-func (m *MessageSet) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageSet.Unmarshal(m, b)
-}
-func (m *MessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageSet.Marshal(b, m, deterministic)
-}
-func (m *MessageSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageSet.Merge(m, src)
-}
-func (m *MessageSet) XXX_Size() int {
-	return xxx_messageInfo_MessageSet.Size(m)
-}
-func (m *MessageSet) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageSet.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageSet proto.InternalMessageInfo
-
 type MessageSetExtension struct {
 type MessageSetExtension struct {
 	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1012,7 +795,7 @@ func (m *MessageSetExtension) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[12].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[12].MessageOf(m)
 }
 }
 func (m *MessageSetExtension) Reset()         { *m = MessageSetExtension{} }
 func (m *MessageSetExtension) Reset()         { *m = MessageSetExtension{} }
-func (m *MessageSetExtension) String() string { return proto.CompactTextString(m) }
+func (m *MessageSetExtension) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*MessageSetExtension) ProtoMessage()    {}
 func (*MessageSetExtension) ProtoMessage()    {}
 
 
 // Deprecated: Use MessageSetExtension.ProtoReflect.Type instead.
 // Deprecated: Use MessageSetExtension.ProtoReflect.Type instead.
@@ -1020,24 +803,6 @@ func (*MessageSetExtension) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{12}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{12}
 }
 }
 
 
-func (m *MessageSetExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageSetExtension.Unmarshal(m, b)
-}
-func (m *MessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageSetExtension.Marshal(b, m, deterministic)
-}
-func (m *MessageSetExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageSetExtension.Merge(m, src)
-}
-func (m *MessageSetExtension) XXX_Size() int {
-	return xxx_messageInfo_MessageSetExtension.Size(m)
-}
-func (m *MessageSetExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageSetExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageSetExtension proto.InternalMessageInfo
-
 func (m *MessageSetExtension) GetOptString() string {
 func (m *MessageSetExtension) GetOptString() string {
 	if m != nil && m.OptString != nil {
 	if m != nil && m.OptString != nil {
 		return *m.OptString
 		return *m.OptString
@@ -1056,7 +821,7 @@ func (m *FakeMessageSet) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[13].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[13].MessageOf(m)
 }
 }
 func (m *FakeMessageSet) Reset()         { *m = FakeMessageSet{} }
 func (m *FakeMessageSet) Reset()         { *m = FakeMessageSet{} }
-func (m *FakeMessageSet) String() string { return proto.CompactTextString(m) }
+func (m *FakeMessageSet) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FakeMessageSet) ProtoMessage()    {}
 func (*FakeMessageSet) ProtoMessage()    {}
 
 
 // Deprecated: Use FakeMessageSet.ProtoReflect.Type instead.
 // Deprecated: Use FakeMessageSet.ProtoReflect.Type instead.
@@ -1073,24 +838,6 @@ func (*FakeMessageSet) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_FakeMessageSet
 	return extRange_FakeMessageSet
 }
 }
 
 
-func (m *FakeMessageSet) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FakeMessageSet.Unmarshal(m, b)
-}
-func (m *FakeMessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FakeMessageSet.Marshal(b, m, deterministic)
-}
-func (m *FakeMessageSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FakeMessageSet.Merge(m, src)
-}
-func (m *FakeMessageSet) XXX_Size() int {
-	return xxx_messageInfo_FakeMessageSet.Size(m)
-}
-func (m *FakeMessageSet) XXX_DiscardUnknown() {
-	xxx_messageInfo_FakeMessageSet.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FakeMessageSet proto.InternalMessageInfo
-
 type FakeMessageSetExtension struct {
 type FakeMessageSetExtension struct {
 	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1102,7 +849,7 @@ func (m *FakeMessageSetExtension) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[14].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[14].MessageOf(m)
 }
 }
 func (m *FakeMessageSetExtension) Reset()         { *m = FakeMessageSetExtension{} }
 func (m *FakeMessageSetExtension) Reset()         { *m = FakeMessageSetExtension{} }
-func (m *FakeMessageSetExtension) String() string { return proto.CompactTextString(m) }
+func (m *FakeMessageSetExtension) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FakeMessageSetExtension) ProtoMessage()    {}
 func (*FakeMessageSetExtension) ProtoMessage()    {}
 
 
 // Deprecated: Use FakeMessageSetExtension.ProtoReflect.Type instead.
 // Deprecated: Use FakeMessageSetExtension.ProtoReflect.Type instead.
@@ -1110,24 +857,6 @@ func (*FakeMessageSetExtension) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{14}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{14}
 }
 }
 
 
-func (m *FakeMessageSetExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FakeMessageSetExtension.Unmarshal(m, b)
-}
-func (m *FakeMessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FakeMessageSetExtension.Marshal(b, m, deterministic)
-}
-func (m *FakeMessageSetExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FakeMessageSetExtension.Merge(m, src)
-}
-func (m *FakeMessageSetExtension) XXX_Size() int {
-	return xxx_messageInfo_FakeMessageSetExtension.Size(m)
-}
-func (m *FakeMessageSetExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_FakeMessageSetExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FakeMessageSetExtension proto.InternalMessageInfo
-
 func (m *FakeMessageSetExtension) GetOptString() string {
 func (m *FakeMessageSetExtension) GetOptString() string {
 	if m != nil && m.OptString != nil {
 	if m != nil && m.OptString != nil {
 		return *m.OptString
 		return *m.OptString
@@ -1163,7 +892,7 @@ func (m *KnownTypes) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[15].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[15].MessageOf(m)
 }
 }
 func (m *KnownTypes) Reset()         { *m = KnownTypes{} }
 func (m *KnownTypes) Reset()         { *m = KnownTypes{} }
-func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
+func (m *KnownTypes) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*KnownTypes) ProtoMessage()    {}
 func (*KnownTypes) ProtoMessage()    {}
 
 
 // Deprecated: Use KnownTypes.ProtoReflect.Type instead.
 // Deprecated: Use KnownTypes.ProtoReflect.Type instead.
@@ -1171,24 +900,6 @@ func (*KnownTypes) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{15}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{15}
 }
 }
 
 
-func (m *KnownTypes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KnownTypes.Unmarshal(m, b)
-}
-func (m *KnownTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KnownTypes.Marshal(b, m, deterministic)
-}
-func (m *KnownTypes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KnownTypes.Merge(m, src)
-}
-func (m *KnownTypes) XXX_Size() int {
-	return xxx_messageInfo_KnownTypes.Size(m)
-}
-func (m *KnownTypes) XXX_DiscardUnknown() {
-	xxx_messageInfo_KnownTypes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KnownTypes proto.InternalMessageInfo
-
 func (m *KnownTypes) GetOptBool() *known.BoolValue {
 func (m *KnownTypes) GetOptBool() *known.BoolValue {
 	if m != nil {
 	if m != nil {
 		return m.OptBool
 		return m.OptBool
@@ -1321,7 +1032,7 @@ func (m *Nests_OptGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[16].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[16].MessageOf(m)
 }
 }
 func (m *Nests_OptGroup) Reset()         { *m = Nests_OptGroup{} }
 func (m *Nests_OptGroup) Reset()         { *m = Nests_OptGroup{} }
-func (m *Nests_OptGroup) String() string { return proto.CompactTextString(m) }
+func (m *Nests_OptGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Nests_OptGroup) ProtoMessage()    {}
 func (*Nests_OptGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use Nests_OptGroup.ProtoReflect.Type instead.
 // Deprecated: Use Nests_OptGroup.ProtoReflect.Type instead.
@@ -1329,24 +1040,6 @@ func (*Nests_OptGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 0}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 0}
 }
 }
 
 
-func (m *Nests_OptGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests_OptGroup.Unmarshal(m, b)
-}
-func (m *Nests_OptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests_OptGroup.Marshal(b, m, deterministic)
-}
-func (m *Nests_OptGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests_OptGroup.Merge(m, src)
-}
-func (m *Nests_OptGroup) XXX_Size() int {
-	return xxx_messageInfo_Nests_OptGroup.Size(m)
-}
-func (m *Nests_OptGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests_OptGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests_OptGroup proto.InternalMessageInfo
-
 func (m *Nests_OptGroup) GetOptString() string {
 func (m *Nests_OptGroup) GetOptString() string {
 	if m != nil && m.OptString != nil {
 	if m != nil && m.OptString != nil {
 		return *m.OptString
 		return *m.OptString
@@ -1379,7 +1072,7 @@ func (m *Nests_RptGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[17].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[17].MessageOf(m)
 }
 }
 func (m *Nests_RptGroup) Reset()         { *m = Nests_RptGroup{} }
 func (m *Nests_RptGroup) Reset()         { *m = Nests_RptGroup{} }
-func (m *Nests_RptGroup) String() string { return proto.CompactTextString(m) }
+func (m *Nests_RptGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Nests_RptGroup) ProtoMessage()    {}
 func (*Nests_RptGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use Nests_RptGroup.ProtoReflect.Type instead.
 // Deprecated: Use Nests_RptGroup.ProtoReflect.Type instead.
@@ -1387,24 +1080,6 @@ func (*Nests_RptGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 1}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 1}
 }
 }
 
 
-func (m *Nests_RptGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests_RptGroup.Unmarshal(m, b)
-}
-func (m *Nests_RptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests_RptGroup.Marshal(b, m, deterministic)
-}
-func (m *Nests_RptGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests_RptGroup.Merge(m, src)
-}
-func (m *Nests_RptGroup) XXX_Size() int {
-	return xxx_messageInfo_Nests_RptGroup.Size(m)
-}
-func (m *Nests_RptGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests_RptGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests_RptGroup proto.InternalMessageInfo
-
 func (m *Nests_RptGroup) GetRptString() []string {
 func (m *Nests_RptGroup) GetRptString() []string {
 	if m != nil {
 	if m != nil {
 		return m.RptString
 		return m.RptString
@@ -1423,7 +1098,7 @@ func (m *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb2_test_proto_messageTypes[18].MessageOf(m)
 	return xxx_File_pb2_test_proto_messageTypes[18].MessageOf(m)
 }
 }
 func (m *Nests_OptGroup_OptNestedGroup) Reset()         { *m = Nests_OptGroup_OptNestedGroup{} }
 func (m *Nests_OptGroup_OptNestedGroup) Reset()         { *m = Nests_OptGroup_OptNestedGroup{} }
-func (m *Nests_OptGroup_OptNestedGroup) String() string { return proto.CompactTextString(m) }
+func (m *Nests_OptGroup_OptNestedGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Nests_OptGroup_OptNestedGroup) ProtoMessage()    {}
 func (*Nests_OptGroup_OptNestedGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use Nests_OptGroup_OptNestedGroup.ProtoReflect.Type instead.
 // Deprecated: Use Nests_OptGroup_OptNestedGroup.ProtoReflect.Type instead.
@@ -1431,24 +1106,6 @@ func (*Nests_OptGroup_OptNestedGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 0, 0}
 	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 0, 0}
 }
 }
 
 
-func (m *Nests_OptGroup_OptNestedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Unmarshal(m, b)
-}
-func (m *Nests_OptGroup_OptNestedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Marshal(b, m, deterministic)
-}
-func (m *Nests_OptGroup_OptNestedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Merge(m, src)
-}
-func (m *Nests_OptGroup_OptNestedGroup) XXX_Size() int {
-	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Size(m)
-}
-func (m *Nests_OptGroup_OptNestedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests_OptGroup_OptNestedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests_OptGroup_OptNestedGroup proto.InternalMessageInfo
-
 func (m *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
 func (m *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
 	if m != nil && m.OptFixed32 != nil {
 	if m != nil && m.OptFixed32 != nil {
 		return *m.OptFixed32
 		return *m.OptFixed32
@@ -2123,7 +1780,6 @@ func xxx_File_pb2_test_proto_init() {
 	if File_pb2_test_proto != nil {
 	if File_pb2_test_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 20)
 	extensionTypes := make([]protoreflect.ExtensionType, 19)
 	extensionTypes := make([]protoreflect.ExtensionType, 19)
 	File_pb2_test_proto = protoimpl.FileBuilder{
 	File_pb2_test_proto = protoimpl.FileBuilder{
 		RawDescriptor:        xxx_File_pb2_test_proto_rawdesc,
 		RawDescriptor:        xxx_File_pb2_test_proto_rawdesc,
@@ -2131,56 +1787,11 @@ func xxx_File_pb2_test_proto_init() {
 		DependencyIndexes:    xxx_File_pb2_test_proto_depIdxs,
 		DependencyIndexes:    xxx_File_pb2_test_proto_depIdxs,
 		LegacyExtensions:     xxx_File_pb2_test_proto_extDescs,
 		LegacyExtensions:     xxx_File_pb2_test_proto_extDescs,
 		EnumOutputTypes:      xxx_File_pb2_test_proto_enumTypes,
 		EnumOutputTypes:      xxx_File_pb2_test_proto_enumTypes,
-		MessageOutputTypes:   messageTypes,
+		MessageOutputTypes:   xxx_File_pb2_test_proto_messageTypes,
 		ExtensionOutputTypes: extensionTypes,
 		ExtensionOutputTypes: extensionTypes,
+		FilesRegistry:        protoregistry.GlobalFiles,
+		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_pb2_test_proto_goTypes[2:][:20]
-	for i, mt := range messageTypes {
-		xxx_File_pb2_test_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_pb2_test_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("pb2/test.proto", xxx_File_pb2_test_proto_rawdesc_gzipped)
-	proto.RegisterEnum("pb2.Enum", Enum_name, Enum_value)
-	proto.RegisterEnum("pb2.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
-	proto.RegisterType((*Scalars)(nil), "pb2.Scalars")
-	proto.RegisterType((*Enums)(nil), "pb2.Enums")
-	proto.RegisterType((*Repeats)(nil), "pb2.Repeats")
-	proto.RegisterType((*Nested)(nil), "pb2.Nested")
-	proto.RegisterType((*Nests)(nil), "pb2.Nests")
-	proto.RegisterType((*Requireds)(nil), "pb2.Requireds")
-	proto.RegisterType((*PartialRequired)(nil), "pb2.PartialRequired")
-	proto.RegisterType((*NestedWithRequired)(nil), "pb2.NestedWithRequired")
-	proto.RegisterType((*IndirectRequired)(nil), "pb2.IndirectRequired")
-	proto.RegisterMapType((map[string]*NestedWithRequired)(nil), "pb2.IndirectRequired.StrToNestedEntry")
-	proto.RegisterType((*Extensions)(nil), "pb2.Extensions")
-	proto.RegisterType((*ExtensionsContainer)(nil), "pb2.ExtensionsContainer")
-	proto.RegisterType((*MessageSet)(nil), "pb2.MessageSet")
-	proto.RegisterType((*MessageSetExtension)(nil), "pb2.MessageSetExtension")
-	proto.RegisterType((*FakeMessageSet)(nil), "pb2.FakeMessageSet")
-	proto.RegisterType((*FakeMessageSetExtension)(nil), "pb2.FakeMessageSetExtension")
-	proto.RegisterType((*KnownTypes)(nil), "pb2.KnownTypes")
-	proto.RegisterType((*Nests_OptGroup)(nil), "pb2.Nests.OptGroup")
-	proto.RegisterType((*Nests_RptGroup)(nil), "pb2.Nests.RptGroup")
-	proto.RegisterType((*Nests_OptGroup_OptNestedGroup)(nil), "pb2.Nests.OptGroup.OptNestedGroup")
-	proto.RegisterExtension(E_OptExtBool)
-	proto.RegisterExtension(E_OptExtString)
-	proto.RegisterExtension(E_OptExtEnum)
-	proto.RegisterExtension(E_OptExtNested)
-	proto.RegisterExtension(E_RptExtFixed32)
-	proto.RegisterExtension(E_RptExtEnum)
-	proto.RegisterExtension(E_RptExtNested)
-	proto.RegisterExtension(E_MessageSetExtension)
-	proto.RegisterExtension(E_ExtensionsContainer_OptExtBool)
-	proto.RegisterExtension(E_ExtensionsContainer_OptExtString)
-	proto.RegisterExtension(E_ExtensionsContainer_OptExtEnum)
-	proto.RegisterExtension(E_ExtensionsContainer_OptExtNested)
-	proto.RegisterExtension(E_ExtensionsContainer_RptExtString)
-	proto.RegisterExtension(E_ExtensionsContainer_RptExtEnum)
-	proto.RegisterExtension(E_ExtensionsContainer_RptExtNested)
-	proto.RegisterExtension(E_MessageSetExtension_MessageSetExtension)
-	proto.RegisterExtension(E_MessageSetExtension_NotMessageSetExtension)
-	proto.RegisterExtension(E_MessageSetExtension_ExtNested)
-	proto.RegisterExtension(E_FakeMessageSetExtension_MessageSetExtension)
 	xxx_File_pb2_test_proto_goTypes = nil
 	xxx_File_pb2_test_proto_goTypes = nil
 	xxx_File_pb2_test_proto_depIdxs = nil
 	xxx_File_pb2_test_proto_depIdxs = nil
 }
 }

+ 11 - 157
encoding/testprotos/pb3/test.pb.go

@@ -4,10 +4,9 @@
 package pb3
 package pb3
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Enum int32
 type Enum int32
@@ -118,7 +117,7 @@ func (m *Scalars) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb3_test_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_pb3_test_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Scalars) Reset()         { *m = Scalars{} }
 func (m *Scalars) Reset()         { *m = Scalars{} }
-func (m *Scalars) String() string { return proto.CompactTextString(m) }
+func (m *Scalars) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Scalars) ProtoMessage()    {}
 func (*Scalars) ProtoMessage()    {}
 
 
 // Deprecated: Use Scalars.ProtoReflect.Type instead.
 // Deprecated: Use Scalars.ProtoReflect.Type instead.
@@ -126,24 +125,6 @@ func (*Scalars) Descriptor() ([]byte, []int) {
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Scalars) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scalars.Unmarshal(m, b)
-}
-func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
-}
-func (m *Scalars) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scalars.Merge(m, src)
-}
-func (m *Scalars) XXX_Size() int {
-	return xxx_messageInfo_Scalars.Size(m)
-}
-func (m *Scalars) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scalars.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Scalars proto.InternalMessageInfo
-
 func (m *Scalars) GetSBool() bool {
 func (m *Scalars) GetSBool() bool {
 	if m != nil {
 	if m != nil {
 		return m.SBool
 		return m.SBool
@@ -262,7 +243,7 @@ func (m *Enums) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb3_test_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_pb3_test_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Enums) Reset()         { *m = Enums{} }
 func (m *Enums) Reset()         { *m = Enums{} }
-func (m *Enums) String() string { return proto.CompactTextString(m) }
+func (m *Enums) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Enums) ProtoMessage()    {}
 func (*Enums) ProtoMessage()    {}
 
 
 // Deprecated: Use Enums.ProtoReflect.Type instead.
 // Deprecated: Use Enums.ProtoReflect.Type instead.
@@ -270,24 +251,6 @@ func (*Enums) Descriptor() ([]byte, []int) {
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *Enums) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Enums.Unmarshal(m, b)
-}
-func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
-}
-func (m *Enums) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Enums.Merge(m, src)
-}
-func (m *Enums) XXX_Size() int {
-	return xxx_messageInfo_Enums.Size(m)
-}
-func (m *Enums) XXX_DiscardUnknown() {
-	xxx_messageInfo_Enums.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Enums proto.InternalMessageInfo
-
 func (m *Enums) GetSEnum() Enum {
 func (m *Enums) GetSEnum() Enum {
 	if m != nil {
 	if m != nil {
 		return m.SEnum
 		return m.SEnum
@@ -314,7 +277,7 @@ func (m *Nests) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb3_test_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_pb3_test_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *Nests) Reset()         { *m = Nests{} }
 func (m *Nests) Reset()         { *m = Nests{} }
-func (m *Nests) String() string { return proto.CompactTextString(m) }
+func (m *Nests) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Nests) ProtoMessage()    {}
 func (*Nests) ProtoMessage()    {}
 
 
 // Deprecated: Use Nests.ProtoReflect.Type instead.
 // Deprecated: Use Nests.ProtoReflect.Type instead.
@@ -322,24 +285,6 @@ func (*Nests) Descriptor() ([]byte, []int) {
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *Nests) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests.Unmarshal(m, b)
-}
-func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
-}
-func (m *Nests) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests.Merge(m, src)
-}
-func (m *Nests) XXX_Size() int {
-	return xxx_messageInfo_Nests.Size(m)
-}
-func (m *Nests) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests proto.InternalMessageInfo
-
 func (m *Nests) GetSNested() *Nested {
 func (m *Nests) GetSNested() *Nested {
 	if m != nil {
 	if m != nil {
 		return m.SNested
 		return m.SNested
@@ -360,7 +305,7 @@ func (m *Nested) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb3_test_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_pb3_test_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *Nested) Reset()         { *m = Nested{} }
 func (m *Nested) Reset()         { *m = Nested{} }
-func (m *Nested) String() string { return proto.CompactTextString(m) }
+func (m *Nested) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Nested) ProtoMessage()    {}
 func (*Nested) ProtoMessage()    {}
 
 
 // Deprecated: Use Nested.ProtoReflect.Type instead.
 // Deprecated: Use Nested.ProtoReflect.Type instead.
@@ -368,24 +313,6 @@ func (*Nested) Descriptor() ([]byte, []int) {
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{3}
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{3}
 }
 }
 
 
-func (m *Nested) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nested.Unmarshal(m, b)
-}
-func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
-}
-func (m *Nested) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nested.Merge(m, src)
-}
-func (m *Nested) XXX_Size() int {
-	return xxx_messageInfo_Nested.Size(m)
-}
-func (m *Nested) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nested.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nested proto.InternalMessageInfo
-
 func (m *Nested) GetSString() string {
 func (m *Nested) GetSString() string {
 	if m != nil {
 	if m != nil {
 		return m.SString
 		return m.SString
@@ -416,7 +343,7 @@ func (m *Oneofs) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb3_test_proto_messageTypes[4].MessageOf(m)
 	return xxx_File_pb3_test_proto_messageTypes[4].MessageOf(m)
 }
 }
 func (m *Oneofs) Reset()         { *m = Oneofs{} }
 func (m *Oneofs) Reset()         { *m = Oneofs{} }
-func (m *Oneofs) String() string { return proto.CompactTextString(m) }
+func (m *Oneofs) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Oneofs) ProtoMessage()    {}
 func (*Oneofs) ProtoMessage()    {}
 
 
 // Deprecated: Use Oneofs.ProtoReflect.Type instead.
 // Deprecated: Use Oneofs.ProtoReflect.Type instead.
@@ -424,24 +351,6 @@ func (*Oneofs) Descriptor() ([]byte, []int) {
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{4}
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{4}
 }
 }
 
 
-func (m *Oneofs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Oneofs.Unmarshal(m, b)
-}
-func (m *Oneofs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Oneofs.Marshal(b, m, deterministic)
-}
-func (m *Oneofs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Oneofs.Merge(m, src)
-}
-func (m *Oneofs) XXX_Size() int {
-	return xxx_messageInfo_Oneofs.Size(m)
-}
-func (m *Oneofs) XXX_DiscardUnknown() {
-	xxx_messageInfo_Oneofs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Oneofs proto.InternalMessageInfo
-
 type isOneofs_Union interface {
 type isOneofs_Union interface {
 	isOneofs_Union()
 	isOneofs_Union()
 }
 }
@@ -517,7 +426,7 @@ func (m *Maps) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb3_test_proto_messageTypes[5].MessageOf(m)
 	return xxx_File_pb3_test_proto_messageTypes[5].MessageOf(m)
 }
 }
 func (m *Maps) Reset()         { *m = Maps{} }
 func (m *Maps) Reset()         { *m = Maps{} }
-func (m *Maps) String() string { return proto.CompactTextString(m) }
+func (m *Maps) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Maps) ProtoMessage()    {}
 func (*Maps) ProtoMessage()    {}
 
 
 // Deprecated: Use Maps.ProtoReflect.Type instead.
 // Deprecated: Use Maps.ProtoReflect.Type instead.
@@ -525,24 +434,6 @@ func (*Maps) Descriptor() ([]byte, []int) {
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{5}
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{5}
 }
 }
 
 
-func (m *Maps) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Maps.Unmarshal(m, b)
-}
-func (m *Maps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Maps.Marshal(b, m, deterministic)
-}
-func (m *Maps) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Maps.Merge(m, src)
-}
-func (m *Maps) XXX_Size() int {
-	return xxx_messageInfo_Maps.Size(m)
-}
-func (m *Maps) XXX_DiscardUnknown() {
-	xxx_messageInfo_Maps.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Maps proto.InternalMessageInfo
-
 func (m *Maps) GetInt32ToStr() map[int32]string {
 func (m *Maps) GetInt32ToStr() map[int32]string {
 	if m != nil {
 	if m != nil {
 		return m.Int32ToStr
 		return m.Int32ToStr
@@ -590,7 +481,7 @@ func (m *JSONNames) ProtoReflect() protoreflect.Message {
 	return xxx_File_pb3_test_proto_messageTypes[6].MessageOf(m)
 	return xxx_File_pb3_test_proto_messageTypes[6].MessageOf(m)
 }
 }
 func (m *JSONNames) Reset()         { *m = JSONNames{} }
 func (m *JSONNames) Reset()         { *m = JSONNames{} }
-func (m *JSONNames) String() string { return proto.CompactTextString(m) }
+func (m *JSONNames) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*JSONNames) ProtoMessage()    {}
 func (*JSONNames) ProtoMessage()    {}
 
 
 // Deprecated: Use JSONNames.ProtoReflect.Type instead.
 // Deprecated: Use JSONNames.ProtoReflect.Type instead.
@@ -598,24 +489,6 @@ func (*JSONNames) Descriptor() ([]byte, []int) {
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{6}
 	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{6}
 }
 }
 
 
-func (m *JSONNames) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_JSONNames.Unmarshal(m, b)
-}
-func (m *JSONNames) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_JSONNames.Marshal(b, m, deterministic)
-}
-func (m *JSONNames) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_JSONNames.Merge(m, src)
-}
-func (m *JSONNames) XXX_Size() int {
-	return xxx_messageInfo_JSONNames.Size(m)
-}
-func (m *JSONNames) XXX_DiscardUnknown() {
-	xxx_messageInfo_JSONNames.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_JSONNames proto.InternalMessageInfo
-
 func (m *JSONNames) GetSString() string {
 func (m *JSONNames) GetSString() string {
 	if m != nil {
 	if m != nil {
 		return m.SString
 		return m.SString
@@ -780,34 +653,15 @@ func xxx_File_pb3_test_proto_init() {
 	if File_pb3_test_proto != nil {
 	if File_pb3_test_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 12)
 	File_pb3_test_proto = protoimpl.FileBuilder{
 	File_pb3_test_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_pb3_test_proto_rawdesc,
 		RawDescriptor:      xxx_File_pb3_test_proto_rawdesc,
 		GoTypes:            xxx_File_pb3_test_proto_goTypes,
 		GoTypes:            xxx_File_pb3_test_proto_goTypes,
 		DependencyIndexes:  xxx_File_pb3_test_proto_depIdxs,
 		DependencyIndexes:  xxx_File_pb3_test_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_pb3_test_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_pb3_test_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_pb3_test_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_pb3_test_proto_goTypes[2:][:12]
-	for i, mt := range messageTypes {
-		xxx_File_pb3_test_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_pb3_test_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("pb3/test.proto", xxx_File_pb3_test_proto_rawdesc_gzipped)
-	proto.RegisterEnum("pb3.Enum", Enum_name, Enum_value)
-	proto.RegisterEnum("pb3.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
-	proto.RegisterType((*Scalars)(nil), "pb3.Scalars")
-	proto.RegisterType((*Enums)(nil), "pb3.Enums")
-	proto.RegisterType((*Nests)(nil), "pb3.Nests")
-	proto.RegisterType((*Nested)(nil), "pb3.Nested")
-	proto.RegisterType((*Oneofs)(nil), "pb3.Oneofs")
-	proto.RegisterType((*Maps)(nil), "pb3.Maps")
-	proto.RegisterMapType((map[bool]uint32)(nil), "pb3.Maps.BoolToUint32Entry")
-	proto.RegisterMapType((map[int32]string)(nil), "pb3.Maps.Int32ToStrEntry")
-	proto.RegisterMapType((map[string]*Nested)(nil), "pb3.Maps.StrToNestedEntry")
-	proto.RegisterMapType((map[string]*Oneofs)(nil), "pb3.Maps.StrToOneofsEntry")
-	proto.RegisterMapType((map[uint64]Enum)(nil), "pb3.Maps.Uint64ToEnumEntry")
-	proto.RegisterType((*JSONNames)(nil), "pb3.JSONNames")
 	xxx_File_pb3_test_proto_goTypes = nil
 	xxx_File_pb3_test_proto_goTypes = nil
 	xxx_File_pb3_test_proto_depIdxs = nil
 	xxx_File_pb3_test_proto_depIdxs = nil
 }
 }

+ 1 - 1
go.mod

@@ -1,6 +1,6 @@
 module github.com/golang/protobuf/v2
 module github.com/golang/protobuf/v2
 
 
 require (
 require (
-	github.com/golang/protobuf v1.2.1-0.20190322195920-d94fb84e04b7
+	github.com/golang/protobuf v1.2.1-0.20190326022002-be03c15fcaa2
 	github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42
 	github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42
 )
 )

+ 3 - 1
go.sum

@@ -1,4 +1,6 @@
-github.com/golang/protobuf v1.2.1-0.20190322195920-d94fb84e04b7 h1:u9KfmPcHwYTSPJyTFv1ZXkTU96h4cdgvTFOS6YBai60=
 github.com/golang/protobuf v1.2.1-0.20190322195920-d94fb84e04b7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.2.1-0.20190322195920-d94fb84e04b7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.2.1-0.20190326022002-be03c15fcaa2 h1:lkKDUagzhHJnfyahshk3wkddt6PWmUy/gVOV35CWQrA=
+github.com/golang/protobuf v1.2.1-0.20190326022002-be03c15fcaa2/go.mod h1:rZ4veVXHB1S2+o7TKqD9Isxml062IeDutnCDtFPUlCc=
+github.com/golang/protobuf/v2 v2.0.0-20190322201422-f503c300f70e/go.mod h1:25ZALhydMFaBRgPH58a8zpFe9YXMAMjOYWtB6pNPcoo=
 github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42 h1:q3pnF5JFBNRz8sRD+IRj7Y6DMyYGTNqnZ9axTbSfoNI=
 github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42 h1:q3pnF5JFBNRz8sRD+IRj7Y6DMyYGTNqnZ9axTbSfoNI=
 github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=

+ 11 - 3
internal/fileinit/desc.go

@@ -13,6 +13,7 @@ import (
 	"reflect"
 	"reflect"
 	"sync"
 	"sync"
 
 
+	pimpl "github.com/golang/protobuf/v2/internal/impl"
 	pragma "github.com/golang/protobuf/v2/internal/pragma"
 	pragma "github.com/golang/protobuf/v2/internal/pragma"
 	ptype "github.com/golang/protobuf/v2/internal/prototype"
 	ptype "github.com/golang/protobuf/v2/internal/prototype"
 	pfmt "github.com/golang/protobuf/v2/internal/typefmt"
 	pfmt "github.com/golang/protobuf/v2/internal/typefmt"
@@ -110,7 +111,7 @@ type FileBuilder struct {
 	// MessageOutputTypes is where Init stores all initialized message types
 	// MessageOutputTypes is where Init stores all initialized message types
 	// in "flattened ordering". This includes slots for map entry messages,
 	// in "flattened ordering". This includes slots for map entry messages,
 	// which are skipped over.
 	// which are skipped over.
-	MessageOutputTypes []pref.MessageType
+	MessageOutputTypes []pimpl.MessageType
 	// ExtensionOutputTypes is where Init stores all initialized extension types
 	// ExtensionOutputTypes is where Init stores all initialized extension types
 	// in "flattened ordering".
 	// in "flattened ordering".
 	ExtensionOutputTypes []pref.ExtensionType
 	ExtensionOutputTypes []pref.ExtensionType
@@ -138,12 +139,19 @@ func (fb FileBuilder) Init() pref.FileDescriptor {
 	}
 	}
 
 
 	// Copy type descriptors to the output.
 	// Copy type descriptors to the output.
+	//
+	// While iterating over the messages, we also determine whether the message
+	// is a map entry type.
+	messageGoTypes := fb.GoTypes[len(fd.allEnums):][:len(fd.allMessages)]
 	for i := range fd.allEnums {
 	for i := range fd.allEnums {
 		fb.EnumOutputTypes[i] = &fd.allEnums[i]
 		fb.EnumOutputTypes[i] = &fd.allEnums[i]
 	}
 	}
 	for i := range fd.allMessages {
 	for i := range fd.allMessages {
-		if mt, _ := fd.allMessages[i].asDesc().(pref.MessageType); mt != nil {
-			fb.MessageOutputTypes[i] = mt
+		if messageGoTypes[i] == nil {
+			fd.allMessages[i].isMapEntry = true
+		} else {
+			fb.MessageOutputTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
+			fb.MessageOutputTypes[i].PBType = fd.allMessages[i].asDesc().(pref.MessageType)
 		}
 		}
 	}
 	}
 	for i := range fd.allExtensions {
 	for i := range fd.allExtensions {

+ 0 - 7
internal/fileinit/desc_init.go

@@ -19,13 +19,6 @@ func newFileDesc(fb FileBuilder) *fileDesc {
 	file.initDecls(len(fb.EnumOutputTypes), len(fb.MessageOutputTypes), len(fb.ExtensionOutputTypes))
 	file.initDecls(len(fb.EnumOutputTypes), len(fb.MessageOutputTypes), len(fb.ExtensionOutputTypes))
 	file.unmarshalSeed(fb.RawDescriptor)
 	file.unmarshalSeed(fb.RawDescriptor)
 
 
-	// Determine which message descriptors represent map entries based on the
-	// lack of an associated Go type.
-	messageDecls := file.GoTypes[len(file.allEnums):]
-	for i := range file.allMessages {
-		file.allMessages[i].isMapEntry = messageDecls[i] == nil
-	}
-
 	// Extended message dependencies are eagerly handled since registration
 	// Extended message dependencies are eagerly handled since registration
 	// needs this information at program init time.
 	// needs this information at program init time.
 	for i := range file.allExtensions {
 	for i := range file.allExtensions {

+ 6 - 4
internal/legacy/enum.go

@@ -36,7 +36,7 @@ func loadEnumType(t reflect.Type) pref.EnumType {
 
 
 	// Slow-path: derive enum descriptor and initialize EnumType.
 	// Slow-path: derive enum descriptor and initialize EnumType.
 	var m sync.Map // map[protoreflect.EnumNumber]proto.Enum
 	var m sync.Map // map[protoreflect.EnumNumber]proto.Enum
-	ed := loadEnumDesc(t)
+	ed := LoadEnumDesc(t)
 	et := ptype.GoEnum(ed, func(et pref.EnumType, n pref.EnumNumber) pref.Enum {
 	et := ptype.GoEnum(ed, func(et pref.EnumType, n pref.EnumNumber) pref.Enum {
 		if e, ok := m.Load(n); ok {
 		if e, ok := m.Load(n); ok {
 			return e.(pref.Enum)
 			return e.(pref.Enum)
@@ -81,9 +81,11 @@ var enumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor
 
 
 var enumNumberType = reflect.TypeOf(pref.EnumNumber(0))
 var enumNumberType = reflect.TypeOf(pref.EnumNumber(0))
 
 
-// loadEnumDesc returns an EnumDescriptor derived from the Go type,
+// LoadEnumDesc returns an EnumDescriptor derived from the Go type,
 // which must be an int32 kind and not implement the v2 API already.
 // which must be an int32 kind and not implement the v2 API already.
-func loadEnumDesc(t reflect.Type) pref.EnumDescriptor {
+//
+// This is exported for testing purposes.
+func LoadEnumDesc(t reflect.Type) pref.EnumDescriptor {
 	// Fast-path: check if an EnumDescriptor is cached for this concrete type.
 	// Fast-path: check if an EnumDescriptor is cached for this concrete type.
 	if ed, ok := enumDescCache.Load(t); ok {
 	if ed, ok := enumDescCache.Load(t); ok {
 		return ed.(pref.EnumDescriptor)
 		return ed.(pref.EnumDescriptor)
@@ -105,7 +107,7 @@ func loadEnumDesc(t reflect.Type) pref.EnumDescriptor {
 	}
 	}
 	if ed, ok := ev.(enumV1); ok {
 	if ed, ok := ev.(enumV1); ok {
 		b, idxs := ed.EnumDescriptor()
 		b, idxs := ed.EnumDescriptor()
-		fd := loadFileDesc(b)
+		fd := LoadFileDesc(b)
 
 
 		// Derive syntax.
 		// Derive syntax.
 		switch fd.GetSyntax() {
 		switch fd.GetSyntax() {

+ 1 - 1
internal/legacy/extension.go

@@ -112,7 +112,7 @@ func extensionDescFromType(t pref.ExtensionType) *piface.ExtensionDescV1 {
 		}
 		}
 		if ed, ok := ev.(enumV1); ok && protoPkg == "" {
 		if ed, ok := ev.(enumV1); ok && protoPkg == "" {
 			b, _ := ed.EnumDescriptor()
 			b, _ := ed.EnumDescriptor()
-			protoPkg = loadFileDesc(b).GetPackage()
+			protoPkg = LoadFileDesc(b).GetPackage()
 		}
 		}
 
 
 		if protoPkg != "" {
 		if protoPkg != "" {

+ 4 - 2
internal/legacy/file.go

@@ -34,13 +34,15 @@ type (
 
 
 var fileDescCache sync.Map // map[*byte]*descriptorpb.FileDescriptorProto
 var fileDescCache sync.Map // map[*byte]*descriptorpb.FileDescriptorProto
 
 
-// loadFileDesc unmarshals b as a compressed FileDescriptorProto message.
+// LoadFileDesc unmarshals b as a compressed FileDescriptorProto message.
 //
 //
 // This assumes that b is immutable and that b does not refer to part of a
 // This assumes that b is immutable and that b does not refer to part of a
 // concatenated series of GZIP files (which would require shenanigans that
 // concatenated series of GZIP files (which would require shenanigans that
 // rely on the concatenation properties of both protobufs and GZIP).
 // rely on the concatenation properties of both protobufs and GZIP).
 // File descriptors generated by protoc-gen-go do not rely on that property.
 // File descriptors generated by protoc-gen-go do not rely on that property.
-func loadFileDesc(b []byte) *descriptorpb.FileDescriptorProto {
+//
+// This is exported for testing purposes.
+func LoadFileDesc(b []byte) *descriptorpb.FileDescriptorProto {
 	// Fast-path: check whether we already have a cached file descriptor.
 	// Fast-path: check whether we already have a cached file descriptor.
 	if fd, ok := fileDescCache.Load(&b[0]); ok {
 	if fd, ok := fileDescCache.Load(&b[0]); ok {
 		return fd.(*descriptorpb.FileDescriptorProto)
 		return fd.(*descriptorpb.FileDescriptorProto)

+ 105 - 104
internal/legacy/file_test.go

@@ -2,12 +2,13 @@
 // Use of this source code is governed by a BSD-style
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 // license that can be found in the LICENSE file.
 
 
-package legacy
+package legacy_test
 
 
 import (
 import (
 	"reflect"
 	"reflect"
 	"testing"
 	"testing"
 
 
+	legacy "github.com/golang/protobuf/v2/internal/legacy"
 	pragma "github.com/golang/protobuf/v2/internal/pragma"
 	pragma "github.com/golang/protobuf/v2/internal/pragma"
 	pdesc "github.com/golang/protobuf/v2/reflect/protodesc"
 	pdesc "github.com/golang/protobuf/v2/reflect/protodesc"
 	pref "github.com/golang/protobuf/v2/reflect/protoreflect"
 	pref "github.com/golang/protobuf/v2/reflect/protoreflect"
@@ -28,7 +29,7 @@ import (
 )
 )
 
 
 func mustLoadFileDesc(b []byte, _ []int) pref.FileDescriptor {
 func mustLoadFileDesc(b []byte, _ []int) pref.FileDescriptor {
-	fd, err := pdesc.NewFile(loadFileDesc(b), nil)
+	fd, err := pdesc.NewFile(legacy.LoadFileDesc(b), nil)
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
@@ -40,343 +41,343 @@ func TestDescriptor(t *testing.T) {
 
 
 	fileDescP2_20160225 := mustLoadFileDesc(new(proto2_20160225.Message).Descriptor())
 	fileDescP2_20160225 := mustLoadFileDesc(new(proto2_20160225.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20160225.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20160225.SiblingEnum(0))),
 		want: fileDescP2_20160225.Enums().ByName("SiblingEnum"),
 		want: fileDescP2_20160225.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20160225.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20160225.Message_ChildEnum(0))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.SiblingMessage))),
 		want: fileDescP2_20160225.Messages().ByName("SiblingMessage"),
 		want: fileDescP2_20160225.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ChildMessage))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message))),
 		want: fileDescP2_20160225.Messages().ByName("Message"),
 		want: fileDescP2_20160225.Messages().ByName("Message"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_NamedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_NamedGroup))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OptionalGroup))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RequiredGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RequiredGroup))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RepeatedGroup))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OneofGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OneofGroup))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionOptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionOptionalGroup))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionRepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionRepeatedGroup))),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 	}}...)
 	}}...)
 
 
 	fileDescP3_20160225 := mustLoadFileDesc(new(proto3_20160225.Message).Descriptor())
 	fileDescP3_20160225 := mustLoadFileDesc(new(proto3_20160225.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20160225.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20160225.SiblingEnum(0))),
 		want: fileDescP3_20160225.Enums().ByName("SiblingEnum"),
 		want: fileDescP3_20160225.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20160225.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20160225.Message_ChildEnum(0))),
 		want: fileDescP3_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP3_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160225.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160225.SiblingMessage))),
 		want: fileDescP3_20160225.Messages().ByName("SiblingMessage"),
 		want: fileDescP3_20160225.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message_ChildMessage))),
 		want: fileDescP3_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP3_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message))),
 		want: fileDescP3_20160225.Messages().ByName("Message"),
 		want: fileDescP3_20160225.Messages().ByName("Message"),
 	}}...)
 	}}...)
 
 
 	fileDescP2_20160519 := mustLoadFileDesc(new(proto2_20160519.Message).Descriptor())
 	fileDescP2_20160519 := mustLoadFileDesc(new(proto2_20160519.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20160519.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20160519.SiblingEnum(0))),
 		want: fileDescP2_20160519.Enums().ByName("SiblingEnum"),
 		want: fileDescP2_20160519.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20160519.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20160519.Message_ChildEnum(0))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.SiblingMessage))),
 		want: fileDescP2_20160519.Messages().ByName("SiblingMessage"),
 		want: fileDescP2_20160519.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ChildMessage))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message))),
 		want: fileDescP2_20160519.Messages().ByName("Message"),
 		want: fileDescP2_20160519.Messages().ByName("Message"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_NamedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_NamedGroup))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OptionalGroup))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RequiredGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RequiredGroup))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RepeatedGroup))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OneofGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OneofGroup))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionOptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionOptionalGroup))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionRepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionRepeatedGroup))),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 	}}...)
 	}}...)
 
 
 	fileDescP3_20160519 := mustLoadFileDesc(new(proto3_20160519.Message).Descriptor())
 	fileDescP3_20160519 := mustLoadFileDesc(new(proto3_20160519.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20160519.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20160519.SiblingEnum(0))),
 		want: fileDescP3_20160519.Enums().ByName("SiblingEnum"),
 		want: fileDescP3_20160519.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20160519.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20160519.Message_ChildEnum(0))),
 		want: fileDescP3_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP3_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160519.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160519.SiblingMessage))),
 		want: fileDescP3_20160519.Messages().ByName("SiblingMessage"),
 		want: fileDescP3_20160519.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message_ChildMessage))),
 		want: fileDescP3_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP3_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message))),
 		want: fileDescP3_20160519.Messages().ByName("Message"),
 		want: fileDescP3_20160519.Messages().ByName("Message"),
 	}}...)
 	}}...)
 
 
 	fileDescP2_20180125 := mustLoadFileDesc(new(proto2_20180125.Message).Descriptor())
 	fileDescP2_20180125 := mustLoadFileDesc(new(proto2_20180125.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20180125.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180125.SiblingEnum(0))),
 		want: fileDescP2_20180125.Enums().ByName("SiblingEnum"),
 		want: fileDescP2_20180125.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20180125.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180125.Message_ChildEnum(0))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.SiblingMessage))),
 		want: fileDescP2_20180125.Messages().ByName("SiblingMessage"),
 		want: fileDescP2_20180125.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ChildMessage))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message))),
 		want: fileDescP2_20180125.Messages().ByName("Message"),
 		want: fileDescP2_20180125.Messages().ByName("Message"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_NamedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_NamedGroup))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OptionalGroup))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RequiredGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RequiredGroup))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RepeatedGroup))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OneofGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OneofGroup))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionOptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionOptionalGroup))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionRepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionRepeatedGroup))),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 	}}...)
 	}}...)
 
 
 	fileDescP3_20180125 := mustLoadFileDesc(new(proto3_20180125.Message).Descriptor())
 	fileDescP3_20180125 := mustLoadFileDesc(new(proto3_20180125.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20180125.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180125.SiblingEnum(0))),
 		want: fileDescP3_20180125.Enums().ByName("SiblingEnum"),
 		want: fileDescP3_20180125.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20180125.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180125.Message_ChildEnum(0))),
 		want: fileDescP3_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP3_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180125.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180125.SiblingMessage))),
 		want: fileDescP3_20180125.Messages().ByName("SiblingMessage"),
 		want: fileDescP3_20180125.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message_ChildMessage))),
 		want: fileDescP3_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP3_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message))),
 		want: fileDescP3_20180125.Messages().ByName("Message"),
 		want: fileDescP3_20180125.Messages().ByName("Message"),
 	}}...)
 	}}...)
 
 
 	fileDescP2_20180430 := mustLoadFileDesc(new(proto2_20180430.Message).Descriptor())
 	fileDescP2_20180430 := mustLoadFileDesc(new(proto2_20180430.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20180430.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180430.SiblingEnum(0))),
 		want: fileDescP2_20180430.Enums().ByName("SiblingEnum"),
 		want: fileDescP2_20180430.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20180430.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180430.Message_ChildEnum(0))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.SiblingMessage))),
 		want: fileDescP2_20180430.Messages().ByName("SiblingMessage"),
 		want: fileDescP2_20180430.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ChildMessage))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message))),
 		want: fileDescP2_20180430.Messages().ByName("Message"),
 		want: fileDescP2_20180430.Messages().ByName("Message"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_NamedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_NamedGroup))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OptionalGroup))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RequiredGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RequiredGroup))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RepeatedGroup))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OneofGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OneofGroup))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionOptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionOptionalGroup))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionRepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionRepeatedGroup))),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 	}}...)
 	}}...)
 
 
 	fileDescP3_20180430 := mustLoadFileDesc(new(proto3_20180430.Message).Descriptor())
 	fileDescP3_20180430 := mustLoadFileDesc(new(proto3_20180430.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20180430.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180430.SiblingEnum(0))),
 		want: fileDescP3_20180430.Enums().ByName("SiblingEnum"),
 		want: fileDescP3_20180430.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20180430.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180430.Message_ChildEnum(0))),
 		want: fileDescP3_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP3_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180430.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180430.SiblingMessage))),
 		want: fileDescP3_20180430.Messages().ByName("SiblingMessage"),
 		want: fileDescP3_20180430.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message_ChildMessage))),
 		want: fileDescP3_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP3_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message))),
 		want: fileDescP3_20180430.Messages().ByName("Message"),
 		want: fileDescP3_20180430.Messages().ByName("Message"),
 	}}...)
 	}}...)
 
 
 	fileDescP2_20180814 := mustLoadFileDesc(new(proto2_20180814.Message).Descriptor())
 	fileDescP2_20180814 := mustLoadFileDesc(new(proto2_20180814.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20180814.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180814.SiblingEnum(0))),
 		want: fileDescP2_20180814.Enums().ByName("SiblingEnum"),
 		want: fileDescP2_20180814.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20180814.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180814.Message_ChildEnum(0))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.SiblingMessage))),
 		want: fileDescP2_20180814.Messages().ByName("SiblingMessage"),
 		want: fileDescP2_20180814.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ChildMessage))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message))),
 		want: fileDescP2_20180814.Messages().ByName("Message"),
 		want: fileDescP2_20180814.Messages().ByName("Message"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_NamedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_NamedGroup))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OptionalGroup))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RequiredGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RequiredGroup))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RepeatedGroup))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OneofGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OneofGroup))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionOptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionOptionalGroup))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionRepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionRepeatedGroup))),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 	}}...)
 	}}...)
 
 
 	fileDescP3_20180814 := mustLoadFileDesc(new(proto3_20180814.Message).Descriptor())
 	fileDescP3_20180814 := mustLoadFileDesc(new(proto3_20180814.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20180814.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180814.SiblingEnum(0))),
 		want: fileDescP3_20180814.Enums().ByName("SiblingEnum"),
 		want: fileDescP3_20180814.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20180814.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180814.Message_ChildEnum(0))),
 		want: fileDescP3_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP3_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180814.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180814.SiblingMessage))),
 		want: fileDescP3_20180814.Messages().ByName("SiblingMessage"),
 		want: fileDescP3_20180814.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message_ChildMessage))),
 		want: fileDescP3_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP3_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message))),
 		want: fileDescP3_20180814.Messages().ByName("Message"),
 		want: fileDescP3_20180814.Messages().ByName("Message"),
 	}}...)
 	}}...)
 
 
 	fileDescP2_20181126 := mustLoadFileDesc(new(proto2_20181126.Message).Descriptor())
 	fileDescP2_20181126 := mustLoadFileDesc(new(proto2_20181126.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20181126.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20181126.SiblingEnum(0))),
 		want: fileDescP2_20181126.Enums().ByName("SiblingEnum"),
 		want: fileDescP2_20181126.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto2_20181126.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto2_20181126.Message_ChildEnum(0))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.SiblingMessage))),
 		want: fileDescP2_20181126.Messages().ByName("SiblingMessage"),
 		want: fileDescP2_20181126.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ChildMessage))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message))),
 		want: fileDescP2_20181126.Messages().ByName("Message"),
 		want: fileDescP2_20181126.Messages().ByName("Message"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_NamedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_NamedGroup))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("NamedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_OptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_OptionalGroup))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_RequiredGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_RequiredGroup))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_RepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_RepeatedGroup))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_OneofGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_OneofGroup))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("OneofGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ExtensionOptionalGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ExtensionOptionalGroup))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ExtensionRepeatedGroup))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ExtensionRepeatedGroup))),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 		want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
 	}}...)
 	}}...)
 
 
 	fileDescP3_20181126 := mustLoadFileDesc(new(proto3_20181126.Message).Descriptor())
 	fileDescP3_20181126 := mustLoadFileDesc(new(proto3_20181126.Message).Descriptor())
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
 	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20181126.SiblingEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20181126.SiblingEnum(0))),
 		want: fileDescP3_20181126.Enums().ByName("SiblingEnum"),
 		want: fileDescP3_20181126.Enums().ByName("SiblingEnum"),
 	}, {
 	}, {
-		got:  loadEnumDesc(reflect.TypeOf(proto3_20181126.Message_ChildEnum(0))),
+		got:  legacy.LoadEnumDesc(reflect.TypeOf(proto3_20181126.Message_ChildEnum(0))),
 		want: fileDescP3_20181126.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 		want: fileDescP3_20181126.Messages().ByName("Message").Enums().ByName("ChildEnum"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20181126.SiblingMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20181126.SiblingMessage))),
 		want: fileDescP3_20181126.Messages().ByName("SiblingMessage"),
 		want: fileDescP3_20181126.Messages().ByName("SiblingMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20181126.Message_ChildMessage))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20181126.Message_ChildMessage))),
 		want: fileDescP3_20181126.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 		want: fileDescP3_20181126.Messages().ByName("Message").Messages().ByName("ChildMessage"),
 	}, {
 	}, {
-		got:  loadMessageDesc(reflect.TypeOf(new(proto3_20181126.Message))),
+		got:  legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20181126.Message))),
 		want: fileDescP3_20181126.Messages().ByName("Message"),
 		want: fileDescP3_20181126.Messages().ByName("Message"),
 	}}...)
 	}}...)
 
 

+ 7 - 5
internal/legacy/message.go

@@ -38,7 +38,7 @@ func loadMessageType(t reflect.Type) *pimpl.MessageType {
 	}
 	}
 
 
 	// Slow-path: derive message descriptor and initialize MessageType.
 	// Slow-path: derive message descriptor and initialize MessageType.
-	md := loadMessageDesc(t)
+	md := LoadMessageDesc(t)
 	mt := new(pimpl.MessageType)
 	mt := new(pimpl.MessageType)
 	mt.GoType = t
 	mt.GoType = t
 	mt.PBType = ptype.GoMessage(md, func(pref.MessageType) pref.Message {
 	mt.PBType = ptype.GoMessage(md, func(pref.MessageType) pref.Message {
@@ -54,9 +54,11 @@ func loadMessageType(t reflect.Type) *pimpl.MessageType {
 var messageDescLock sync.Mutex
 var messageDescLock sync.Mutex
 var messageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor
 var messageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor
 
 
-// loadMessageDesc returns an MessageDescriptor derived from the Go type,
+// LoadMessageDesc returns an MessageDescriptor derived from the Go type,
 // which must be a *struct kind and not implement the v2 API already.
 // which must be a *struct kind and not implement the v2 API already.
-func loadMessageDesc(t reflect.Type) pref.MessageDescriptor {
+//
+// This is exported for testing purposes.
+func LoadMessageDesc(t reflect.Type) pref.MessageDescriptor {
 	return messageDescSet{}.Load(t)
 	return messageDescSet{}.Load(t)
 }
 }
 
 
@@ -124,7 +126,7 @@ func (ms *messageDescSet) processMessage(t reflect.Type) pref.MessageDescriptor
 	}
 	}
 	if md, ok := mv.(messageV1); ok {
 	if md, ok := mv.(messageV1); ok {
 		b, idxs := md.Descriptor()
 		b, idxs := md.Descriptor()
-		fd := loadFileDesc(b)
+		fd := LoadFileDesc(b)
 
 
 		// Derive syntax.
 		// Derive syntax.
 		switch fd.GetSyntax() {
 		switch fd.GetSyntax() {
@@ -235,7 +237,7 @@ func (ms *messageDescSet) parseField(tag, tagKey, tagVal string, goType reflect.
 		if ev, ok := reflect.Zero(t).Interface().(pref.Enum); ok {
 		if ev, ok := reflect.Zero(t).Interface().(pref.Enum); ok {
 			f.EnumType = ev.Type()
 			f.EnumType = ev.Type()
 		} else {
 		} else {
-			f.EnumType = loadEnumDesc(t)
+			f.EnumType = LoadEnumDesc(t)
 		}
 		}
 	}
 	}
 	if f.MessageType == nil && (f.Kind == pref.MessageKind || f.Kind == pref.GroupKind) {
 	if f.MessageType == nil && (f.Kind == pref.MessageKind || f.Kind == pref.GroupKind) {

+ 8 - 92
internal/testprotos/conformance/conformance.pb.go

@@ -4,10 +4,9 @@
 package conformance_proto
 package conformance_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type WireFormat int32
 type WireFormat int32
@@ -123,7 +122,7 @@ func (m *FailureSet) ProtoReflect() protoreflect.Message {
 	return xxx_File_conformance_conformance_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_conformance_conformance_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *FailureSet) Reset()         { *m = FailureSet{} }
 func (m *FailureSet) Reset()         { *m = FailureSet{} }
-func (m *FailureSet) String() string { return proto.CompactTextString(m) }
+func (m *FailureSet) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FailureSet) ProtoMessage()    {}
 func (*FailureSet) ProtoMessage()    {}
 
 
 // Deprecated: Use FailureSet.ProtoReflect.Type instead.
 // Deprecated: Use FailureSet.ProtoReflect.Type instead.
@@ -131,24 +130,6 @@ func (*FailureSet) Descriptor() ([]byte, []int) {
 	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *FailureSet) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FailureSet.Unmarshal(m, b)
-}
-func (m *FailureSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FailureSet.Marshal(b, m, deterministic)
-}
-func (m *FailureSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FailureSet.Merge(m, src)
-}
-func (m *FailureSet) XXX_Size() int {
-	return xxx_messageInfo_FailureSet.Size(m)
-}
-func (m *FailureSet) XXX_DiscardUnknown() {
-	xxx_messageInfo_FailureSet.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FailureSet proto.InternalMessageInfo
-
 func (m *FailureSet) GetFailure() []string {
 func (m *FailureSet) GetFailure() []string {
 	if m != nil {
 	if m != nil {
 		return m.Failure
 		return m.Failure
@@ -198,7 +179,7 @@ func (m *ConformanceRequest) ProtoReflect() protoreflect.Message {
 	return xxx_File_conformance_conformance_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_conformance_conformance_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *ConformanceRequest) Reset()         { *m = ConformanceRequest{} }
 func (m *ConformanceRequest) Reset()         { *m = ConformanceRequest{} }
-func (m *ConformanceRequest) String() string { return proto.CompactTextString(m) }
+func (m *ConformanceRequest) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ConformanceRequest) ProtoMessage()    {}
 func (*ConformanceRequest) ProtoMessage()    {}
 
 
 // Deprecated: Use ConformanceRequest.ProtoReflect.Type instead.
 // Deprecated: Use ConformanceRequest.ProtoReflect.Type instead.
@@ -206,24 +187,6 @@ func (*ConformanceRequest) Descriptor() ([]byte, []int) {
 	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *ConformanceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ConformanceRequest.Unmarshal(m, b)
-}
-func (m *ConformanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ConformanceRequest.Marshal(b, m, deterministic)
-}
-func (m *ConformanceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConformanceRequest.Merge(m, src)
-}
-func (m *ConformanceRequest) XXX_Size() int {
-	return xxx_messageInfo_ConformanceRequest.Size(m)
-}
-func (m *ConformanceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConformanceRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConformanceRequest proto.InternalMessageInfo
-
 type isConformanceRequest_Payload interface {
 type isConformanceRequest_Payload interface {
 	isConformanceRequest_Payload()
 	isConformanceRequest_Payload()
 }
 }
@@ -368,7 +331,7 @@ func (m *ConformanceResponse) ProtoReflect() protoreflect.Message {
 	return xxx_File_conformance_conformance_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_conformance_conformance_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *ConformanceResponse) Reset()         { *m = ConformanceResponse{} }
 func (m *ConformanceResponse) Reset()         { *m = ConformanceResponse{} }
-func (m *ConformanceResponse) String() string { return proto.CompactTextString(m) }
+func (m *ConformanceResponse) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ConformanceResponse) ProtoMessage()    {}
 func (*ConformanceResponse) ProtoMessage()    {}
 
 
 // Deprecated: Use ConformanceResponse.ProtoReflect.Type instead.
 // Deprecated: Use ConformanceResponse.ProtoReflect.Type instead.
@@ -376,24 +339,6 @@ func (*ConformanceResponse) Descriptor() ([]byte, []int) {
 	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *ConformanceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ConformanceResponse.Unmarshal(m, b)
-}
-func (m *ConformanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ConformanceResponse.Marshal(b, m, deterministic)
-}
-func (m *ConformanceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConformanceResponse.Merge(m, src)
-}
-func (m *ConformanceResponse) XXX_Size() int {
-	return xxx_messageInfo_ConformanceResponse.Size(m)
-}
-func (m *ConformanceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConformanceResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConformanceResponse proto.InternalMessageInfo
-
 type isConformanceResponse_Result interface {
 type isConformanceResponse_Result interface {
 	isConformanceResponse_Result()
 	isConformanceResponse_Result()
 }
 }
@@ -536,7 +481,7 @@ func (m *JspbEncodingConfig) ProtoReflect() protoreflect.Message {
 	return xxx_File_conformance_conformance_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_conformance_conformance_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *JspbEncodingConfig) Reset()         { *m = JspbEncodingConfig{} }
 func (m *JspbEncodingConfig) Reset()         { *m = JspbEncodingConfig{} }
-func (m *JspbEncodingConfig) String() string { return proto.CompactTextString(m) }
+func (m *JspbEncodingConfig) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*JspbEncodingConfig) ProtoMessage()    {}
 func (*JspbEncodingConfig) ProtoMessage()    {}
 
 
 // Deprecated: Use JspbEncodingConfig.ProtoReflect.Type instead.
 // Deprecated: Use JspbEncodingConfig.ProtoReflect.Type instead.
@@ -544,24 +489,6 @@ func (*JspbEncodingConfig) Descriptor() ([]byte, []int) {
 	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{3}
 	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{3}
 }
 }
 
 
-func (m *JspbEncodingConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_JspbEncodingConfig.Unmarshal(m, b)
-}
-func (m *JspbEncodingConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_JspbEncodingConfig.Marshal(b, m, deterministic)
-}
-func (m *JspbEncodingConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_JspbEncodingConfig.Merge(m, src)
-}
-func (m *JspbEncodingConfig) XXX_Size() int {
-	return xxx_messageInfo_JspbEncodingConfig.Size(m)
-}
-func (m *JspbEncodingConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_JspbEncodingConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_JspbEncodingConfig proto.InternalMessageInfo
-
 func (m *JspbEncodingConfig) GetUseJspbArrayAnyFormat() bool {
 func (m *JspbEncodingConfig) GetUseJspbArrayAnyFormat() bool {
 	if m != nil {
 	if m != nil {
 		return m.UseJspbArrayAnyFormat
 		return m.UseJspbArrayAnyFormat
@@ -682,26 +609,15 @@ func xxx_File_conformance_conformance_proto_init() {
 	if File_conformance_conformance_proto != nil {
 	if File_conformance_conformance_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 4)
 	File_conformance_conformance_proto = protoimpl.FileBuilder{
 	File_conformance_conformance_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_conformance_conformance_proto_rawdesc,
 		RawDescriptor:      xxx_File_conformance_conformance_proto_rawdesc,
 		GoTypes:            xxx_File_conformance_conformance_proto_goTypes,
 		GoTypes:            xxx_File_conformance_conformance_proto_goTypes,
 		DependencyIndexes:  xxx_File_conformance_conformance_proto_depIdxs,
 		DependencyIndexes:  xxx_File_conformance_conformance_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_conformance_conformance_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_conformance_conformance_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_conformance_conformance_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_conformance_conformance_proto_goTypes[2:][:4]
-	for i, mt := range messageTypes {
-		xxx_File_conformance_conformance_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_conformance_conformance_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("conformance/conformance.proto", xxx_File_conformance_conformance_proto_rawdesc_gzipped)
-	proto.RegisterEnum("conformance.WireFormat", WireFormat_name, WireFormat_value)
-	proto.RegisterEnum("conformance.TestCategory", TestCategory_name, TestCategory_value)
-	proto.RegisterType((*FailureSet)(nil), "conformance.FailureSet")
-	proto.RegisterType((*ConformanceRequest)(nil), "conformance.ConformanceRequest")
-	proto.RegisterType((*ConformanceResponse)(nil), "conformance.ConformanceResponse")
-	proto.RegisterType((*JspbEncodingConfig)(nil), "conformance.JspbEncodingConfig")
 	xxx_File_conformance_conformance_proto_goTypes = nil
 	xxx_File_conformance_conformance_proto_goTypes = nil
 	xxx_File_conformance_conformance_proto_depIdxs = nil
 	xxx_File_conformance_conformance_proto_depIdxs = nil
 }
 }

+ 5 - 30
internal/testprotos/legacy/legacy.pb.go

@@ -4,7 +4,6 @@
 package legacy
 package legacy
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	proto2_v0_0 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5"
 	proto2_v0_0 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5"
 	proto2_v0_01 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5"
 	proto2_v0_01 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5"
 	proto2_v1_0 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152"
 	proto2_v1_0 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152"
@@ -18,8 +17,8 @@ import (
 	proto3_v1_2 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61"
 	proto3_v1_2 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61"
 	proto3_v1_21 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.1-20181126-8d0c54c1"
 	proto3_v1_21 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.1-20181126-8d0c54c1"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Legacy struct {
 type Legacy struct {
@@ -44,7 +43,7 @@ func (m *Legacy) ProtoReflect() protoreflect.Message {
 	return xxx_File_legacy_legacy_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_legacy_legacy_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Legacy) Reset()         { *m = Legacy{} }
 func (m *Legacy) Reset()         { *m = Legacy{} }
-func (m *Legacy) String() string { return proto.CompactTextString(m) }
+func (m *Legacy) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Legacy) ProtoMessage()    {}
 func (*Legacy) ProtoMessage()    {}
 
 
 // Deprecated: Use Legacy.ProtoReflect.Type instead.
 // Deprecated: Use Legacy.ProtoReflect.Type instead.
@@ -52,24 +51,6 @@ func (*Legacy) Descriptor() ([]byte, []int) {
 	return xxx_File_legacy_legacy_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_legacy_legacy_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Legacy) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Legacy.Unmarshal(m, b)
-}
-func (m *Legacy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Legacy.Marshal(b, m, deterministic)
-}
-func (m *Legacy) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Legacy.Merge(m, src)
-}
-func (m *Legacy) XXX_Size() int {
-	return xxx_messageInfo_Legacy.Size(m)
-}
-func (m *Legacy) XXX_DiscardUnknown() {
-	xxx_messageInfo_Legacy.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Legacy proto.InternalMessageInfo
-
 func (m *Legacy) GetF1() *proto2_v0_0.Message {
 func (m *Legacy) GetF1() *proto2_v0_0.Message {
 	if m != nil {
 	if m != nil {
 		return m.F1
 		return m.F1
@@ -292,20 +273,14 @@ func xxx_File_legacy_legacy_proto_init() {
 	if File_legacy_legacy_proto != nil {
 	if File_legacy_legacy_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_legacy_legacy_proto = protoimpl.FileBuilder{
 	File_legacy_legacy_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_legacy_legacy_proto_rawdesc,
 		RawDescriptor:      xxx_File_legacy_legacy_proto_rawdesc,
 		GoTypes:            xxx_File_legacy_legacy_proto_goTypes,
 		GoTypes:            xxx_File_legacy_legacy_proto_goTypes,
 		DependencyIndexes:  xxx_File_legacy_legacy_proto_depIdxs,
 		DependencyIndexes:  xxx_File_legacy_legacy_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_legacy_legacy_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_legacy_legacy_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_legacy_legacy_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_legacy_legacy_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("legacy/legacy.proto", xxx_File_legacy_legacy_proto_rawdesc_gzipped)
-	proto.RegisterType((*Legacy)(nil), "google.golang.org.Legacy")
 	xxx_File_legacy_legacy_proto_goTypes = nil
 	xxx_File_legacy_legacy_proto_goTypes = nil
 	xxx_File_legacy_legacy_proto_depIdxs = nil
 	xxx_File_legacy_legacy_proto_depIdxs = nil
 }
 }

+ 3 - 3
internal/testprotos/test/ext.pb.go

@@ -4,8 +4,8 @@
 package test
 package test
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 )
 )
@@ -67,9 +67,9 @@ func xxx_File_test_ext_proto_init() {
 		DependencyIndexes:    xxx_File_test_ext_proto_depIdxs,
 		DependencyIndexes:    xxx_File_test_ext_proto_depIdxs,
 		LegacyExtensions:     xxx_File_test_ext_proto_extDescs,
 		LegacyExtensions:     xxx_File_test_ext_proto_extDescs,
 		ExtensionOutputTypes: extensionTypes,
 		ExtensionOutputTypes: extensionTypes,
+		FilesRegistry:        protoregistry.GlobalFiles,
+		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	proto.RegisterFile("test/ext.proto", xxx_File_test_ext_proto_rawdesc_gzipped)
-	proto.RegisterExtension(E_ForeignInt32Extension)
 	xxx_File_test_ext_proto_goTypes = nil
 	xxx_File_test_ext_proto_goTypes = nil
 	xxx_File_test_ext_proto_depIdxs = nil
 	xxx_File_test_ext_proto_depIdxs = nil
 }
 }

+ 17 - 328
internal/testprotos/test/test.pb.go

@@ -4,11 +4,10 @@
 package test
 package test
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type ForeignEnum int32
 type ForeignEnum int32
@@ -309,7 +308,7 @@ func (m *TestAllTypes) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *TestAllTypes) Reset()         { *m = TestAllTypes{} }
 func (m *TestAllTypes) Reset()         { *m = TestAllTypes{} }
-func (m *TestAllTypes) String() string { return proto.CompactTextString(m) }
+func (m *TestAllTypes) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*TestAllTypes) ProtoMessage()    {}
 func (*TestAllTypes) ProtoMessage()    {}
 
 
 // Deprecated: Use TestAllTypes.ProtoReflect.Type instead.
 // Deprecated: Use TestAllTypes.ProtoReflect.Type instead.
@@ -317,24 +316,6 @@ func (*TestAllTypes) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *TestAllTypes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestAllTypes.Unmarshal(m, b)
-}
-func (m *TestAllTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestAllTypes.Marshal(b, m, deterministic)
-}
-func (m *TestAllTypes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestAllTypes.Merge(m, src)
-}
-func (m *TestAllTypes) XXX_Size() int {
-	return xxx_messageInfo_TestAllTypes.Size(m)
-}
-func (m *TestAllTypes) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestAllTypes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestAllTypes proto.InternalMessageInfo
-
 const Default_TestAllTypes_DefaultInt32 int32 = 81
 const Default_TestAllTypes_DefaultInt32 int32 = 81
 const Default_TestAllTypes_DefaultInt64 int64 = 82
 const Default_TestAllTypes_DefaultInt64 int64 = 82
 const Default_TestAllTypes_DefaultUint32 uint32 = 83
 const Default_TestAllTypes_DefaultUint32 uint32 = 83
@@ -1059,7 +1040,7 @@ func (m *TestDeprecatedMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *TestDeprecatedMessage) Reset()         { *m = TestDeprecatedMessage{} }
 func (m *TestDeprecatedMessage) Reset()         { *m = TestDeprecatedMessage{} }
-func (m *TestDeprecatedMessage) String() string { return proto.CompactTextString(m) }
+func (m *TestDeprecatedMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*TestDeprecatedMessage) ProtoMessage()    {}
 func (*TestDeprecatedMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use TestDeprecatedMessage.ProtoReflect.Type instead.
 // Deprecated: Use TestDeprecatedMessage.ProtoReflect.Type instead.
@@ -1067,24 +1048,6 @@ func (*TestDeprecatedMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *TestDeprecatedMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestDeprecatedMessage.Unmarshal(m, b)
-}
-func (m *TestDeprecatedMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestDeprecatedMessage.Marshal(b, m, deterministic)
-}
-func (m *TestDeprecatedMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestDeprecatedMessage.Merge(m, src)
-}
-func (m *TestDeprecatedMessage) XXX_Size() int {
-	return xxx_messageInfo_TestDeprecatedMessage.Size(m)
-}
-func (m *TestDeprecatedMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestDeprecatedMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestDeprecatedMessage proto.InternalMessageInfo
-
 // Deprecated: Do not use.
 // Deprecated: Do not use.
 func (m *TestDeprecatedMessage) GetDeprecatedInt32() int32 {
 func (m *TestDeprecatedMessage) GetDeprecatedInt32() int32 {
 	if m != nil && m.DeprecatedInt32 != nil {
 	if m != nil && m.DeprecatedInt32 != nil {
@@ -1137,7 +1100,7 @@ func (m *ForeignMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *ForeignMessage) Reset()         { *m = ForeignMessage{} }
 func (m *ForeignMessage) Reset()         { *m = ForeignMessage{} }
-func (m *ForeignMessage) String() string { return proto.CompactTextString(m) }
+func (m *ForeignMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ForeignMessage) ProtoMessage()    {}
 func (*ForeignMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use ForeignMessage.ProtoReflect.Type instead.
 // Deprecated: Use ForeignMessage.ProtoReflect.Type instead.
@@ -1145,24 +1108,6 @@ func (*ForeignMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *ForeignMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ForeignMessage.Unmarshal(m, b)
-}
-func (m *ForeignMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ForeignMessage.Marshal(b, m, deterministic)
-}
-func (m *ForeignMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ForeignMessage.Merge(m, src)
-}
-func (m *ForeignMessage) XXX_Size() int {
-	return xxx_messageInfo_ForeignMessage.Size(m)
-}
-func (m *ForeignMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_ForeignMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ForeignMessage proto.InternalMessageInfo
-
 func (m *ForeignMessage) GetC() int32 {
 func (m *ForeignMessage) GetC() int32 {
 	if m != nil && m.C != nil {
 	if m != nil && m.C != nil {
 		return *m.C
 		return *m.C
@@ -1187,7 +1132,7 @@ func (m *TestReservedFields) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *TestReservedFields) Reset()         { *m = TestReservedFields{} }
 func (m *TestReservedFields) Reset()         { *m = TestReservedFields{} }
-func (m *TestReservedFields) String() string { return proto.CompactTextString(m) }
+func (m *TestReservedFields) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*TestReservedFields) ProtoMessage()    {}
 func (*TestReservedFields) ProtoMessage()    {}
 
 
 // Deprecated: Use TestReservedFields.ProtoReflect.Type instead.
 // Deprecated: Use TestReservedFields.ProtoReflect.Type instead.
@@ -1195,24 +1140,6 @@ func (*TestReservedFields) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{3}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{3}
 }
 }
 
 
-func (m *TestReservedFields) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestReservedFields.Unmarshal(m, b)
-}
-func (m *TestReservedFields) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestReservedFields.Marshal(b, m, deterministic)
-}
-func (m *TestReservedFields) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestReservedFields.Merge(m, src)
-}
-func (m *TestReservedFields) XXX_Size() int {
-	return xxx_messageInfo_TestReservedFields.Size(m)
-}
-func (m *TestReservedFields) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestReservedFields.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestReservedFields proto.InternalMessageInfo
-
 type TestAllExtensions struct {
 type TestAllExtensions struct {
 	XXX_NoUnkeyedLiteral   struct{}                    `json:"-"`
 	XXX_NoUnkeyedLiteral   struct{}                    `json:"-"`
 	XXX_InternalExtensions protoimpl.ExtensionFieldsV1 `json:"-"`
 	XXX_InternalExtensions protoimpl.ExtensionFieldsV1 `json:"-"`
@@ -1224,7 +1151,7 @@ func (m *TestAllExtensions) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[4].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[4].MessageOf(m)
 }
 }
 func (m *TestAllExtensions) Reset()         { *m = TestAllExtensions{} }
 func (m *TestAllExtensions) Reset()         { *m = TestAllExtensions{} }
-func (m *TestAllExtensions) String() string { return proto.CompactTextString(m) }
+func (m *TestAllExtensions) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*TestAllExtensions) ProtoMessage()    {}
 func (*TestAllExtensions) ProtoMessage()    {}
 
 
 // Deprecated: Use TestAllExtensions.ProtoReflect.Type instead.
 // Deprecated: Use TestAllExtensions.ProtoReflect.Type instead.
@@ -1241,24 +1168,6 @@ func (*TestAllExtensions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_TestAllExtensions
 	return extRange_TestAllExtensions
 }
 }
 
 
-func (m *TestAllExtensions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestAllExtensions.Unmarshal(m, b)
-}
-func (m *TestAllExtensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestAllExtensions.Marshal(b, m, deterministic)
-}
-func (m *TestAllExtensions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestAllExtensions.Merge(m, src)
-}
-func (m *TestAllExtensions) XXX_Size() int {
-	return xxx_messageInfo_TestAllExtensions.Size(m)
-}
-func (m *TestAllExtensions) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestAllExtensions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestAllExtensions proto.InternalMessageInfo
-
 type OptionalGroupExtension struct {
 type OptionalGroupExtension struct {
 	A                    *int32   `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
 	A                    *int32   `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1270,7 +1179,7 @@ func (m *OptionalGroupExtension) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[5].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[5].MessageOf(m)
 }
 }
 func (m *OptionalGroupExtension) Reset()         { *m = OptionalGroupExtension{} }
 func (m *OptionalGroupExtension) Reset()         { *m = OptionalGroupExtension{} }
-func (m *OptionalGroupExtension) String() string { return proto.CompactTextString(m) }
+func (m *OptionalGroupExtension) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*OptionalGroupExtension) ProtoMessage()    {}
 func (*OptionalGroupExtension) ProtoMessage()    {}
 
 
 // Deprecated: Use OptionalGroupExtension.ProtoReflect.Type instead.
 // Deprecated: Use OptionalGroupExtension.ProtoReflect.Type instead.
@@ -1278,24 +1187,6 @@ func (*OptionalGroupExtension) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{5}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{5}
 }
 }
 
 
-func (m *OptionalGroupExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OptionalGroupExtension.Unmarshal(m, b)
-}
-func (m *OptionalGroupExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OptionalGroupExtension.Marshal(b, m, deterministic)
-}
-func (m *OptionalGroupExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OptionalGroupExtension.Merge(m, src)
-}
-func (m *OptionalGroupExtension) XXX_Size() int {
-	return xxx_messageInfo_OptionalGroupExtension.Size(m)
-}
-func (m *OptionalGroupExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_OptionalGroupExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OptionalGroupExtension proto.InternalMessageInfo
-
 func (m *OptionalGroupExtension) GetA() int32 {
 func (m *OptionalGroupExtension) GetA() int32 {
 	if m != nil && m.A != nil {
 	if m != nil && m.A != nil {
 		return *m.A
 		return *m.A
@@ -1314,7 +1205,7 @@ func (m *RepeatedGroupExtension) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[6].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[6].MessageOf(m)
 }
 }
 func (m *RepeatedGroupExtension) Reset()         { *m = RepeatedGroupExtension{} }
 func (m *RepeatedGroupExtension) Reset()         { *m = RepeatedGroupExtension{} }
-func (m *RepeatedGroupExtension) String() string { return proto.CompactTextString(m) }
+func (m *RepeatedGroupExtension) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*RepeatedGroupExtension) ProtoMessage()    {}
 func (*RepeatedGroupExtension) ProtoMessage()    {}
 
 
 // Deprecated: Use RepeatedGroupExtension.ProtoReflect.Type instead.
 // Deprecated: Use RepeatedGroupExtension.ProtoReflect.Type instead.
@@ -1322,24 +1213,6 @@ func (*RepeatedGroupExtension) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{6}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{6}
 }
 }
 
 
-func (m *RepeatedGroupExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RepeatedGroupExtension.Unmarshal(m, b)
-}
-func (m *RepeatedGroupExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RepeatedGroupExtension.Marshal(b, m, deterministic)
-}
-func (m *RepeatedGroupExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RepeatedGroupExtension.Merge(m, src)
-}
-func (m *RepeatedGroupExtension) XXX_Size() int {
-	return xxx_messageInfo_RepeatedGroupExtension.Size(m)
-}
-func (m *RepeatedGroupExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_RepeatedGroupExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RepeatedGroupExtension proto.InternalMessageInfo
-
 func (m *RepeatedGroupExtension) GetA() int32 {
 func (m *RepeatedGroupExtension) GetA() int32 {
 	if m != nil && m.A != nil {
 	if m != nil && m.A != nil {
 		return *m.A
 		return *m.A
@@ -1357,7 +1230,7 @@ func (m *TestNestedExtension) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[7].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[7].MessageOf(m)
 }
 }
 func (m *TestNestedExtension) Reset()         { *m = TestNestedExtension{} }
 func (m *TestNestedExtension) Reset()         { *m = TestNestedExtension{} }
-func (m *TestNestedExtension) String() string { return proto.CompactTextString(m) }
+func (m *TestNestedExtension) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*TestNestedExtension) ProtoMessage()    {}
 func (*TestNestedExtension) ProtoMessage()    {}
 
 
 // Deprecated: Use TestNestedExtension.ProtoReflect.Type instead.
 // Deprecated: Use TestNestedExtension.ProtoReflect.Type instead.
@@ -1365,24 +1238,6 @@ func (*TestNestedExtension) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{7}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{7}
 }
 }
 
 
-func (m *TestNestedExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestNestedExtension.Unmarshal(m, b)
-}
-func (m *TestNestedExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestNestedExtension.Marshal(b, m, deterministic)
-}
-func (m *TestNestedExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestNestedExtension.Merge(m, src)
-}
-func (m *TestNestedExtension) XXX_Size() int {
-	return xxx_messageInfo_TestNestedExtension.Size(m)
-}
-func (m *TestNestedExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestNestedExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestNestedExtension proto.InternalMessageInfo
-
 // Test that RPC services work.
 // Test that RPC services work.
 type FooRequest struct {
 type FooRequest struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1394,7 +1249,7 @@ func (m *FooRequest) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[8].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[8].MessageOf(m)
 }
 }
 func (m *FooRequest) Reset()         { *m = FooRequest{} }
 func (m *FooRequest) Reset()         { *m = FooRequest{} }
-func (m *FooRequest) String() string { return proto.CompactTextString(m) }
+func (m *FooRequest) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FooRequest) ProtoMessage()    {}
 func (*FooRequest) ProtoMessage()    {}
 
 
 // Deprecated: Use FooRequest.ProtoReflect.Type instead.
 // Deprecated: Use FooRequest.ProtoReflect.Type instead.
@@ -1402,24 +1257,6 @@ func (*FooRequest) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{8}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{8}
 }
 }
 
 
-func (m *FooRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FooRequest.Unmarshal(m, b)
-}
-func (m *FooRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FooRequest.Marshal(b, m, deterministic)
-}
-func (m *FooRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FooRequest.Merge(m, src)
-}
-func (m *FooRequest) XXX_Size() int {
-	return xxx_messageInfo_FooRequest.Size(m)
-}
-func (m *FooRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_FooRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FooRequest proto.InternalMessageInfo
-
 type FooResponse struct {
 type FooResponse struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -1430,7 +1267,7 @@ func (m *FooResponse) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[9].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[9].MessageOf(m)
 }
 }
 func (m *FooResponse) Reset()         { *m = FooResponse{} }
 func (m *FooResponse) Reset()         { *m = FooResponse{} }
-func (m *FooResponse) String() string { return proto.CompactTextString(m) }
+func (m *FooResponse) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FooResponse) ProtoMessage()    {}
 func (*FooResponse) ProtoMessage()    {}
 
 
 // Deprecated: Use FooResponse.ProtoReflect.Type instead.
 // Deprecated: Use FooResponse.ProtoReflect.Type instead.
@@ -1438,24 +1275,6 @@ func (*FooResponse) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{9}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{9}
 }
 }
 
 
-func (m *FooResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FooResponse.Unmarshal(m, b)
-}
-func (m *FooResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FooResponse.Marshal(b, m, deterministic)
-}
-func (m *FooResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FooResponse.Merge(m, src)
-}
-func (m *FooResponse) XXX_Size() int {
-	return xxx_messageInfo_FooResponse.Size(m)
-}
-func (m *FooResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_FooResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FooResponse proto.InternalMessageInfo
-
 type TestAllTypes_NestedMessage struct {
 type TestAllTypes_NestedMessage struct {
 	A                    *int32        `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
 	A                    *int32        `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
 	Corecursive          *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
 	Corecursive          *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
@@ -1468,7 +1287,7 @@ func (m *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[10].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[10].MessageOf(m)
 }
 }
 func (m *TestAllTypes_NestedMessage) Reset()         { *m = TestAllTypes_NestedMessage{} }
 func (m *TestAllTypes_NestedMessage) Reset()         { *m = TestAllTypes_NestedMessage{} }
-func (m *TestAllTypes_NestedMessage) String() string { return proto.CompactTextString(m) }
+func (m *TestAllTypes_NestedMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*TestAllTypes_NestedMessage) ProtoMessage()    {}
 func (*TestAllTypes_NestedMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use TestAllTypes_NestedMessage.ProtoReflect.Type instead.
 // Deprecated: Use TestAllTypes_NestedMessage.ProtoReflect.Type instead.
@@ -1476,24 +1295,6 @@ func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 0}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 0}
 }
 }
 
 
-func (m *TestAllTypes_NestedMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestAllTypes_NestedMessage.Unmarshal(m, b)
-}
-func (m *TestAllTypes_NestedMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestAllTypes_NestedMessage.Marshal(b, m, deterministic)
-}
-func (m *TestAllTypes_NestedMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestAllTypes_NestedMessage.Merge(m, src)
-}
-func (m *TestAllTypes_NestedMessage) XXX_Size() int {
-	return xxx_messageInfo_TestAllTypes_NestedMessage.Size(m)
-}
-func (m *TestAllTypes_NestedMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestAllTypes_NestedMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestAllTypes_NestedMessage proto.InternalMessageInfo
-
 func (m *TestAllTypes_NestedMessage) GetA() int32 {
 func (m *TestAllTypes_NestedMessage) GetA() int32 {
 	if m != nil && m.A != nil {
 	if m != nil && m.A != nil {
 		return *m.A
 		return *m.A
@@ -1519,7 +1320,7 @@ func (m *TestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[11].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[11].MessageOf(m)
 }
 }
 func (m *TestAllTypes_OptionalGroup) Reset()         { *m = TestAllTypes_OptionalGroup{} }
 func (m *TestAllTypes_OptionalGroup) Reset()         { *m = TestAllTypes_OptionalGroup{} }
-func (m *TestAllTypes_OptionalGroup) String() string { return proto.CompactTextString(m) }
+func (m *TestAllTypes_OptionalGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*TestAllTypes_OptionalGroup) ProtoMessage()    {}
 func (*TestAllTypes_OptionalGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use TestAllTypes_OptionalGroup.ProtoReflect.Type instead.
 // Deprecated: Use TestAllTypes_OptionalGroup.ProtoReflect.Type instead.
@@ -1527,24 +1328,6 @@ func (*TestAllTypes_OptionalGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 1}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 1}
 }
 }
 
 
-func (m *TestAllTypes_OptionalGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestAllTypes_OptionalGroup.Unmarshal(m, b)
-}
-func (m *TestAllTypes_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestAllTypes_OptionalGroup.Marshal(b, m, deterministic)
-}
-func (m *TestAllTypes_OptionalGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestAllTypes_OptionalGroup.Merge(m, src)
-}
-func (m *TestAllTypes_OptionalGroup) XXX_Size() int {
-	return xxx_messageInfo_TestAllTypes_OptionalGroup.Size(m)
-}
-func (m *TestAllTypes_OptionalGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestAllTypes_OptionalGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestAllTypes_OptionalGroup proto.InternalMessageInfo
-
 func (m *TestAllTypes_OptionalGroup) GetA() int32 {
 func (m *TestAllTypes_OptionalGroup) GetA() int32 {
 	if m != nil && m.A != nil {
 	if m != nil && m.A != nil {
 		return *m.A
 		return *m.A
@@ -1563,7 +1346,7 @@ func (m *TestAllTypes_RepeatedGroup) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_proto_messageTypes[12].MessageOf(m)
 	return xxx_File_test_test_proto_messageTypes[12].MessageOf(m)
 }
 }
 func (m *TestAllTypes_RepeatedGroup) Reset()         { *m = TestAllTypes_RepeatedGroup{} }
 func (m *TestAllTypes_RepeatedGroup) Reset()         { *m = TestAllTypes_RepeatedGroup{} }
-func (m *TestAllTypes_RepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (m *TestAllTypes_RepeatedGroup) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*TestAllTypes_RepeatedGroup) ProtoMessage()    {}
 func (*TestAllTypes_RepeatedGroup) ProtoMessage()    {}
 
 
 // Deprecated: Use TestAllTypes_RepeatedGroup.ProtoReflect.Type instead.
 // Deprecated: Use TestAllTypes_RepeatedGroup.ProtoReflect.Type instead.
@@ -1571,24 +1354,6 @@ func (*TestAllTypes_RepeatedGroup) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 2}
 	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 2}
 }
 }
 
 
-func (m *TestAllTypes_RepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestAllTypes_RepeatedGroup.Unmarshal(m, b)
-}
-func (m *TestAllTypes_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestAllTypes_RepeatedGroup.Marshal(b, m, deterministic)
-}
-func (m *TestAllTypes_RepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestAllTypes_RepeatedGroup.Merge(m, src)
-}
-func (m *TestAllTypes_RepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_TestAllTypes_RepeatedGroup.Size(m)
-}
-func (m *TestAllTypes_RepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestAllTypes_RepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestAllTypes_RepeatedGroup proto.InternalMessageInfo
-
 func (m *TestAllTypes_RepeatedGroup) GetA() int32 {
 func (m *TestAllTypes_RepeatedGroup) GetA() int32 {
 	if m != nil && m.A != nil {
 	if m != nil && m.A != nil {
 		return *m.A
 		return *m.A
@@ -2909,7 +2674,6 @@ func xxx_File_test_test_proto_init() {
 	xxx_File_test_test_import_proto_init()
 	xxx_File_test_test_import_proto_init()
 	xxx_File_test_test_public_proto_init()
 	xxx_File_test_test_public_proto_init()
 	xxx_File_test_test_weak_proto_init()
 	xxx_File_test_test_weak_proto_init()
-	messageTypes := make([]protoreflect.MessageType, 30)
 	extensionTypes := make([]protoreflect.ExtensionType, 37)
 	extensionTypes := make([]protoreflect.ExtensionType, 37)
 	File_test_test_proto = protoimpl.FileBuilder{
 	File_test_test_proto = protoimpl.FileBuilder{
 		RawDescriptor:        xxx_File_test_test_proto_rawdesc,
 		RawDescriptor:        xxx_File_test_test_proto_rawdesc,
@@ -2917,86 +2681,11 @@ func xxx_File_test_test_proto_init() {
 		DependencyIndexes:    xxx_File_test_test_proto_depIdxs,
 		DependencyIndexes:    xxx_File_test_test_proto_depIdxs,
 		LegacyExtensions:     xxx_File_test_test_proto_extDescs,
 		LegacyExtensions:     xxx_File_test_test_proto_extDescs,
 		EnumOutputTypes:      xxx_File_test_test_proto_enumTypes,
 		EnumOutputTypes:      xxx_File_test_test_proto_enumTypes,
-		MessageOutputTypes:   messageTypes,
+		MessageOutputTypes:   xxx_File_test_test_proto_messageTypes,
 		ExtensionOutputTypes: extensionTypes,
 		ExtensionOutputTypes: extensionTypes,
+		FilesRegistry:        protoregistry.GlobalFiles,
+		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_test_test_proto_goTypes[4:][:30]
-	for i, mt := range messageTypes {
-		xxx_File_test_test_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_test_test_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("test/test.proto", xxx_File_test_test_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.proto.test.ForeignEnum", ForeignEnum_name, ForeignEnum_value)
-	proto.RegisterEnum("goproto.proto.test.TestReservedEnumFields", TestReservedEnumFields_name, TestReservedEnumFields_value)
-	proto.RegisterEnum("goproto.proto.test.TestAllTypes_NestedEnum", TestAllTypes_NestedEnum_name, TestAllTypes_NestedEnum_value)
-	proto.RegisterEnum("goproto.proto.test.TestDeprecatedMessage_DeprecatedEnum", TestDeprecatedMessage_DeprecatedEnum_name, TestDeprecatedMessage_DeprecatedEnum_value)
-	proto.RegisterType((*TestAllTypes)(nil), "goproto.proto.test.TestAllTypes")
-	proto.RegisterMapType((map[bool]bool)(nil), "goproto.proto.test.TestAllTypes.MapBoolBoolEntry")
-	proto.RegisterMapType((map[uint32]uint32)(nil), "goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry")
-	proto.RegisterMapType((map[uint64]uint64)(nil), "goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry")
-	proto.RegisterMapType((map[int32]float64)(nil), "goproto.proto.test.TestAllTypes.MapInt32DoubleEntry")
-	proto.RegisterMapType((map[int32]float32)(nil), "goproto.proto.test.TestAllTypes.MapInt32FloatEntry")
-	proto.RegisterMapType((map[int32]int32)(nil), "goproto.proto.test.TestAllTypes.MapInt32Int32Entry")
-	proto.RegisterMapType((map[int64]int64)(nil), "goproto.proto.test.TestAllTypes.MapInt64Int64Entry")
-	proto.RegisterMapType((map[int32]int32)(nil), "goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry")
-	proto.RegisterMapType((map[int64]int64)(nil), "goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry")
-	proto.RegisterMapType((map[int32]int32)(nil), "goproto.proto.test.TestAllTypes.MapSint32Sint32Entry")
-	proto.RegisterMapType((map[int64]int64)(nil), "goproto.proto.test.TestAllTypes.MapSint64Sint64Entry")
-	proto.RegisterMapType((map[string][]byte)(nil), "goproto.proto.test.TestAllTypes.MapStringBytesEntry")
-	proto.RegisterMapType((map[string]TestAllTypes_NestedEnum)(nil), "goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry")
-	proto.RegisterMapType((map[string]*TestAllTypes_NestedMessage)(nil), "goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry")
-	proto.RegisterMapType((map[string]string)(nil), "goproto.proto.test.TestAllTypes.MapStringStringEntry")
-	proto.RegisterMapType((map[uint32]uint32)(nil), "goproto.proto.test.TestAllTypes.MapUint32Uint32Entry")
-	proto.RegisterMapType((map[uint64]uint64)(nil), "goproto.proto.test.TestAllTypes.MapUint64Uint64Entry")
-	proto.RegisterType((*TestDeprecatedMessage)(nil), "goproto.proto.test.TestDeprecatedMessage")
-	proto.RegisterType((*ForeignMessage)(nil), "goproto.proto.test.ForeignMessage")
-	proto.RegisterType((*TestReservedFields)(nil), "goproto.proto.test.TestReservedFields")
-	proto.RegisterType((*TestAllExtensions)(nil), "goproto.proto.test.TestAllExtensions")
-	proto.RegisterType((*OptionalGroupExtension)(nil), "goproto.proto.test.OptionalGroup_extension")
-	proto.RegisterType((*RepeatedGroupExtension)(nil), "goproto.proto.test.RepeatedGroup_extension")
-	proto.RegisterType((*TestNestedExtension)(nil), "goproto.proto.test.TestNestedExtension")
-	proto.RegisterType((*FooRequest)(nil), "goproto.proto.test.FooRequest")
-	proto.RegisterType((*FooResponse)(nil), "goproto.proto.test.FooResponse")
-	proto.RegisterType((*TestAllTypes_NestedMessage)(nil), "goproto.proto.test.TestAllTypes.NestedMessage")
-	proto.RegisterType((*TestAllTypes_OptionalGroup)(nil), "goproto.proto.test.TestAllTypes.OptionalGroup")
-	proto.RegisterType((*TestAllTypes_RepeatedGroup)(nil), "goproto.proto.test.TestAllTypes.RepeatedGroup")
-	proto.RegisterExtension(E_OptionalInt32Extension)
-	proto.RegisterExtension(E_OptionalInt64Extension)
-	proto.RegisterExtension(E_OptionalUint32Extension)
-	proto.RegisterExtension(E_OptionalUint64Extension)
-	proto.RegisterExtension(E_OptionalSint32Extension)
-	proto.RegisterExtension(E_OptionalSint64Extension)
-	proto.RegisterExtension(E_OptionalFixed32Extension)
-	proto.RegisterExtension(E_OptionalFixed64Extension)
-	proto.RegisterExtension(E_OptionalSfixed32Extension)
-	proto.RegisterExtension(E_OptionalSfixed64Extension)
-	proto.RegisterExtension(E_OptionalFloatExtension)
-	proto.RegisterExtension(E_OptionalDoubleExtension)
-	proto.RegisterExtension(E_OptionalBoolExtension)
-	proto.RegisterExtension(E_OptionalStringExtension)
-	proto.RegisterExtension(E_OptionalBytesExtension)
-	proto.RegisterExtension(E_OptionalgroupExtension)
-	proto.RegisterExtension(E_OptionalNestedMessageExtension)
-	proto.RegisterExtension(E_OptionalNestedEnumExtension)
-	proto.RegisterExtension(E_RepeatedInt32Extension)
-	proto.RegisterExtension(E_RepeatedInt64Extension)
-	proto.RegisterExtension(E_RepeatedUint32Extension)
-	proto.RegisterExtension(E_RepeatedUint64Extension)
-	proto.RegisterExtension(E_RepeatedSint32Extension)
-	proto.RegisterExtension(E_RepeatedSint64Extension)
-	proto.RegisterExtension(E_RepeatedFixed32Extension)
-	proto.RegisterExtension(E_RepeatedFixed64Extension)
-	proto.RegisterExtension(E_RepeatedSfixed32Extension)
-	proto.RegisterExtension(E_RepeatedSfixed64Extension)
-	proto.RegisterExtension(E_RepeatedFloatExtension)
-	proto.RegisterExtension(E_RepeatedDoubleExtension)
-	proto.RegisterExtension(E_RepeatedBoolExtension)
-	proto.RegisterExtension(E_RepeatedStringExtension)
-	proto.RegisterExtension(E_RepeatedBytesExtension)
-	proto.RegisterExtension(E_RepeatedgroupExtension)
-	proto.RegisterExtension(E_RepeatedNestedMessageExtension)
-	proto.RegisterExtension(E_RepeatedNestedEnumExtension)
-	proto.RegisterExtension(E_TestNestedExtension_NestedStringExtension)
 	xxx_File_test_test_proto_goTypes = nil
 	xxx_File_test_test_proto_goTypes = nil
 	xxx_File_test_test_proto_depIdxs = nil
 	xxx_File_test_test_proto_depIdxs = nil
 }
 }

+ 5 - 31
internal/testprotos/test/test_import.pb.go

@@ -4,10 +4,9 @@
 package test
 package test
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type ImportEnum int32
 type ImportEnum int32
@@ -66,7 +65,7 @@ func (m *ImportMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_import_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_test_test_import_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *ImportMessage) Reset()         { *m = ImportMessage{} }
 func (m *ImportMessage) Reset()         { *m = ImportMessage{} }
-func (m *ImportMessage) String() string { return proto.CompactTextString(m) }
+func (m *ImportMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ImportMessage) ProtoMessage()    {}
 func (*ImportMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use ImportMessage.ProtoReflect.Type instead.
 // Deprecated: Use ImportMessage.ProtoReflect.Type instead.
@@ -74,24 +73,6 @@ func (*ImportMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_import_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_test_test_import_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *ImportMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImportMessage.Unmarshal(m, b)
-}
-func (m *ImportMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImportMessage.Marshal(b, m, deterministic)
-}
-func (m *ImportMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImportMessage.Merge(m, src)
-}
-func (m *ImportMessage) XXX_Size() int {
-	return xxx_messageInfo_ImportMessage.Size(m)
-}
-func (m *ImportMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImportMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImportMessage proto.InternalMessageInfo
-
 var xxx_File_test_test_import_proto_rawdesc = []byte{
 var xxx_File_test_test_import_proto_rawdesc = []byte{
 	// 150 bytes of the wire-encoded FileDescriptorProto
 	// 150 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f,
 	0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f,
@@ -125,22 +106,15 @@ func xxx_File_test_test_import_proto_init() {
 	if File_test_test_import_proto != nil {
 	if File_test_test_import_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_test_test_import_proto = protoimpl.FileBuilder{
 	File_test_test_import_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_test_test_import_proto_rawdesc,
 		RawDescriptor:      xxx_File_test_test_import_proto_rawdesc,
 		GoTypes:            xxx_File_test_test_import_proto_goTypes,
 		GoTypes:            xxx_File_test_test_import_proto_goTypes,
 		DependencyIndexes:  xxx_File_test_test_import_proto_depIdxs,
 		DependencyIndexes:  xxx_File_test_test_import_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_test_test_import_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_test_test_import_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_test_test_import_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_test_test_import_proto_goTypes[1:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_test_test_import_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_test_test_import_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("test/test_import.proto", xxx_File_test_test_import_proto_rawdesc_gzipped)
-	proto.RegisterEnum("goproto.proto.test.ImportEnum", ImportEnum_name, ImportEnum_value)
-	proto.RegisterType((*ImportMessage)(nil), "goproto.proto.test.ImportMessage")
 	xxx_File_test_test_import_proto_goTypes = nil
 	xxx_File_test_test_import_proto_goTypes = nil
 	xxx_File_test_test_import_proto_depIdxs = nil
 	xxx_File_test_test_import_proto_depIdxs = nil
 }
 }

+ 5 - 30
internal/testprotos/test/test_public.pb.go

@@ -4,10 +4,9 @@
 package test
 package test
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type PublicImportMessage struct {
 type PublicImportMessage struct {
@@ -20,7 +19,7 @@ func (m *PublicImportMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_public_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_test_test_public_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *PublicImportMessage) Reset()         { *m = PublicImportMessage{} }
 func (m *PublicImportMessage) Reset()         { *m = PublicImportMessage{} }
-func (m *PublicImportMessage) String() string { return proto.CompactTextString(m) }
+func (m *PublicImportMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*PublicImportMessage) ProtoMessage()    {}
 func (*PublicImportMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use PublicImportMessage.ProtoReflect.Type instead.
 // Deprecated: Use PublicImportMessage.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*PublicImportMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_public_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_test_test_public_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *PublicImportMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PublicImportMessage.Unmarshal(m, b)
-}
-func (m *PublicImportMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PublicImportMessage.Marshal(b, m, deterministic)
-}
-func (m *PublicImportMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PublicImportMessage.Merge(m, src)
-}
-func (m *PublicImportMessage) XXX_Size() int {
-	return xxx_messageInfo_PublicImportMessage.Size(m)
-}
-func (m *PublicImportMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_PublicImportMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PublicImportMessage proto.InternalMessageInfo
-
 var xxx_File_test_test_public_proto_rawdesc = []byte{
 var xxx_File_test_test_public_proto_rawdesc = []byte{
 	// 125 bytes of the wire-encoded FileDescriptorProto
 	// 125 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c,
 	0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c,
@@ -75,20 +56,14 @@ func xxx_File_test_test_public_proto_init() {
 	if File_test_test_public_proto != nil {
 	if File_test_test_public_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_test_test_public_proto = protoimpl.FileBuilder{
 	File_test_test_public_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_test_test_public_proto_rawdesc,
 		RawDescriptor:      xxx_File_test_test_public_proto_rawdesc,
 		GoTypes:            xxx_File_test_test_public_proto_goTypes,
 		GoTypes:            xxx_File_test_test_public_proto_goTypes,
 		DependencyIndexes:  xxx_File_test_test_public_proto_depIdxs,
 		DependencyIndexes:  xxx_File_test_test_public_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_test_test_public_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_test_test_public_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_test_test_public_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_test_test_public_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("test/test_public.proto", xxx_File_test_test_public_proto_rawdesc_gzipped)
-	proto.RegisterType((*PublicImportMessage)(nil), "goproto.proto.test.PublicImportMessage")
 	xxx_File_test_test_public_proto_goTypes = nil
 	xxx_File_test_test_public_proto_goTypes = nil
 	xxx_File_test_test_public_proto_depIdxs = nil
 	xxx_File_test_test_public_proto_depIdxs = nil
 }
 }

+ 5 - 30
internal/testprotos/test/test_weak.pb.go

@@ -4,10 +4,9 @@
 package test
 package test
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type WeakImportMessage struct {
 type WeakImportMessage struct {
@@ -20,7 +19,7 @@ func (m *WeakImportMessage) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_test_weak_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_test_test_weak_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *WeakImportMessage) Reset()         { *m = WeakImportMessage{} }
 func (m *WeakImportMessage) Reset()         { *m = WeakImportMessage{} }
-func (m *WeakImportMessage) String() string { return proto.CompactTextString(m) }
+func (m *WeakImportMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*WeakImportMessage) ProtoMessage()    {}
 func (*WeakImportMessage) ProtoMessage()    {}
 
 
 // Deprecated: Use WeakImportMessage.ProtoReflect.Type instead.
 // Deprecated: Use WeakImportMessage.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@ func (*WeakImportMessage) Descriptor() ([]byte, []int) {
 	return xxx_File_test_test_weak_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_test_test_weak_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *WeakImportMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_WeakImportMessage.Unmarshal(m, b)
-}
-func (m *WeakImportMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_WeakImportMessage.Marshal(b, m, deterministic)
-}
-func (m *WeakImportMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_WeakImportMessage.Merge(m, src)
-}
-func (m *WeakImportMessage) XXX_Size() int {
-	return xxx_messageInfo_WeakImportMessage.Size(m)
-}
-func (m *WeakImportMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_WeakImportMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_WeakImportMessage proto.InternalMessageInfo
-
 var xxx_File_test_test_weak_proto_rawdesc = []byte{
 var xxx_File_test_test_weak_proto_rawdesc = []byte{
 	// 121 bytes of the wire-encoded FileDescriptorProto
 	// 121 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x14, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x61, 0x6b,
 	0x0a, 0x14, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x61, 0x6b,
@@ -75,20 +56,14 @@ func xxx_File_test_test_weak_proto_init() {
 	if File_test_test_weak_proto != nil {
 	if File_test_test_weak_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_test_test_weak_proto = protoimpl.FileBuilder{
 	File_test_test_weak_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_test_test_weak_proto_rawdesc,
 		RawDescriptor:      xxx_File_test_test_weak_proto_rawdesc,
 		GoTypes:            xxx_File_test_test_weak_proto_goTypes,
 		GoTypes:            xxx_File_test_test_weak_proto_goTypes,
 		DependencyIndexes:  xxx_File_test_test_weak_proto_depIdxs,
 		DependencyIndexes:  xxx_File_test_test_weak_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_test_test_weak_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_test_test_weak_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_test_test_weak_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_test_test_weak_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("test/test_weak.proto", xxx_File_test_test_weak_proto_rawdesc_gzipped)
-	proto.RegisterType((*WeakImportMessage)(nil), "goproto.proto.test.WeakImportMessage")
 	xxx_File_test_test_weak_proto_goTypes = nil
 	xxx_File_test_test_weak_proto_goTypes = nil
 	xxx_File_test_test_weak_proto_depIdxs = nil
 	xxx_File_test_test_weak_proto_depIdxs = nil
 }
 }

+ 8 - 99
reflect/protoregistry/testprotos/test.pb.go

@@ -4,11 +4,10 @@
 package testprotos
 package testprotos
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type Enum1 int32
 type Enum1 int32
@@ -160,7 +159,7 @@ func (m *Message1) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_test_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Message1) Reset()         { *m = Message1{} }
 func (m *Message1) Reset()         { *m = Message1{} }
-func (m *Message1) String() string { return proto.CompactTextString(m) }
+func (m *Message1) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message1) ProtoMessage()    {}
 func (*Message1) ProtoMessage()    {}
 
 
 // Deprecated: Use Message1.ProtoReflect.Type instead.
 // Deprecated: Use Message1.ProtoReflect.Type instead.
@@ -177,24 +176,6 @@ func (*Message1) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_Message1
 	return extRange_Message1
 }
 }
 
 
-func (m *Message1) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message1.Unmarshal(m, b)
-}
-func (m *Message1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message1.Marshal(b, m, deterministic)
-}
-func (m *Message1) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message1.Merge(m, src)
-}
-func (m *Message1) XXX_Size() int {
-	return xxx_messageInfo_Message1.Size(m)
-}
-func (m *Message1) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message1.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message1 proto.InternalMessageInfo
-
 type Message2 struct {
 type Message2 struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -205,7 +186,7 @@ func (m *Message2) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_test_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Message2) Reset()         { *m = Message2{} }
 func (m *Message2) Reset()         { *m = Message2{} }
-func (m *Message2) String() string { return proto.CompactTextString(m) }
+func (m *Message2) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message2) ProtoMessage()    {}
 func (*Message2) ProtoMessage()    {}
 
 
 // Deprecated: Use Message2.ProtoReflect.Type instead.
 // Deprecated: Use Message2.ProtoReflect.Type instead.
@@ -213,24 +194,6 @@ func (*Message2) Descriptor() ([]byte, []int) {
 	return xxx_File_test_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_test_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *Message2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message2.Unmarshal(m, b)
-}
-func (m *Message2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message2.Marshal(b, m, deterministic)
-}
-func (m *Message2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message2.Merge(m, src)
-}
-func (m *Message2) XXX_Size() int {
-	return xxx_messageInfo_Message2.Size(m)
-}
-func (m *Message2) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message2 proto.InternalMessageInfo
-
 type Message3 struct {
 type Message3 struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -241,7 +204,7 @@ func (m *Message3) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_test_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *Message3) Reset()         { *m = Message3{} }
 func (m *Message3) Reset()         { *m = Message3{} }
-func (m *Message3) String() string { return proto.CompactTextString(m) }
+func (m *Message3) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message3) ProtoMessage()    {}
 func (*Message3) ProtoMessage()    {}
 
 
 // Deprecated: Use Message3.ProtoReflect.Type instead.
 // Deprecated: Use Message3.ProtoReflect.Type instead.
@@ -249,24 +212,6 @@ func (*Message3) Descriptor() ([]byte, []int) {
 	return xxx_File_test_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_test_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *Message3) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message3.Unmarshal(m, b)
-}
-func (m *Message3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message3.Marshal(b, m, deterministic)
-}
-func (m *Message3) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message3.Merge(m, src)
-}
-func (m *Message3) XXX_Size() int {
-	return xxx_messageInfo_Message3.Size(m)
-}
-func (m *Message3) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message3.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message3 proto.InternalMessageInfo
-
 type Message4 struct {
 type Message4 struct {
 	BoolField            *bool    `protobuf:"varint,30,opt,name=bool_field,json=boolField" json:"bool_field,omitempty"`
 	BoolField            *bool    `protobuf:"varint,30,opt,name=bool_field,json=boolField" json:"bool_field,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -278,7 +223,7 @@ func (m *Message4) ProtoReflect() protoreflect.Message {
 	return xxx_File_test_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_test_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *Message4) Reset()         { *m = Message4{} }
 func (m *Message4) Reset()         { *m = Message4{} }
-func (m *Message4) String() string { return proto.CompactTextString(m) }
+func (m *Message4) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Message4) ProtoMessage()    {}
 func (*Message4) ProtoMessage()    {}
 
 
 // Deprecated: Use Message4.ProtoReflect.Type instead.
 // Deprecated: Use Message4.ProtoReflect.Type instead.
@@ -286,24 +231,6 @@ func (*Message4) Descriptor() ([]byte, []int) {
 	return xxx_File_test_proto_rawdesc_gzipped, []int{3}
 	return xxx_File_test_proto_rawdesc_gzipped, []int{3}
 }
 }
 
 
-func (m *Message4) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message4.Unmarshal(m, b)
-}
-func (m *Message4) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message4.Marshal(b, m, deterministic)
-}
-func (m *Message4) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message4.Merge(m, src)
-}
-func (m *Message4) XXX_Size() int {
-	return xxx_messageInfo_Message4.Size(m)
-}
-func (m *Message4) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message4.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message4 proto.InternalMessageInfo
-
 func (m *Message4) GetBoolField() bool {
 func (m *Message4) GetBoolField() bool {
 	if m != nil && m.BoolField != nil {
 	if m != nil && m.BoolField != nil {
 		return *m.BoolField
 		return *m.BoolField
@@ -460,7 +387,6 @@ func xxx_File_test_proto_init() {
 	if File_test_proto != nil {
 	if File_test_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 4)
 	extensionTypes := make([]protoreflect.ExtensionType, 6)
 	extensionTypes := make([]protoreflect.ExtensionType, 6)
 	File_test_proto = protoimpl.FileBuilder{
 	File_test_proto = protoimpl.FileBuilder{
 		RawDescriptor:        xxx_File_test_proto_rawdesc,
 		RawDescriptor:        xxx_File_test_proto_rawdesc,
@@ -468,28 +394,11 @@ func xxx_File_test_proto_init() {
 		DependencyIndexes:    xxx_File_test_proto_depIdxs,
 		DependencyIndexes:    xxx_File_test_proto_depIdxs,
 		LegacyExtensions:     xxx_File_test_proto_extDescs,
 		LegacyExtensions:     xxx_File_test_proto_extDescs,
 		EnumOutputTypes:      xxx_File_test_proto_enumTypes,
 		EnumOutputTypes:      xxx_File_test_proto_enumTypes,
-		MessageOutputTypes:   messageTypes,
+		MessageOutputTypes:   xxx_File_test_proto_messageTypes,
 		ExtensionOutputTypes: extensionTypes,
 		ExtensionOutputTypes: extensionTypes,
+		FilesRegistry:        protoregistry.GlobalFiles,
+		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_test_proto_goTypes[3:][:4]
-	for i, mt := range messageTypes {
-		xxx_File_test_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_test_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("test.proto", xxx_File_test_proto_rawdesc_gzipped)
-	proto.RegisterEnum("testprotos.Enum1", Enum1_name, Enum1_value)
-	proto.RegisterEnum("testprotos.Enum2", Enum2_name, Enum2_value)
-	proto.RegisterEnum("testprotos.Enum3", Enum3_name, Enum3_value)
-	proto.RegisterType((*Message1)(nil), "testprotos.Message1")
-	proto.RegisterType((*Message2)(nil), "testprotos.Message2")
-	proto.RegisterType((*Message3)(nil), "testprotos.Message3")
-	proto.RegisterType((*Message4)(nil), "testprotos.Message4")
-	proto.RegisterExtension(E_StringField)
-	proto.RegisterExtension(E_EnumField)
-	proto.RegisterExtension(E_MessageField)
-	proto.RegisterExtension(E_Message4_MessageField)
-	proto.RegisterExtension(E_Message4_EnumField)
-	proto.RegisterExtension(E_Message4_StringField)
 	xxx_File_test_proto_goTypes = nil
 	xxx_File_test_proto_goTypes = nil
 	xxx_File_test_proto_depIdxs = nil
 	xxx_File_test_proto_depIdxs = nil
 }
 }

+ 1 - 8
types/descriptor/descriptor.pb.go

@@ -9,7 +9,6 @@ import (
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 type FieldDescriptorProto_Type int32
 type FieldDescriptorProto_Type int32
@@ -2958,21 +2957,15 @@ func xxx_File_google_protobuf_descriptor_proto_init() {
 	if File_google_protobuf_descriptor_proto != nil {
 	if File_google_protobuf_descriptor_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 27)
 	File_google_protobuf_descriptor_proto = protoimpl.FileBuilder{
 	File_google_protobuf_descriptor_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_descriptor_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_descriptor_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_descriptor_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_descriptor_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_descriptor_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_descriptor_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_google_protobuf_descriptor_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_google_protobuf_descriptor_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_descriptor_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_descriptor_proto_goTypes[6:][:27]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_descriptor_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_descriptor_proto_messageTypes[i].PBType = mt
-	}
 	prototype.X.RegisterExtensionRangeOptions((*ExtensionRangeOptions)(nil))
 	prototype.X.RegisterExtensionRangeOptions((*ExtensionRangeOptions)(nil))
 	prototype.X.RegisterFileOptions((*FileOptions)(nil))
 	prototype.X.RegisterFileOptions((*FileOptions)(nil))
 	prototype.X.RegisterMessageOptions((*MessageOptions)(nil))
 	prototype.X.RegisterMessageOptions((*MessageOptions)(nil))

+ 5 - 30
types/known/any.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // `Any` contains an arbitrary serialized protocol buffer message along with a
 // `Any` contains an arbitrary serialized protocol buffer message along with a
@@ -131,7 +130,7 @@ func (m *Any) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_any_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_any_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Any) Reset()         { *m = Any{} }
 func (m *Any) Reset()         { *m = Any{} }
-func (m *Any) String() string { return proto.CompactTextString(m) }
+func (m *Any) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Any) ProtoMessage()    {}
 func (*Any) ProtoMessage()    {}
 
 
 // Deprecated: Use Any.ProtoReflect.Type instead.
 // Deprecated: Use Any.ProtoReflect.Type instead.
@@ -141,24 +140,6 @@ func (*Any) Descriptor() ([]byte, []int) {
 
 
 func (*Any) XXX_WellKnownType() string { return "Any" }
 func (*Any) XXX_WellKnownType() string { return "Any" }
 
 
-func (m *Any) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Any.Unmarshal(m, b)
-}
-func (m *Any) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Any.Marshal(b, m, deterministic)
-}
-func (m *Any) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Any.Merge(m, src)
-}
-func (m *Any) XXX_Size() int {
-	return xxx_messageInfo_Any.Size(m)
-}
-func (m *Any) XXX_DiscardUnknown() {
-	xxx_messageInfo_Any.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Any proto.InternalMessageInfo
-
 func (m *Any) GetTypeUrl() string {
 func (m *Any) GetTypeUrl() string {
 	if m != nil {
 	if m != nil {
 		return m.TypeUrl
 		return m.TypeUrl
@@ -209,20 +190,14 @@ func xxx_File_google_protobuf_any_proto_init() {
 	if File_google_protobuf_any_proto != nil {
 	if File_google_protobuf_any_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_google_protobuf_any_proto = protoimpl.FileBuilder{
 	File_google_protobuf_any_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_any_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_any_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_any_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_any_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_any_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_any_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_any_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_any_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_any_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_any_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/any.proto", xxx_File_google_protobuf_any_proto_rawdesc_gzipped)
-	proto.RegisterType((*Any)(nil), "google.protobuf.Any")
 	xxx_File_google_protobuf_any_proto_goTypes = nil
 	xxx_File_google_protobuf_any_proto_goTypes = nil
 	xxx_File_google_protobuf_any_proto_depIdxs = nil
 	xxx_File_google_protobuf_any_proto_depIdxs = nil
 }
 }

+ 7 - 70
types/known/api.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // Api is a light-weight descriptor for an API Interface.
 // Api is a light-weight descriptor for an API Interface.
@@ -65,7 +64,7 @@ func (m *Api) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_api_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_api_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Api) Reset()         { *m = Api{} }
 func (m *Api) Reset()         { *m = Api{} }
-func (m *Api) String() string { return proto.CompactTextString(m) }
+func (m *Api) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Api) ProtoMessage()    {}
 func (*Api) ProtoMessage()    {}
 
 
 // Deprecated: Use Api.ProtoReflect.Type instead.
 // Deprecated: Use Api.ProtoReflect.Type instead.
@@ -73,24 +72,6 @@ func (*Api) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Api) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Api.Unmarshal(m, b)
-}
-func (m *Api) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Api.Marshal(b, m, deterministic)
-}
-func (m *Api) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Api.Merge(m, src)
-}
-func (m *Api) XXX_Size() int {
-	return xxx_messageInfo_Api.Size(m)
-}
-func (m *Api) XXX_DiscardUnknown() {
-	xxx_messageInfo_Api.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Api proto.InternalMessageInfo
-
 func (m *Api) GetName() string {
 func (m *Api) GetName() string {
 	if m != nil {
 	if m != nil {
 		return m.Name
 		return m.Name
@@ -165,7 +146,7 @@ func (m *Method) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_api_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_google_protobuf_api_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Method) Reset()         { *m = Method{} }
 func (m *Method) Reset()         { *m = Method{} }
-func (m *Method) String() string { return proto.CompactTextString(m) }
+func (m *Method) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Method) ProtoMessage()    {}
 func (*Method) ProtoMessage()    {}
 
 
 // Deprecated: Use Method.ProtoReflect.Type instead.
 // Deprecated: Use Method.ProtoReflect.Type instead.
@@ -173,24 +154,6 @@ func (*Method) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *Method) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Method.Unmarshal(m, b)
-}
-func (m *Method) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Method.Marshal(b, m, deterministic)
-}
-func (m *Method) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Method.Merge(m, src)
-}
-func (m *Method) XXX_Size() int {
-	return xxx_messageInfo_Method.Size(m)
-}
-func (m *Method) XXX_DiscardUnknown() {
-	xxx_messageInfo_Method.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Method proto.InternalMessageInfo
-
 func (m *Method) GetName() string {
 func (m *Method) GetName() string {
 	if m != nil {
 	if m != nil {
 		return m.Name
 		return m.Name
@@ -333,7 +296,7 @@ func (m *Mixin) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_api_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_google_protobuf_api_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *Mixin) Reset()         { *m = Mixin{} }
 func (m *Mixin) Reset()         { *m = Mixin{} }
-func (m *Mixin) String() string { return proto.CompactTextString(m) }
+func (m *Mixin) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Mixin) ProtoMessage()    {}
 func (*Mixin) ProtoMessage()    {}
 
 
 // Deprecated: Use Mixin.ProtoReflect.Type instead.
 // Deprecated: Use Mixin.ProtoReflect.Type instead.
@@ -341,24 +304,6 @@ func (*Mixin) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *Mixin) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Mixin.Unmarshal(m, b)
-}
-func (m *Mixin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Mixin.Marshal(b, m, deterministic)
-}
-func (m *Mixin) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Mixin.Merge(m, src)
-}
-func (m *Mixin) XXX_Size() int {
-	return xxx_messageInfo_Mixin.Size(m)
-}
-func (m *Mixin) XXX_DiscardUnknown() {
-	xxx_messageInfo_Mixin.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Mixin proto.InternalMessageInfo
-
 func (m *Mixin) GetName() string {
 func (m *Mixin) GetName() string {
 	if m != nil {
 	if m != nil {
 		return m.Name
 		return m.Name
@@ -468,22 +413,14 @@ func xxx_File_google_protobuf_api_proto_init() {
 	}
 	}
 	xxx_File_google_protobuf_source_context_proto_init()
 	xxx_File_google_protobuf_source_context_proto_init()
 	xxx_File_google_protobuf_type_proto_init()
 	xxx_File_google_protobuf_type_proto_init()
-	messageTypes := make([]protoreflect.MessageType, 3)
 	File_google_protobuf_api_proto = protoimpl.FileBuilder{
 	File_google_protobuf_api_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_api_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_api_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_api_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_api_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_api_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_api_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_api_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_api_proto_goTypes[0:][:3]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_api_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_api_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/api.proto", xxx_File_google_protobuf_api_proto_rawdesc_gzipped)
-	proto.RegisterType((*Api)(nil), "google.protobuf.Api")
-	proto.RegisterType((*Method)(nil), "google.protobuf.Method")
-	proto.RegisterType((*Mixin)(nil), "google.protobuf.Mixin")
 	xxx_File_google_protobuf_api_proto_goTypes = nil
 	xxx_File_google_protobuf_api_proto_goTypes = nil
 	xxx_File_google_protobuf_api_proto_depIdxs = nil
 	xxx_File_google_protobuf_api_proto_depIdxs = nil
 }
 }

+ 5 - 30
types/known/duration.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // A Duration represents a signed, fixed-length span of time represented
 // A Duration represents a signed, fixed-length span of time represented
@@ -91,7 +90,7 @@ func (m *Duration) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_duration_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_duration_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Duration) Reset()         { *m = Duration{} }
 func (m *Duration) Reset()         { *m = Duration{} }
-func (m *Duration) String() string { return proto.CompactTextString(m) }
+func (m *Duration) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Duration) ProtoMessage()    {}
 func (*Duration) ProtoMessage()    {}
 
 
 // Deprecated: Use Duration.ProtoReflect.Type instead.
 // Deprecated: Use Duration.ProtoReflect.Type instead.
@@ -101,24 +100,6 @@ func (*Duration) Descriptor() ([]byte, []int) {
 
 
 func (*Duration) XXX_WellKnownType() string { return "Duration" }
 func (*Duration) XXX_WellKnownType() string { return "Duration" }
 
 
-func (m *Duration) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Duration.Unmarshal(m, b)
-}
-func (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Duration.Marshal(b, m, deterministic)
-}
-func (m *Duration) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Duration.Merge(m, src)
-}
-func (m *Duration) XXX_Size() int {
-	return xxx_messageInfo_Duration.Size(m)
-}
-func (m *Duration) XXX_DiscardUnknown() {
-	xxx_messageInfo_Duration.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Duration proto.InternalMessageInfo
-
 func (m *Duration) GetSeconds() int64 {
 func (m *Duration) GetSeconds() int64 {
 	if m != nil {
 	if m != nil {
 		return m.Seconds
 		return m.Seconds
@@ -170,20 +151,14 @@ func xxx_File_google_protobuf_duration_proto_init() {
 	if File_google_protobuf_duration_proto != nil {
 	if File_google_protobuf_duration_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_google_protobuf_duration_proto = protoimpl.FileBuilder{
 	File_google_protobuf_duration_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_duration_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_duration_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_duration_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_duration_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_duration_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_duration_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_duration_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_duration_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_duration_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_duration_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/duration.proto", xxx_File_google_protobuf_duration_proto_rawdesc_gzipped)
-	proto.RegisterType((*Duration)(nil), "google.protobuf.Duration")
 	xxx_File_google_protobuf_duration_proto_goTypes = nil
 	xxx_File_google_protobuf_duration_proto_goTypes = nil
 	xxx_File_google_protobuf_duration_proto_depIdxs = nil
 	xxx_File_google_protobuf_duration_proto_depIdxs = nil
 }
 }

+ 5 - 30
types/known/empty.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // A generic empty message that you can re-use to avoid defining duplicated
 // A generic empty message that you can re-use to avoid defining duplicated
@@ -29,7 +28,7 @@ func (m *Empty) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_empty_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_empty_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Empty) Reset()         { *m = Empty{} }
 func (m *Empty) Reset()         { *m = Empty{} }
-func (m *Empty) String() string { return proto.CompactTextString(m) }
+func (m *Empty) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Empty) ProtoMessage()    {}
 func (*Empty) ProtoMessage()    {}
 
 
 // Deprecated: Use Empty.ProtoReflect.Type instead.
 // Deprecated: Use Empty.ProtoReflect.Type instead.
@@ -39,24 +38,6 @@ func (*Empty) Descriptor() ([]byte, []int) {
 
 
 func (*Empty) XXX_WellKnownType() string { return "Empty" }
 func (*Empty) XXX_WellKnownType() string { return "Empty" }
 
 
-func (m *Empty) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Empty.Unmarshal(m, b)
-}
-func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
-}
-func (m *Empty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Empty.Merge(m, src)
-}
-func (m *Empty) XXX_Size() int {
-	return xxx_messageInfo_Empty.Size(m)
-}
-func (m *Empty) XXX_DiscardUnknown() {
-	xxx_messageInfo_Empty.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Empty proto.InternalMessageInfo
-
 var xxx_File_google_protobuf_empty_proto_rawdesc = []byte{
 var xxx_File_google_protobuf_empty_proto_rawdesc = []byte{
 	// 198 bytes of the wire-encoded FileDescriptorProto
 	// 198 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x0a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
@@ -91,20 +72,14 @@ func xxx_File_google_protobuf_empty_proto_init() {
 	if File_google_protobuf_empty_proto != nil {
 	if File_google_protobuf_empty_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_google_protobuf_empty_proto = protoimpl.FileBuilder{
 	File_google_protobuf_empty_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_empty_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_empty_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_empty_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_empty_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_empty_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_empty_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_empty_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_empty_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_empty_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_empty_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/empty.proto", xxx_File_google_protobuf_empty_proto_rawdesc_gzipped)
-	proto.RegisterType((*Empty)(nil), "google.protobuf.Empty")
 	xxx_File_google_protobuf_empty_proto_goTypes = nil
 	xxx_File_google_protobuf_empty_proto_goTypes = nil
 	xxx_File_google_protobuf_empty_proto_depIdxs = nil
 	xxx_File_google_protobuf_empty_proto_depIdxs = nil
 }
 }

+ 5 - 30
types/known/field_mask.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // `FieldMask` represents a set of symbolic field paths, for example:
 // `FieldMask` represents a set of symbolic field paths, for example:
@@ -221,7 +220,7 @@ func (m *FieldMask) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_field_mask_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_field_mask_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *FieldMask) Reset()         { *m = FieldMask{} }
 func (m *FieldMask) Reset()         { *m = FieldMask{} }
-func (m *FieldMask) String() string { return proto.CompactTextString(m) }
+func (m *FieldMask) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FieldMask) ProtoMessage()    {}
 func (*FieldMask) ProtoMessage()    {}
 
 
 // Deprecated: Use FieldMask.ProtoReflect.Type instead.
 // Deprecated: Use FieldMask.ProtoReflect.Type instead.
@@ -229,24 +228,6 @@ func (*FieldMask) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_field_mask_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_google_protobuf_field_mask_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *FieldMask) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldMask.Unmarshal(m, b)
-}
-func (m *FieldMask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldMask.Marshal(b, m, deterministic)
-}
-func (m *FieldMask) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldMask.Merge(m, src)
-}
-func (m *FieldMask) XXX_Size() int {
-	return xxx_messageInfo_FieldMask.Size(m)
-}
-func (m *FieldMask) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldMask.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldMask proto.InternalMessageInfo
-
 func (m *FieldMask) GetPaths() []string {
 func (m *FieldMask) GetPaths() []string {
 	if m != nil {
 	if m != nil {
 		return m.Paths
 		return m.Paths
@@ -290,20 +271,14 @@ func xxx_File_google_protobuf_field_mask_proto_init() {
 	if File_google_protobuf_field_mask_proto != nil {
 	if File_google_protobuf_field_mask_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_google_protobuf_field_mask_proto = protoimpl.FileBuilder{
 	File_google_protobuf_field_mask_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_field_mask_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_field_mask_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_field_mask_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_field_mask_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_field_mask_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_field_mask_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_field_mask_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_field_mask_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_field_mask_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_field_mask_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/field_mask.proto", xxx_File_google_protobuf_field_mask_proto_rawdesc_gzipped)
-	proto.RegisterType((*FieldMask)(nil), "google.protobuf.FieldMask")
 	xxx_File_google_protobuf_field_mask_proto_goTypes = nil
 	xxx_File_google_protobuf_field_mask_proto_goTypes = nil
 	xxx_File_google_protobuf_field_mask_proto_depIdxs = nil
 	xxx_File_google_protobuf_field_mask_proto_depIdxs = nil
 }
 }

+ 5 - 30
types/known/source_context.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // `SourceContext` represents information about the source of a
 // `SourceContext` represents information about the source of a
@@ -25,7 +24,7 @@ func (m *SourceContext) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_source_context_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_source_context_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *SourceContext) Reset()         { *m = SourceContext{} }
 func (m *SourceContext) Reset()         { *m = SourceContext{} }
-func (m *SourceContext) String() string { return proto.CompactTextString(m) }
+func (m *SourceContext) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*SourceContext) ProtoMessage()    {}
 func (*SourceContext) ProtoMessage()    {}
 
 
 // Deprecated: Use SourceContext.ProtoReflect.Type instead.
 // Deprecated: Use SourceContext.ProtoReflect.Type instead.
@@ -33,24 +32,6 @@ func (*SourceContext) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_source_context_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_google_protobuf_source_context_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *SourceContext) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SourceContext.Unmarshal(m, b)
-}
-func (m *SourceContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SourceContext.Marshal(b, m, deterministic)
-}
-func (m *SourceContext) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SourceContext.Merge(m, src)
-}
-func (m *SourceContext) XXX_Size() int {
-	return xxx_messageInfo_SourceContext.Size(m)
-}
-func (m *SourceContext) XXX_DiscardUnknown() {
-	xxx_messageInfo_SourceContext.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SourceContext proto.InternalMessageInfo
-
 func (m *SourceContext) GetFileName() string {
 func (m *SourceContext) GetFileName() string {
 	if m != nil {
 	if m != nil {
 		return m.FileName
 		return m.FileName
@@ -95,20 +76,14 @@ func xxx_File_google_protobuf_source_context_proto_init() {
 	if File_google_protobuf_source_context_proto != nil {
 	if File_google_protobuf_source_context_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_google_protobuf_source_context_proto = protoimpl.FileBuilder{
 	File_google_protobuf_source_context_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_source_context_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_source_context_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_source_context_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_source_context_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_source_context_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_source_context_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_source_context_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_source_context_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_source_context_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_source_context_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/source_context.proto", xxx_File_google_protobuf_source_context_proto_rawdesc_gzipped)
-	proto.RegisterType((*SourceContext)(nil), "google.protobuf.SourceContext")
 	xxx_File_google_protobuf_source_context_proto_goTypes = nil
 	xxx_File_google_protobuf_source_context_proto_goTypes = nil
 	xxx_File_google_protobuf_source_context_proto_depIdxs = nil
 	xxx_File_google_protobuf_source_context_proto_depIdxs = nil
 }
 }

+ 7 - 72
types/known/struct.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // `NullValue` is a singleton enumeration to represent the null value for the
 // `NullValue` is a singleton enumeration to represent the null value for the
@@ -69,7 +68,7 @@ func (m *Struct) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_struct_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_struct_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Struct) Reset()         { *m = Struct{} }
 func (m *Struct) Reset()         { *m = Struct{} }
-func (m *Struct) String() string { return proto.CompactTextString(m) }
+func (m *Struct) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Struct) ProtoMessage()    {}
 func (*Struct) ProtoMessage()    {}
 
 
 // Deprecated: Use Struct.ProtoReflect.Type instead.
 // Deprecated: Use Struct.ProtoReflect.Type instead.
@@ -79,24 +78,6 @@ func (*Struct) Descriptor() ([]byte, []int) {
 
 
 func (*Struct) XXX_WellKnownType() string { return "Struct" }
 func (*Struct) XXX_WellKnownType() string { return "Struct" }
 
 
-func (m *Struct) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Struct.Unmarshal(m, b)
-}
-func (m *Struct) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Struct.Marshal(b, m, deterministic)
-}
-func (m *Struct) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Struct.Merge(m, src)
-}
-func (m *Struct) XXX_Size() int {
-	return xxx_messageInfo_Struct.Size(m)
-}
-func (m *Struct) XXX_DiscardUnknown() {
-	xxx_messageInfo_Struct.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Struct proto.InternalMessageInfo
-
 func (m *Struct) GetFields() map[string]*Value {
 func (m *Struct) GetFields() map[string]*Value {
 	if m != nil {
 	if m != nil {
 		return m.Fields
 		return m.Fields
@@ -136,7 +117,7 @@ func (m *Value) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_struct_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_google_protobuf_struct_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Value) Reset()         { *m = Value{} }
 func (m *Value) Reset()         { *m = Value{} }
-func (m *Value) String() string { return proto.CompactTextString(m) }
+func (m *Value) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Value) ProtoMessage()    {}
 func (*Value) ProtoMessage()    {}
 
 
 // Deprecated: Use Value.ProtoReflect.Type instead.
 // Deprecated: Use Value.ProtoReflect.Type instead.
@@ -146,24 +127,6 @@ func (*Value) Descriptor() ([]byte, []int) {
 
 
 func (*Value) XXX_WellKnownType() string { return "Value" }
 func (*Value) XXX_WellKnownType() string { return "Value" }
 
 
-func (m *Value) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Value.Unmarshal(m, b)
-}
-func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Value.Marshal(b, m, deterministic)
-}
-func (m *Value) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Value.Merge(m, src)
-}
-func (m *Value) XXX_Size() int {
-	return xxx_messageInfo_Value.Size(m)
-}
-func (m *Value) XXX_DiscardUnknown() {
-	xxx_messageInfo_Value.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Value proto.InternalMessageInfo
-
 type isValue_Kind interface {
 type isValue_Kind interface {
 	isValue_Kind()
 	isValue_Kind()
 }
 }
@@ -280,7 +243,7 @@ func (m *ListValue) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_struct_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_google_protobuf_struct_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *ListValue) Reset()         { *m = ListValue{} }
 func (m *ListValue) Reset()         { *m = ListValue{} }
-func (m *ListValue) String() string { return proto.CompactTextString(m) }
+func (m *ListValue) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*ListValue) ProtoMessage()    {}
 func (*ListValue) ProtoMessage()    {}
 
 
 // Deprecated: Use ListValue.ProtoReflect.Type instead.
 // Deprecated: Use ListValue.ProtoReflect.Type instead.
@@ -290,24 +253,6 @@ func (*ListValue) Descriptor() ([]byte, []int) {
 
 
 func (*ListValue) XXX_WellKnownType() string { return "ListValue" }
 func (*ListValue) XXX_WellKnownType() string { return "ListValue" }
 
 
-func (m *ListValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListValue.Unmarshal(m, b)
-}
-func (m *ListValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListValue.Marshal(b, m, deterministic)
-}
-func (m *ListValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListValue.Merge(m, src)
-}
-func (m *ListValue) XXX_Size() int {
-	return xxx_messageInfo_ListValue.Size(m)
-}
-func (m *ListValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ListValue proto.InternalMessageInfo
-
 func (m *ListValue) GetValues() []*Value {
 func (m *ListValue) GetValues() []*Value {
 	if m != nil {
 	if m != nil {
 		return m.Values
 		return m.Values
@@ -395,25 +340,15 @@ func xxx_File_google_protobuf_struct_proto_init() {
 	if File_google_protobuf_struct_proto != nil {
 	if File_google_protobuf_struct_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 4)
 	File_google_protobuf_struct_proto = protoimpl.FileBuilder{
 	File_google_protobuf_struct_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_struct_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_struct_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_struct_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_struct_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_struct_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_struct_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_google_protobuf_struct_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_google_protobuf_struct_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_struct_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_struct_proto_goTypes[1:][:4]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_struct_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_struct_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/struct.proto", xxx_File_google_protobuf_struct_proto_rawdesc_gzipped)
-	proto.RegisterEnum("google.protobuf.NullValue", NullValue_name, NullValue_value)
-	proto.RegisterType((*Struct)(nil), "google.protobuf.Struct")
-	proto.RegisterMapType((map[string]*Value)(nil), "google.protobuf.Struct.FieldsEntry")
-	proto.RegisterType((*Value)(nil), "google.protobuf.Value")
-	proto.RegisterType((*ListValue)(nil), "google.protobuf.ListValue")
 	xxx_File_google_protobuf_struct_proto_goTypes = nil
 	xxx_File_google_protobuf_struct_proto_goTypes = nil
 	xxx_File_google_protobuf_struct_proto_depIdxs = nil
 	xxx_File_google_protobuf_struct_proto_depIdxs = nil
 }
 }

+ 5 - 30
types/known/timestamp.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // A Timestamp represents a point in time independent of any time zone or local
 // A Timestamp represents a point in time independent of any time zone or local
@@ -111,7 +110,7 @@ func (m *Timestamp) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_timestamp_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_timestamp_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Timestamp) Reset()         { *m = Timestamp{} }
 func (m *Timestamp) Reset()         { *m = Timestamp{} }
-func (m *Timestamp) String() string { return proto.CompactTextString(m) }
+func (m *Timestamp) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Timestamp) ProtoMessage()    {}
 func (*Timestamp) ProtoMessage()    {}
 
 
 // Deprecated: Use Timestamp.ProtoReflect.Type instead.
 // Deprecated: Use Timestamp.ProtoReflect.Type instead.
@@ -121,24 +120,6 @@ func (*Timestamp) Descriptor() ([]byte, []int) {
 
 
 func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
 func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
 
 
-func (m *Timestamp) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Timestamp.Unmarshal(m, b)
-}
-func (m *Timestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Timestamp.Marshal(b, m, deterministic)
-}
-func (m *Timestamp) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Timestamp.Merge(m, src)
-}
-func (m *Timestamp) XXX_Size() int {
-	return xxx_messageInfo_Timestamp.Size(m)
-}
-func (m *Timestamp) XXX_DiscardUnknown() {
-	xxx_messageInfo_Timestamp.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Timestamp proto.InternalMessageInfo
-
 func (m *Timestamp) GetSeconds() int64 {
 func (m *Timestamp) GetSeconds() int64 {
 	if m != nil {
 	if m != nil {
 		return m.Seconds
 		return m.Seconds
@@ -191,20 +172,14 @@ func xxx_File_google_protobuf_timestamp_proto_init() {
 	if File_google_protobuf_timestamp_proto != nil {
 	if File_google_protobuf_timestamp_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_google_protobuf_timestamp_proto = protoimpl.FileBuilder{
 	File_google_protobuf_timestamp_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_timestamp_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_timestamp_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_timestamp_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_timestamp_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_timestamp_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_timestamp_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_timestamp_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_timestamp_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_timestamp_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_timestamp_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/timestamp.proto", xxx_File_google_protobuf_timestamp_proto_rawdesc_gzipped)
-	proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp")
 	xxx_File_google_protobuf_timestamp_proto_goTypes = nil
 	xxx_File_google_protobuf_timestamp_proto_goTypes = nil
 	xxx_File_google_protobuf_timestamp_proto_depIdxs = nil
 	xxx_File_google_protobuf_timestamp_proto_depIdxs = nil
 }
 }

+ 9 - 113
types/known/type.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // The syntax in which a protocol buffer element is defined.
 // The syntax in which a protocol buffer element is defined.
@@ -223,7 +222,7 @@ func (m *Type) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_type_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_type_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Type) Reset()         { *m = Type{} }
 func (m *Type) Reset()         { *m = Type{} }
-func (m *Type) String() string { return proto.CompactTextString(m) }
+func (m *Type) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Type) ProtoMessage()    {}
 func (*Type) ProtoMessage()    {}
 
 
 // Deprecated: Use Type.ProtoReflect.Type instead.
 // Deprecated: Use Type.ProtoReflect.Type instead.
@@ -231,24 +230,6 @@ func (*Type) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Type) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Type.Unmarshal(m, b)
-}
-func (m *Type) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Type.Marshal(b, m, deterministic)
-}
-func (m *Type) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Type.Merge(m, src)
-}
-func (m *Type) XXX_Size() int {
-	return xxx_messageInfo_Type.Size(m)
-}
-func (m *Type) XXX_DiscardUnknown() {
-	xxx_messageInfo_Type.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Type proto.InternalMessageInfo
-
 func (m *Type) GetName() string {
 func (m *Type) GetName() string {
 	if m != nil {
 	if m != nil {
 		return m.Name
 		return m.Name
@@ -324,7 +305,7 @@ func (m *Field) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_type_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_google_protobuf_type_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *Field) Reset()         { *m = Field{} }
 func (m *Field) Reset()         { *m = Field{} }
-func (m *Field) String() string { return proto.CompactTextString(m) }
+func (m *Field) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Field) ProtoMessage()    {}
 func (*Field) ProtoMessage()    {}
 
 
 // Deprecated: Use Field.ProtoReflect.Type instead.
 // Deprecated: Use Field.ProtoReflect.Type instead.
@@ -332,24 +313,6 @@ func (*Field) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *Field) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Field.Unmarshal(m, b)
-}
-func (m *Field) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Field.Marshal(b, m, deterministic)
-}
-func (m *Field) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Field.Merge(m, src)
-}
-func (m *Field) XXX_Size() int {
-	return xxx_messageInfo_Field.Size(m)
-}
-func (m *Field) XXX_DiscardUnknown() {
-	xxx_messageInfo_Field.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Field proto.InternalMessageInfo
-
 func (m *Field) GetKind() Field_Kind {
 func (m *Field) GetKind() Field_Kind {
 	if m != nil {
 	if m != nil {
 		return m.Kind
 		return m.Kind
@@ -441,7 +404,7 @@ func (m *Enum) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_type_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_google_protobuf_type_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *Enum) Reset()         { *m = Enum{} }
 func (m *Enum) Reset()         { *m = Enum{} }
-func (m *Enum) String() string { return proto.CompactTextString(m) }
+func (m *Enum) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Enum) ProtoMessage()    {}
 func (*Enum) ProtoMessage()    {}
 
 
 // Deprecated: Use Enum.ProtoReflect.Type instead.
 // Deprecated: Use Enum.ProtoReflect.Type instead.
@@ -449,24 +412,6 @@ func (*Enum) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *Enum) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Enum.Unmarshal(m, b)
-}
-func (m *Enum) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Enum.Marshal(b, m, deterministic)
-}
-func (m *Enum) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Enum.Merge(m, src)
-}
-func (m *Enum) XXX_Size() int {
-	return xxx_messageInfo_Enum.Size(m)
-}
-func (m *Enum) XXX_DiscardUnknown() {
-	xxx_messageInfo_Enum.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Enum proto.InternalMessageInfo
-
 func (m *Enum) GetName() string {
 func (m *Enum) GetName() string {
 	if m != nil {
 	if m != nil {
 		return m.Name
 		return m.Name
@@ -519,7 +464,7 @@ func (m *EnumValue) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_type_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_google_protobuf_type_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *EnumValue) Reset()         { *m = EnumValue{} }
 func (m *EnumValue) Reset()         { *m = EnumValue{} }
-func (m *EnumValue) String() string { return proto.CompactTextString(m) }
+func (m *EnumValue) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*EnumValue) ProtoMessage()    {}
 func (*EnumValue) ProtoMessage()    {}
 
 
 // Deprecated: Use EnumValue.ProtoReflect.Type instead.
 // Deprecated: Use EnumValue.ProtoReflect.Type instead.
@@ -527,24 +472,6 @@ func (*EnumValue) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{3}
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{3}
 }
 }
 
 
-func (m *EnumValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EnumValue.Unmarshal(m, b)
-}
-func (m *EnumValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EnumValue.Marshal(b, m, deterministic)
-}
-func (m *EnumValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EnumValue.Merge(m, src)
-}
-func (m *EnumValue) XXX_Size() int {
-	return xxx_messageInfo_EnumValue.Size(m)
-}
-func (m *EnumValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_EnumValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EnumValue proto.InternalMessageInfo
-
 func (m *EnumValue) GetName() string {
 func (m *EnumValue) GetName() string {
 	if m != nil {
 	if m != nil {
 		return m.Name
 		return m.Name
@@ -588,7 +515,7 @@ func (m *Option) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_type_proto_messageTypes[4].MessageOf(m)
 	return xxx_File_google_protobuf_type_proto_messageTypes[4].MessageOf(m)
 }
 }
 func (m *Option) Reset()         { *m = Option{} }
 func (m *Option) Reset()         { *m = Option{} }
-func (m *Option) String() string { return proto.CompactTextString(m) }
+func (m *Option) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Option) ProtoMessage()    {}
 func (*Option) ProtoMessage()    {}
 
 
 // Deprecated: Use Option.ProtoReflect.Type instead.
 // Deprecated: Use Option.ProtoReflect.Type instead.
@@ -596,24 +523,6 @@ func (*Option) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{4}
 	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{4}
 }
 }
 
 
-func (m *Option) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Option.Unmarshal(m, b)
-}
-func (m *Option) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Option.Marshal(b, m, deterministic)
-}
-func (m *Option) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Option.Merge(m, src)
-}
-func (m *Option) XXX_Size() int {
-	return xxx_messageInfo_Option.Size(m)
-}
-func (m *Option) XXX_DiscardUnknown() {
-	xxx_messageInfo_Option.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Option proto.InternalMessageInfo
-
 func (m *Option) GetName() string {
 func (m *Option) GetName() string {
 	if m != nil {
 	if m != nil {
 		return m.Name
 		return m.Name
@@ -790,28 +699,15 @@ func xxx_File_google_protobuf_type_proto_init() {
 	}
 	}
 	xxx_File_google_protobuf_any_proto_init()
 	xxx_File_google_protobuf_any_proto_init()
 	xxx_File_google_protobuf_source_context_proto_init()
 	xxx_File_google_protobuf_source_context_proto_init()
-	messageTypes := make([]protoreflect.MessageType, 5)
 	File_google_protobuf_type_proto = protoimpl.FileBuilder{
 	File_google_protobuf_type_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_type_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_type_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_type_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_type_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_type_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_type_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_google_protobuf_type_proto_enumTypes,
 		EnumOutputTypes:    xxx_File_google_protobuf_type_proto_enumTypes,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_type_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_type_proto_goTypes[3:][:5]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_type_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_type_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/type.proto", xxx_File_google_protobuf_type_proto_rawdesc_gzipped)
-	proto.RegisterEnum("google.protobuf.Syntax", Syntax_name, Syntax_value)
-	proto.RegisterEnum("google.protobuf.Field_Kind", Field_Kind_name, Field_Kind_value)
-	proto.RegisterEnum("google.protobuf.Field_Cardinality", Field_Cardinality_name, Field_Cardinality_value)
-	proto.RegisterType((*Type)(nil), "google.protobuf.Type")
-	proto.RegisterType((*Field)(nil), "google.protobuf.Field")
-	proto.RegisterType((*Enum)(nil), "google.protobuf.Enum")
-	proto.RegisterType((*EnumValue)(nil), "google.protobuf.EnumValue")
-	proto.RegisterType((*Option)(nil), "google.protobuf.Option")
 	xxx_File_google_protobuf_type_proto_goTypes = nil
 	xxx_File_google_protobuf_type_proto_goTypes = nil
 	xxx_File_google_protobuf_type_proto_depIdxs = nil
 	xxx_File_google_protobuf_type_proto_depIdxs = nil
 }
 }

+ 13 - 190
types/known/wrappers.pb.go

@@ -4,10 +4,9 @@
 package known_proto
 package known_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 )
 
 
 // Wrapper message for `double`.
 // Wrapper message for `double`.
@@ -25,7 +24,7 @@ func (m *DoubleValue) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *DoubleValue) Reset()         { *m = DoubleValue{} }
 func (m *DoubleValue) Reset()         { *m = DoubleValue{} }
-func (m *DoubleValue) String() string { return proto.CompactTextString(m) }
+func (m *DoubleValue) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*DoubleValue) ProtoMessage()    {}
 func (*DoubleValue) ProtoMessage()    {}
 
 
 // Deprecated: Use DoubleValue.ProtoReflect.Type instead.
 // Deprecated: Use DoubleValue.ProtoReflect.Type instead.
@@ -35,24 +34,6 @@ func (*DoubleValue) Descriptor() ([]byte, []int) {
 
 
 func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
 func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
 
 
-func (m *DoubleValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DoubleValue.Unmarshal(m, b)
-}
-func (m *DoubleValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DoubleValue.Marshal(b, m, deterministic)
-}
-func (m *DoubleValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DoubleValue.Merge(m, src)
-}
-func (m *DoubleValue) XXX_Size() int {
-	return xxx_messageInfo_DoubleValue.Size(m)
-}
-func (m *DoubleValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_DoubleValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DoubleValue proto.InternalMessageInfo
-
 func (m *DoubleValue) GetValue() float64 {
 func (m *DoubleValue) GetValue() float64 {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -75,7 +56,7 @@ func (m *FloatValue) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *FloatValue) Reset()         { *m = FloatValue{} }
 func (m *FloatValue) Reset()         { *m = FloatValue{} }
-func (m *FloatValue) String() string { return proto.CompactTextString(m) }
+func (m *FloatValue) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*FloatValue) ProtoMessage()    {}
 func (*FloatValue) ProtoMessage()    {}
 
 
 // Deprecated: Use FloatValue.ProtoReflect.Type instead.
 // Deprecated: Use FloatValue.ProtoReflect.Type instead.
@@ -85,24 +66,6 @@ func (*FloatValue) Descriptor() ([]byte, []int) {
 
 
 func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
 func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
 
 
-func (m *FloatValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FloatValue.Unmarshal(m, b)
-}
-func (m *FloatValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FloatValue.Marshal(b, m, deterministic)
-}
-func (m *FloatValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FloatValue.Merge(m, src)
-}
-func (m *FloatValue) XXX_Size() int {
-	return xxx_messageInfo_FloatValue.Size(m)
-}
-func (m *FloatValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_FloatValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FloatValue proto.InternalMessageInfo
-
 func (m *FloatValue) GetValue() float32 {
 func (m *FloatValue) GetValue() float32 {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -125,7 +88,7 @@ func (m *Int64Value) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *Int64Value) Reset()         { *m = Int64Value{} }
 func (m *Int64Value) Reset()         { *m = Int64Value{} }
-func (m *Int64Value) String() string { return proto.CompactTextString(m) }
+func (m *Int64Value) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Int64Value) ProtoMessage()    {}
 func (*Int64Value) ProtoMessage()    {}
 
 
 // Deprecated: Use Int64Value.ProtoReflect.Type instead.
 // Deprecated: Use Int64Value.ProtoReflect.Type instead.
@@ -135,24 +98,6 @@ func (*Int64Value) Descriptor() ([]byte, []int) {
 
 
 func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
 func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
 
 
-func (m *Int64Value) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Int64Value.Unmarshal(m, b)
-}
-func (m *Int64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Int64Value.Marshal(b, m, deterministic)
-}
-func (m *Int64Value) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Int64Value.Merge(m, src)
-}
-func (m *Int64Value) XXX_Size() int {
-	return xxx_messageInfo_Int64Value.Size(m)
-}
-func (m *Int64Value) XXX_DiscardUnknown() {
-	xxx_messageInfo_Int64Value.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Int64Value proto.InternalMessageInfo
-
 func (m *Int64Value) GetValue() int64 {
 func (m *Int64Value) GetValue() int64 {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -175,7 +120,7 @@ func (m *UInt64Value) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *UInt64Value) Reset()         { *m = UInt64Value{} }
 func (m *UInt64Value) Reset()         { *m = UInt64Value{} }
-func (m *UInt64Value) String() string { return proto.CompactTextString(m) }
+func (m *UInt64Value) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*UInt64Value) ProtoMessage()    {}
 func (*UInt64Value) ProtoMessage()    {}
 
 
 // Deprecated: Use UInt64Value.ProtoReflect.Type instead.
 // Deprecated: Use UInt64Value.ProtoReflect.Type instead.
@@ -185,24 +130,6 @@ func (*UInt64Value) Descriptor() ([]byte, []int) {
 
 
 func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
 func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
 
 
-func (m *UInt64Value) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UInt64Value.Unmarshal(m, b)
-}
-func (m *UInt64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UInt64Value.Marshal(b, m, deterministic)
-}
-func (m *UInt64Value) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UInt64Value.Merge(m, src)
-}
-func (m *UInt64Value) XXX_Size() int {
-	return xxx_messageInfo_UInt64Value.Size(m)
-}
-func (m *UInt64Value) XXX_DiscardUnknown() {
-	xxx_messageInfo_UInt64Value.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UInt64Value proto.InternalMessageInfo
-
 func (m *UInt64Value) GetValue() uint64 {
 func (m *UInt64Value) GetValue() uint64 {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -225,7 +152,7 @@ func (m *Int32Value) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[4].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[4].MessageOf(m)
 }
 }
 func (m *Int32Value) Reset()         { *m = Int32Value{} }
 func (m *Int32Value) Reset()         { *m = Int32Value{} }
-func (m *Int32Value) String() string { return proto.CompactTextString(m) }
+func (m *Int32Value) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Int32Value) ProtoMessage()    {}
 func (*Int32Value) ProtoMessage()    {}
 
 
 // Deprecated: Use Int32Value.ProtoReflect.Type instead.
 // Deprecated: Use Int32Value.ProtoReflect.Type instead.
@@ -235,24 +162,6 @@ func (*Int32Value) Descriptor() ([]byte, []int) {
 
 
 func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
 func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
 
 
-func (m *Int32Value) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Int32Value.Unmarshal(m, b)
-}
-func (m *Int32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Int32Value.Marshal(b, m, deterministic)
-}
-func (m *Int32Value) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Int32Value.Merge(m, src)
-}
-func (m *Int32Value) XXX_Size() int {
-	return xxx_messageInfo_Int32Value.Size(m)
-}
-func (m *Int32Value) XXX_DiscardUnknown() {
-	xxx_messageInfo_Int32Value.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Int32Value proto.InternalMessageInfo
-
 func (m *Int32Value) GetValue() int32 {
 func (m *Int32Value) GetValue() int32 {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -275,7 +184,7 @@ func (m *UInt32Value) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[5].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[5].MessageOf(m)
 }
 }
 func (m *UInt32Value) Reset()         { *m = UInt32Value{} }
 func (m *UInt32Value) Reset()         { *m = UInt32Value{} }
-func (m *UInt32Value) String() string { return proto.CompactTextString(m) }
+func (m *UInt32Value) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*UInt32Value) ProtoMessage()    {}
 func (*UInt32Value) ProtoMessage()    {}
 
 
 // Deprecated: Use UInt32Value.ProtoReflect.Type instead.
 // Deprecated: Use UInt32Value.ProtoReflect.Type instead.
@@ -285,24 +194,6 @@ func (*UInt32Value) Descriptor() ([]byte, []int) {
 
 
 func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
 func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
 
 
-func (m *UInt32Value) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UInt32Value.Unmarshal(m, b)
-}
-func (m *UInt32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UInt32Value.Marshal(b, m, deterministic)
-}
-func (m *UInt32Value) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UInt32Value.Merge(m, src)
-}
-func (m *UInt32Value) XXX_Size() int {
-	return xxx_messageInfo_UInt32Value.Size(m)
-}
-func (m *UInt32Value) XXX_DiscardUnknown() {
-	xxx_messageInfo_UInt32Value.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UInt32Value proto.InternalMessageInfo
-
 func (m *UInt32Value) GetValue() uint32 {
 func (m *UInt32Value) GetValue() uint32 {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -325,7 +216,7 @@ func (m *BoolValue) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[6].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[6].MessageOf(m)
 }
 }
 func (m *BoolValue) Reset()         { *m = BoolValue{} }
 func (m *BoolValue) Reset()         { *m = BoolValue{} }
-func (m *BoolValue) String() string { return proto.CompactTextString(m) }
+func (m *BoolValue) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*BoolValue) ProtoMessage()    {}
 func (*BoolValue) ProtoMessage()    {}
 
 
 // Deprecated: Use BoolValue.ProtoReflect.Type instead.
 // Deprecated: Use BoolValue.ProtoReflect.Type instead.
@@ -335,24 +226,6 @@ func (*BoolValue) Descriptor() ([]byte, []int) {
 
 
 func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
 func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
 
 
-func (m *BoolValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BoolValue.Unmarshal(m, b)
-}
-func (m *BoolValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BoolValue.Marshal(b, m, deterministic)
-}
-func (m *BoolValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BoolValue.Merge(m, src)
-}
-func (m *BoolValue) XXX_Size() int {
-	return xxx_messageInfo_BoolValue.Size(m)
-}
-func (m *BoolValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_BoolValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_BoolValue proto.InternalMessageInfo
-
 func (m *BoolValue) GetValue() bool {
 func (m *BoolValue) GetValue() bool {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -375,7 +248,7 @@ func (m *StringValue) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[7].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[7].MessageOf(m)
 }
 }
 func (m *StringValue) Reset()         { *m = StringValue{} }
 func (m *StringValue) Reset()         { *m = StringValue{} }
-func (m *StringValue) String() string { return proto.CompactTextString(m) }
+func (m *StringValue) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*StringValue) ProtoMessage()    {}
 func (*StringValue) ProtoMessage()    {}
 
 
 // Deprecated: Use StringValue.ProtoReflect.Type instead.
 // Deprecated: Use StringValue.ProtoReflect.Type instead.
@@ -385,24 +258,6 @@ func (*StringValue) Descriptor() ([]byte, []int) {
 
 
 func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
 func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
 
 
-func (m *StringValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StringValue.Unmarshal(m, b)
-}
-func (m *StringValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StringValue.Marshal(b, m, deterministic)
-}
-func (m *StringValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StringValue.Merge(m, src)
-}
-func (m *StringValue) XXX_Size() int {
-	return xxx_messageInfo_StringValue.Size(m)
-}
-func (m *StringValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_StringValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StringValue proto.InternalMessageInfo
-
 func (m *StringValue) GetValue() string {
 func (m *StringValue) GetValue() string {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -425,7 +280,7 @@ func (m *BytesValue) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[8].MessageOf(m)
 	return xxx_File_google_protobuf_wrappers_proto_messageTypes[8].MessageOf(m)
 }
 }
 func (m *BytesValue) Reset()         { *m = BytesValue{} }
 func (m *BytesValue) Reset()         { *m = BytesValue{} }
-func (m *BytesValue) String() string { return proto.CompactTextString(m) }
+func (m *BytesValue) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*BytesValue) ProtoMessage()    {}
 func (*BytesValue) ProtoMessage()    {}
 
 
 // Deprecated: Use BytesValue.ProtoReflect.Type instead.
 // Deprecated: Use BytesValue.ProtoReflect.Type instead.
@@ -435,24 +290,6 @@ func (*BytesValue) Descriptor() ([]byte, []int) {
 
 
 func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
 func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
 
 
-func (m *BytesValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BytesValue.Unmarshal(m, b)
-}
-func (m *BytesValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BytesValue.Marshal(b, m, deterministic)
-}
-func (m *BytesValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BytesValue.Merge(m, src)
-}
-func (m *BytesValue) XXX_Size() int {
-	return xxx_messageInfo_BytesValue.Size(m)
-}
-func (m *BytesValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_BytesValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_BytesValue proto.InternalMessageInfo
-
 func (m *BytesValue) GetValue() []byte {
 func (m *BytesValue) GetValue() []byte {
 	if m != nil {
 	if m != nil {
 		return m.Value
 		return m.Value
@@ -522,28 +359,14 @@ func xxx_File_google_protobuf_wrappers_proto_init() {
 	if File_google_protobuf_wrappers_proto != nil {
 	if File_google_protobuf_wrappers_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 9)
 	File_google_protobuf_wrappers_proto = protoimpl.FileBuilder{
 	File_google_protobuf_wrappers_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_wrappers_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_wrappers_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_wrappers_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_wrappers_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_wrappers_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_wrappers_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_wrappers_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_wrappers_proto_goTypes[0:][:9]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_wrappers_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_wrappers_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/wrappers.proto", xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped)
-	proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue")
-	proto.RegisterType((*FloatValue)(nil), "google.protobuf.FloatValue")
-	proto.RegisterType((*Int64Value)(nil), "google.protobuf.Int64Value")
-	proto.RegisterType((*UInt64Value)(nil), "google.protobuf.UInt64Value")
-	proto.RegisterType((*Int32Value)(nil), "google.protobuf.Int32Value")
-	proto.RegisterType((*UInt32Value)(nil), "google.protobuf.UInt32Value")
-	proto.RegisterType((*BoolValue)(nil), "google.protobuf.BoolValue")
-	proto.RegisterType((*StringValue)(nil), "google.protobuf.StringValue")
-	proto.RegisterType((*BytesValue)(nil), "google.protobuf.BytesValue")
 	xxx_File_google_protobuf_wrappers_proto_goTypes = nil
 	xxx_File_google_protobuf_wrappers_proto_goTypes = nil
 	xxx_File_google_protobuf_wrappers_proto_depIdxs = nil
 	xxx_File_google_protobuf_wrappers_proto_depIdxs = nil
 }
 }

+ 8 - 90
types/plugin/plugin.pb.go

@@ -4,11 +4,10 @@
 package plugin_proto
 package plugin_proto
 
 
 import (
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	descriptor "github.com/golang/protobuf/v2/types/descriptor"
 	descriptor "github.com/golang/protobuf/v2/types/descriptor"
-	reflect "reflect"
 )
 )
 
 
 // The version number of protocol compiler.
 // The version number of protocol compiler.
@@ -28,7 +27,7 @@ func (m *Version) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[0].MessageOf(m)
 	return xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[0].MessageOf(m)
 }
 }
 func (m *Version) Reset()         { *m = Version{} }
 func (m *Version) Reset()         { *m = Version{} }
-func (m *Version) String() string { return proto.CompactTextString(m) }
+func (m *Version) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*Version) ProtoMessage()    {}
 func (*Version) ProtoMessage()    {}
 
 
 // Deprecated: Use Version.ProtoReflect.Type instead.
 // Deprecated: Use Version.ProtoReflect.Type instead.
@@ -36,24 +35,6 @@ func (*Version) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{0}
 	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{0}
 }
 }
 
 
-func (m *Version) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Version.Unmarshal(m, b)
-}
-func (m *Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Version.Marshal(b, m, deterministic)
-}
-func (m *Version) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Version.Merge(m, src)
-}
-func (m *Version) XXX_Size() int {
-	return xxx_messageInfo_Version.Size(m)
-}
-func (m *Version) XXX_DiscardUnknown() {
-	xxx_messageInfo_Version.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Version proto.InternalMessageInfo
-
 func (m *Version) GetMajor() int32 {
 func (m *Version) GetMajor() int32 {
 	if m != nil && m.Major != nil {
 	if m != nil && m.Major != nil {
 		return *m.Major
 		return *m.Major
@@ -116,7 +97,7 @@ func (m *CodeGeneratorRequest) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[1].MessageOf(m)
 	return xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[1].MessageOf(m)
 }
 }
 func (m *CodeGeneratorRequest) Reset()         { *m = CodeGeneratorRequest{} }
 func (m *CodeGeneratorRequest) Reset()         { *m = CodeGeneratorRequest{} }
-func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) }
+func (m *CodeGeneratorRequest) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*CodeGeneratorRequest) ProtoMessage()    {}
 func (*CodeGeneratorRequest) ProtoMessage()    {}
 
 
 // Deprecated: Use CodeGeneratorRequest.ProtoReflect.Type instead.
 // Deprecated: Use CodeGeneratorRequest.ProtoReflect.Type instead.
@@ -124,24 +105,6 @@ func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{1}
 	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{1}
 }
 }
 
 
-func (m *CodeGeneratorRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CodeGeneratorRequest.Unmarshal(m, b)
-}
-func (m *CodeGeneratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CodeGeneratorRequest.Marshal(b, m, deterministic)
-}
-func (m *CodeGeneratorRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CodeGeneratorRequest.Merge(m, src)
-}
-func (m *CodeGeneratorRequest) XXX_Size() int {
-	return xxx_messageInfo_CodeGeneratorRequest.Size(m)
-}
-func (m *CodeGeneratorRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CodeGeneratorRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CodeGeneratorRequest proto.InternalMessageInfo
-
 func (m *CodeGeneratorRequest) GetFileToGenerate() []string {
 func (m *CodeGeneratorRequest) GetFileToGenerate() []string {
 	if m != nil {
 	if m != nil {
 		return m.FileToGenerate
 		return m.FileToGenerate
@@ -191,7 +154,7 @@ func (m *CodeGeneratorResponse) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[2].MessageOf(m)
 	return xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[2].MessageOf(m)
 }
 }
 func (m *CodeGeneratorResponse) Reset()         { *m = CodeGeneratorResponse{} }
 func (m *CodeGeneratorResponse) Reset()         { *m = CodeGeneratorResponse{} }
-func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) }
+func (m *CodeGeneratorResponse) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*CodeGeneratorResponse) ProtoMessage()    {}
 func (*CodeGeneratorResponse) ProtoMessage()    {}
 
 
 // Deprecated: Use CodeGeneratorResponse.ProtoReflect.Type instead.
 // Deprecated: Use CodeGeneratorResponse.ProtoReflect.Type instead.
@@ -199,24 +162,6 @@ func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{2}
 	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{2}
 }
 }
 
 
-func (m *CodeGeneratorResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CodeGeneratorResponse.Unmarshal(m, b)
-}
-func (m *CodeGeneratorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CodeGeneratorResponse.Marshal(b, m, deterministic)
-}
-func (m *CodeGeneratorResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CodeGeneratorResponse.Merge(m, src)
-}
-func (m *CodeGeneratorResponse) XXX_Size() int {
-	return xxx_messageInfo_CodeGeneratorResponse.Size(m)
-}
-func (m *CodeGeneratorResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CodeGeneratorResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CodeGeneratorResponse proto.InternalMessageInfo
-
 func (m *CodeGeneratorResponse) GetError() string {
 func (m *CodeGeneratorResponse) GetError() string {
 	if m != nil && m.Error != nil {
 	if m != nil && m.Error != nil {
 		return *m.Error
 		return *m.Error
@@ -294,7 +239,7 @@ func (m *CodeGeneratorResponse_File) ProtoReflect() protoreflect.Message {
 	return xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[3].MessageOf(m)
 	return xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[3].MessageOf(m)
 }
 }
 func (m *CodeGeneratorResponse_File) Reset()         { *m = CodeGeneratorResponse_File{} }
 func (m *CodeGeneratorResponse_File) Reset()         { *m = CodeGeneratorResponse_File{} }
-func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) }
+func (m *CodeGeneratorResponse_File) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*CodeGeneratorResponse_File) ProtoMessage()    {}
 func (*CodeGeneratorResponse_File) ProtoMessage()    {}
 
 
 // Deprecated: Use CodeGeneratorResponse_File.ProtoReflect.Type instead.
 // Deprecated: Use CodeGeneratorResponse_File.ProtoReflect.Type instead.
@@ -302,24 +247,6 @@ func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) {
 	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{2, 0}
 	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{2, 0}
 }
 }
 
 
-func (m *CodeGeneratorResponse_File) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CodeGeneratorResponse_File.Unmarshal(m, b)
-}
-func (m *CodeGeneratorResponse_File) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CodeGeneratorResponse_File.Marshal(b, m, deterministic)
-}
-func (m *CodeGeneratorResponse_File) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CodeGeneratorResponse_File.Merge(m, src)
-}
-func (m *CodeGeneratorResponse_File) XXX_Size() int {
-	return xxx_messageInfo_CodeGeneratorResponse_File.Size(m)
-}
-func (m *CodeGeneratorResponse_File) XXX_DiscardUnknown() {
-	xxx_messageInfo_CodeGeneratorResponse_File.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CodeGeneratorResponse_File proto.InternalMessageInfo
-
 func (m *CodeGeneratorResponse_File) GetName() string {
 func (m *CodeGeneratorResponse_File) GetName() string {
 	if m != nil && m.Name != nil {
 	if m != nil && m.Name != nil {
 		return *m.Name
 		return *m.Name
@@ -418,23 +345,14 @@ func xxx_File_google_protobuf_compiler_plugin_proto_init() {
 	if File_google_protobuf_compiler_plugin_proto != nil {
 	if File_google_protobuf_compiler_plugin_proto != nil {
 		return
 		return
 	}
 	}
-	messageTypes := make([]protoreflect.MessageType, 4)
 	File_google_protobuf_compiler_plugin_proto = protoimpl.FileBuilder{
 	File_google_protobuf_compiler_plugin_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_google_protobuf_compiler_plugin_proto_rawdesc,
 		RawDescriptor:      xxx_File_google_protobuf_compiler_plugin_proto_rawdesc,
 		GoTypes:            xxx_File_google_protobuf_compiler_plugin_proto_goTypes,
 		GoTypes:            xxx_File_google_protobuf_compiler_plugin_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_compiler_plugin_proto_depIdxs,
 		DependencyIndexes:  xxx_File_google_protobuf_compiler_plugin_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_google_protobuf_compiler_plugin_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
 	}.Init()
-	messageGoTypes := xxx_File_google_protobuf_compiler_plugin_proto_goTypes[0:][:4]
-	for i, mt := range messageTypes {
-		xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_google_protobuf_compiler_plugin_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("google/protobuf/compiler/plugin.proto", xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped)
-	proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version")
-	proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest")
-	proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse")
-	proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File")
 	xxx_File_google_protobuf_compiler_plugin_proto_goTypes = nil
 	xxx_File_google_protobuf_compiler_plugin_proto_goTypes = nil
 	xxx_File_google_protobuf_compiler_plugin_proto_depIdxs = nil
 	xxx_File_google_protobuf_compiler_plugin_proto_depIdxs = nil
 }
 }