proto, internal/impl: make IsInitialized more consistent
Make the fast-path and slow-path versions of IsInitialized report
exactly the same errors: An errors.RequiredNotSet containing the
full name of one of the unset required fields.
Bugfix: Fast-path IsInitialized on a nil message reports an error only
when the message directly contains required fields.
Bugfix: Include fast-path IsInitialized in legacy messageIfaceWrapper.
Fixes golang/protobuf#887
Change-Id: Ia5e4b386f8c23f6f855d995f4a098b1338acbae3
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/185397
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/proto/isinit_test.go b/proto/isinit_test.go
index 232202f..1edbfb4 100644
--- a/proto/isinit_test.go
+++ b/proto/isinit_test.go
@@ -21,13 +21,13 @@
}{
{
&testpb.TestRequired{},
- `proto: required field required_field not set`,
+ `proto: required field goproto.proto.test.TestRequired.required_field not set`,
},
{
&testpb.TestRequiredForeign{
OptionalMessage: &testpb.TestRequired{},
},
- `proto: required field optional_message.required_field not set`,
+ `proto: required field goproto.proto.test.TestRequired.required_field not set`,
},
{
&testpb.TestRequiredForeign{
@@ -36,7 +36,7 @@
{},
},
},
- `proto: required field repeated_message[1].required_field not set`,
+ `proto: required field goproto.proto.test.TestRequired.required_field not set`,
},
{
&testpb.TestRequiredForeign{
@@ -44,7 +44,7 @@
1: {},
},
},
- `proto: required field map_message[1].required_field not set`,
+ `proto: required field goproto.proto.test.TestRequired.required_field not set`,
},
} {
err := proto.IsInitialized(test.m)