Skip to content

Commit 90fddb4

Browse files
committed
fix options deletion
1 parent 2ddcd04 commit 90fddb4

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

main.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ func main() {
103103
}
104104

105105
for _, message := range file.GetMessageType() {
106-
allMessageDescriptors[trimPackageFromName(fmt.Sprintf("%s.%s", file.GetPackage(), message.GetName()))] = message
106+
fillAllMessageDescriptors(file.GetPackage(), message)
107+
//allMessageDescriptors[trimPackageFromName(fmt.Sprintf("%s.%s", file.GetPackage(), message.GetName()))] = message
107108
}
108109
}
109110

@@ -159,19 +160,24 @@ func resolveMessageExtends(message *descriptorpb.DescriptorProto) {
159160

160161
parentResolvedMap[message] = true
161162
var options []*descriptorpb.UninterpretedOption
163+
var keepOptions []*descriptorpb.UninterpretedOption
162164
var fields []*descriptorpb.FieldDescriptorProto
163-
for i, option := range message.GetOptions().GetUninterpretedOption() {
165+
for _, option := range message.GetOptions().GetUninterpretedOption() {
164166
if isOptionOneProtoExtends(option) {
165-
message.Options.UninterpretedOption = append(message.Options.UninterpretedOption[:i], message.Options.UninterpretedOption[i+1:]...)
166167
parent := allMessageDescriptors[trimPackageFromName(string(option.GetStringValue()))]
167168
if parent == nil {
168169
log.Fatalf("unable to find message %s", option.GetStringValue())
169170
}
170171
resolveMessageExtends(parent)
171172
fields = append(fields, parent.Field...)
172173
options = append(options, parent.GetOptions().GetUninterpretedOption()...)
174+
} else {
175+
keepOptions = append(keepOptions, option)
173176
}
174177
}
178+
if message.Options != nil {
179+
message.Options.UninterpretedOption = keepOptions
180+
}
175181

176182
message.Field = append(message.Field, fields...)
177183
if *pOptions {
@@ -200,3 +206,10 @@ func isOptionOneProtoExtends(option *descriptorpb.UninterpretedOption) bool {
200206
}
201207
return false
202208
}
209+
210+
func fillAllMessageDescriptors(pkg string, message *descriptorpb.DescriptorProto) {
211+
allMessageDescriptors[trimPackageFromName(fmt.Sprintf("%s.%s", pkg, message.GetName()))] = message
212+
for _, sub := range message.GetNestedType() {
213+
fillAllMessageDescriptors(fmt.Sprintf("%s.%s", pkg, message.GetName()), sub)
214+
}
215+
}

0 commit comments

Comments
 (0)