func AppendFileOperationRegistrationOptions()

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
}