reflect/protoreflect: add {Message,List,Map}.IsValid
Various protoreflect methods can return an "empty, read-only" message,
list, or map value. Provide a method to test if a value is one of these.
Fixes golang/protobuf#966
Change-Id: I793d8426d6e2201755983c06f024412a7e09bc4c
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/209018
Reviewed-by: Joe Tsai <joetsai@google.com>
diff --git a/internal/impl/message_reflect_gen.go b/internal/impl/message_reflect_gen.go
index 1c56375..e894659 100644
--- a/internal/impl/message_reflect_gen.go
+++ b/internal/impl/message_reflect_gen.go
@@ -124,6 +124,9 @@
m.messageInfo().init()
m.messageInfo().setUnknown(m.pointer(), b)
}
+func (m *messageState) IsValid() bool {
+ return m.pointer().IsNil()
+}
func (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor {
return m.messageInfo().Desc
@@ -241,3 +244,6 @@
m.messageInfo().init()
m.messageInfo().setUnknown(m.pointer(), b)
}
+func (m *messageReflectWrapper) IsValid() bool {
+ return m.pointer().IsNil()
+}