reflect/protoreflect: add Descriptor specific methods
Added methods:
Enum.Descriptor
Message.Descriptor
EnumType.Descriptor
MessageType.Descriptor
ExtensionType.Descriptor
Message.New
All functionality is switched over to use those methods instead of
implicitly relying on the fact that {Enum,Message}Type implicitly
implement the associated descriptor interface.
This CL does not yet remove {Enum,Message}.Type or prevent
{Enum,Message,Extension}Type from implementating a descriptor.
That is a subsequent CL.
The Message.New method is also added to replace functionality
that will be lost when the Type methods are removed.
Change-Id: I7fefde1673bbd40bfdac489aca05cec9a6c98eb1
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/174918
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/encoding/textpb/decode_test.go b/encoding/textpb/decode_test.go
index ddebffa..dd166cd 100644
--- a/encoding/textpb/decode_test.go
+++ b/encoding/textpb/decode_test.go
@@ -11,6 +11,7 @@
protoV1 "github.com/golang/protobuf/proto"
"github.com/golang/protobuf/v2/encoding/textpb"
"github.com/golang/protobuf/v2/internal/errors"
+ pimpl "github.com/golang/protobuf/v2/internal/impl"
"github.com/golang/protobuf/v2/internal/scalar"
"github.com/golang/protobuf/v2/proto"
preg "github.com/golang/protobuf/v2/reflect/protoregistry"
@@ -1390,7 +1391,7 @@
}, {
desc: "Any expanded",
umo: textpb.UnmarshalOptions{
- Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ Resolver: preg.NewTypes(pimpl.Export{}.MessageTypeOf(&pb2.Nested{})),
},
inputMessage: &knownpb.Any{},
inputText: `
@@ -1420,7 +1421,7 @@
}, {
desc: "Any expanded with empty value",
umo: textpb.UnmarshalOptions{
- Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ Resolver: preg.NewTypes(pimpl.Export{}.MessageTypeOf(&pb2.Nested{})),
},
inputMessage: &knownpb.Any{},
inputText: `[foo.com/pb2.Nested]: {}`,
@@ -1430,7 +1431,7 @@
}, {
desc: "Any expanded with missing required error",
umo: textpb.UnmarshalOptions{
- Resolver: preg.NewTypes((&pb2.PartialRequired{}).ProtoReflect().Type()),
+ Resolver: preg.NewTypes(pimpl.Export{}.MessageTypeOf(&pb2.PartialRequired{})),
},
inputMessage: &knownpb.Any{},
inputText: `
@@ -1458,7 +1459,7 @@
}, {
desc: "Any with invalid UTF-8",
umo: textpb.UnmarshalOptions{
- Resolver: preg.NewTypes((&pb3.Nested{}).ProtoReflect().Type()),
+ Resolver: preg.NewTypes(pimpl.Export{}.MessageTypeOf(&pb3.Nested{})),
},
inputMessage: &knownpb.Any{},
inputText: `
@@ -1476,7 +1477,7 @@
t.Fatalf("error in binary marshaling message for Any.value: %v", err)
}
return &knownpb.Any{
- TypeUrl: string(m.ProtoReflect().Type().FullName()),
+ TypeUrl: string(m.ProtoReflect().Descriptor().FullName()),
Value: b,
}
}(),
@@ -1490,7 +1491,7 @@
}, {
desc: "Any expanded with invalid value",
umo: textpb.UnmarshalOptions{
- Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ Resolver: preg.NewTypes(pimpl.Export{}.MessageTypeOf(&pb2.Nested{})),
},
inputMessage: &knownpb.Any{},
inputText: `[pb2.Nested]: 123`,
@@ -1498,7 +1499,7 @@
}, {
desc: "Any expanded with unknown fields",
umo: textpb.UnmarshalOptions{
- Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ Resolver: preg.NewTypes(pimpl.Export{}.MessageTypeOf(&pb2.Nested{})),
},
inputMessage: &knownpb.Any{},
inputText: `
@@ -1509,7 +1510,7 @@
}, {
desc: "Any contains expanded and unexpanded fields",
umo: textpb.UnmarshalOptions{
- Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ Resolver: preg.NewTypes(pimpl.Export{}.MessageTypeOf(&pb2.Nested{})),
},
inputMessage: &knownpb.Any{},
inputText: `