Some bug fixes for reserved field names and ranges

This commit is contained in:
Arkadiy Tetelman committed 2023-01-01 10:22:24 -08:00
1 parent 25f5d1df8f
commit fc85ead5c1
2 files changed
+23 -6

No files matched your search

+11
View File
@@ -9,6 +9,17 @@ service Greeter {
rpc StreamMethodServer (StreamRequest) returns (stream StreamReply) {}
}
message Reserved {
reserved "foo";
reserved 1;
reserved 4 to 7;
}
message ReservedEnum {
reserved "FOO";
reserved 10 to max;
}
message HelloRequest {
message Test {
string blah = 1;
+12 -6
View File
@@ -6,6 +6,7 @@ import (
"strconv"
"strings"
"google.golang.org/protobuf/encoding/protowire"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/reflect/protodesc"
"google.golang.org/protobuf/reflect/protoreflect"
@@ -152,24 +153,29 @@ func (pd *ProtoDefinition) writeMessage(message protoreflect.MessageDescriptor)
for i := 0; i < message.ReservedNames().Len(); i++ {
name := message.ReservedNames().Get(i)
pd.writeIndented("reserved ")
pd.writeIndented("reserved \"")
pd.write(string(name))
pd.write(";\n")
pd.write("\";\n")
}
for i := 0; i < message.ReservedRanges().Len(); i++ {
reservedRange := message.ReservedRanges().Get(i)
pd.writeIndented("reserved ")
if reservedRange[0] == reservedRange[1] {
pd.write(string(reservedRange[0]))
} else {
reservedRange := message.ReservedRanges().Get(i)
if reservedRange[0] > reservedRange[1] {
reservedRange[1], reservedRange[0] = reservedRange[0], reservedRange[1]
}
reservedRange[1] -= 1
if reservedRange[0] == reservedRange[1] {
pd.write(fmt.Sprintf("%d", reservedRange[0]))
} else {
pd.write(fmt.Sprintf("%d", reservedRange[0]))
pd.write(" to ")
if reservedRange[1] == protowire.MaxValidNumber {
pd.write("max")
} else {
pd.write(fmt.Sprintf("%d", reservedRange[1]))
}
}
pd.write(";\n")
}