Fix precedence of merge anchor sequence for traverse (explode was already correct)

This commit is contained in:
Steven WdV
2025-06-16 13:36:42 +02:00
parent 31628e7324
commit 4d88d51b1b
3 changed files with 16 additions and 14 deletions
+8 -6
View File
@@ -292,15 +292,17 @@ func doTraverseMap(newMatches *orderedmap.OrderedMap, node *CandidateNode, wante
return nil
}
func traverseMergeAnchor(newMatches *orderedmap.OrderedMap, value *CandidateNode, wantedKey string, prefs traversePreferences, splat bool) error {
if value.Kind == AliasNode {
value = value.Alias
func traverseMergeAnchor(newMatches *orderedmap.OrderedMap, merge *CandidateNode, wantedKey string, prefs traversePreferences, splat bool) error {
if merge.Kind == AliasNode {
merge = merge.Alias
}
switch value.Kind {
switch merge.Kind {
case MappingNode:
return doTraverseMap(newMatches, value, wantedKey, prefs, splat)
return doTraverseMap(newMatches, merge, wantedKey, prefs, splat)
case SequenceNode:
for _, childValue := range value.Content {
// Earlier keys take precedence
for index := len(merge.Content) - 1; index >= 0; index = index - 1 {
childValue := merge.Content[index]
if childValue.Kind == AliasNode {
childValue = childValue.Alias
}