Skip to content

Commit 70ac3d6

Browse files
committed
Add override behavior comments
1 parent 904215e commit 70ac3d6

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

pkg/yqlib/operator_anchors_aliases.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ func reconstructAliasedMap(node *CandidateNode, context Context) error {
145145
// no it needs to recurse in overrideEntry.
146146

147147
if ConfiguredYamlPreferences.FixMergeAnchorToSpec {
148+
// First evaluate merge keys to make explicit keys take precedence, following spec
149+
// We also iterate in reverse to make earlier merge keys take precedence,
150+
// although normally there's just one '<<'
148151
for index := len(node.Content) - 2; index >= 0; index -= 2 {
149152
keyNode := node.Content[index]
150153
valueNode := node.Content[index+1]
@@ -255,6 +258,8 @@ func applyMergeAnchor(node *CandidateNode, merge *CandidateNode, mergeIndex int,
255258
return applyMergeAnchorMap(node, merge, mergeIndex, inline, newContent)
256259
case SequenceNode:
257260
log.Debugf("a merge list!")
261+
// Reverse to make earlier values take precedence, following spec
262+
// Note: This was already the case before FixMergeAnchorToSpec
258263
content := slices.Backward(merge.Content)
259264
for _, childValue := range content {
260265
childInline := inline

pkg/yqlib/operator_traverse_path.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,9 @@ func doTraverseMap(newMatches *orderedmap.OrderedMap, node *CandidateNode, wante
269269

270270
if !prefs.DontFollowAlias {
271271
if ConfiguredYamlPreferences.FixMergeAnchorToSpec {
272+
// First evaluate merge keys to make explicit keys take precedence, following spec
273+
// We also iterate in reverse to make earlier merge keys take precedence,
274+
// although normally there's just one '<<'
272275
for index := len(node.Content) - 2; index >= 0; index -= 2 {
273276
keyNode := node.Content[index]
274277
valueNode := node.Content[index+1]
@@ -330,6 +333,7 @@ func traverseMergeAnchor(newMatches *orderedmap.OrderedMap, merge *CandidateNode
330333
case SequenceNode:
331334
content := slices.All(merge.Content)
332335
if ConfiguredYamlPreferences.FixMergeAnchorToSpec {
336+
// Reverse to make earlier values take precedence, following spec
333337
content = slices.Backward(merge.Content)
334338
}
335339
for _, childValue := range content {

0 commit comments

Comments
 (0)