in src/ulsp/mapper/lsp_lifecycle.go [315:339]
func AppendFileOperationRegistrationOptions(primary *protocol.FileOperationRegistrationOptions, secondary *protocol.FileOperationRegistrationOptions) *protocol.FileOperationRegistrationOptions {
result := &protocol.FileOperationRegistrationOptions{}
if primary == nil && secondary == nil {
return result
} else if primary == nil && secondary != nil {
result.Filters = secondary.Filters
} else if primary != nil && secondary == nil {
result.Filters = primary.Filters
} else {
resultFilters := make([]protocol.FileOperationFilter, 0, len(primary.Filters)+len(secondary.Filters))
seen := make(map[protocol.FileOperationFilter]interface{})
for _, filter := range primary.Filters {
seen[filter] = nil
resultFilters = append(resultFilters, filter)
}
for _, filter := range secondary.Filters {
if _, ok := seen[filter]; !ok {
resultFilters = append(resultFilters, filter)
}
}
result.Filters = resultFilters
}
return result
}