Precompute canonical paths before sorting
This commit is contained in:
@@ -131,9 +131,24 @@ func previousOrigins(origin Origin) []Origin {
|
||||
func displacedOrigins(node *document.Node, origins map[string]Origin, path Path) []displacedDefinition {
|
||||
var displaced []displacedDefinition
|
||||
collectDisplacedOrigins(&displaced, node, origins, path, Origin{})
|
||||
slices.SortFunc(displaced, func(left, right displacedDefinition) int {
|
||||
return strings.Compare(left.path.String(), right.path.String())
|
||||
return sortDisplacedDefinitions(displaced)
|
||||
}
|
||||
|
||||
func sortDisplacedDefinitions(displaced []displacedDefinition) []displacedDefinition {
|
||||
type orderedDefinition struct {
|
||||
definition displacedDefinition
|
||||
pointer string
|
||||
}
|
||||
ordered := make([]orderedDefinition, len(displaced))
|
||||
for i, definition := range displaced {
|
||||
ordered[i] = orderedDefinition{definition: definition, pointer: definition.path.String()}
|
||||
}
|
||||
slices.SortFunc(ordered, func(left, right orderedDefinition) int {
|
||||
return strings.Compare(left.pointer, right.pointer)
|
||||
})
|
||||
for i, item := range ordered {
|
||||
displaced[i] = item.definition
|
||||
}
|
||||
return displaced
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user