From b120a23bc84886a63c9efee001585b486993dd2d Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Mon, 16 Dec 2019 13:23:25 -0800 Subject: [PATCH] internal/impl: fix reversed IsValid test Change-Id: Iaf5291a6bf31ad3dd130fca06840cec66b896f59 Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/211558 Reviewed-by: Joe Tsai --- internal/cmd/generate-types/impl.go | 2 +- internal/impl/message_reflect_gen.go | 4 ++-- internal/impl/message_reflect_test.go | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/cmd/generate-types/impl.go b/internal/cmd/generate-types/impl.go index 401eba81..700ae27b 100644 --- a/internal/cmd/generate-types/impl.go +++ b/internal/cmd/generate-types/impl.go @@ -741,7 +741,7 @@ func (m *{{.}}) SetUnknown(b protoreflect.RawFields) { m.messageInfo().setUnknown(m.pointer(), b) } func (m *{{.}}) IsValid() bool { - return m.pointer().IsNil() + return !m.pointer().IsNil() } {{end}} diff --git a/internal/impl/message_reflect_gen.go b/internal/impl/message_reflect_gen.go index e8946593..94bc88ce 100644 --- a/internal/impl/message_reflect_gen.go +++ b/internal/impl/message_reflect_gen.go @@ -125,7 +125,7 @@ func (m *messageState) SetUnknown(b protoreflect.RawFields) { m.messageInfo().setUnknown(m.pointer(), b) } func (m *messageState) IsValid() bool { - return m.pointer().IsNil() + return !m.pointer().IsNil() } func (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor { @@ -245,5 +245,5 @@ func (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) { m.messageInfo().setUnknown(m.pointer(), b) } func (m *messageReflectWrapper) IsValid() bool { - return m.pointer().IsNil() + return !m.pointer().IsNil() } diff --git a/internal/impl/message_reflect_test.go b/internal/impl/message_reflect_test.go index 82d5f81d..bb6bda5c 100644 --- a/internal/impl/message_reflect_test.go +++ b/internal/impl/message_reflect_test.go @@ -1437,6 +1437,17 @@ func TestReset(t *testing.T) { m.Descriptor() } +func TestIsValid(t *testing.T) { + var m *testpb.TestAllTypes + if got, want := m.ProtoReflect().IsValid(), false; got != want { + t.Errorf("((*M)(nil)).ProtoReflect().IsValid() = %v, want %v", got, want) + } + m = &testpb.TestAllTypes{} + if got, want := m.ProtoReflect().IsValid(), true; got != want { + t.Errorf("(&M{}).ProtoReflect().IsValid() = %v, want %v", got, want) + } +} + // The MessageState implementation makes the assumption that when a // concrete message is unsafe casted as a *MessageState, the Go GC does // not reclaim the memory for the remainder of the concrete message.