Fix proto.Equal handling of proto3 bytes fields.
proto3 specifies that non-message scalar fields don't have a "has" bit,
and so []byte{} and []byte(nil) are considered equivalent.
diff --git a/proto/equal_test.go b/proto/equal_test.go
index 0e0db8a..7b45eaa 100644
--- a/proto/equal_test.go
+++ b/proto/equal_test.go
@@ -35,6 +35,7 @@
"testing"
. "github.com/golang/protobuf/proto"
+ proto3pb "github.com/golang/protobuf/proto/proto3_proto"
pb "github.com/golang/protobuf/proto/testdata"
)
@@ -131,6 +132,8 @@
&pb.MyMessage{RepBytes: [][]byte{[]byte("sham"), []byte("wow")}},
true,
},
+ // In proto3, []byte{} and []byte(nil) are equal.
+ {"proto3 bytes, empty vs nil", &proto3pb.Message{Data: []byte{}}, &proto3pb.Message{Data: nil}, true},
{"extension vs. no extension", messageWithoutExtension, messageWithExtension1a, false},
{"extension vs. same extension", messageWithExtension1a, messageWithExtension1b, true},