Skip to content

Commit 5d00292

Browse files
authored
protoprint: when sorting elements, first value must be zero in proto3 file(#582)
1 parent e429ee6 commit 5d00292

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

desc/protoprint/print.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -2137,11 +2137,20 @@ func (a elementAddrs) Less(i, j int) bool {
21372137
return vi.GetNumber() < vj.GetNumber()
21382138

21392139
case *desc.EnumValueDescriptor:
2140-
// enum values ordered by number then name
2140+
// enum values ordered by number then name,
2141+
// but first value number must be 0 in proto3
21412142
vj := dj.(*desc.EnumValueDescriptor)
21422143
if vi.GetNumber() == vj.GetNumber() {
21432144
return vi.GetName() < vj.GetName()
21442145
}
2146+
if vi.GetFile().IsProto3() {
2147+
if vj.GetNumber() == 0 {
2148+
return false
2149+
}
2150+
if vi.GetNumber() == 0 {
2151+
return true
2152+
}
2153+
}
21452154
return vi.GetNumber() < vj.GetNumber()
21462155

21472156
case *descriptorpb.DescriptorProto_ExtensionRange:

0 commit comments

Comments
 (0)