mirror of
https://github.com/mikefarah/yq.git
synced 2026-07-02 02:11:39 +00:00
Remove redundant check and add test case for explicit !!merge on *+ traversal
This commit is contained in:
parent
5259c1c6a7
commit
a19d19119c
@ -319,6 +319,18 @@ somethingElse:
|
||||
`
|
||||
|
||||
var anchorOperatorScenarios = []expressionScenario{
|
||||
{
|
||||
// mergeObjects previously skipped all !!merge-tagged nodes. Since !!merge only appears on
|
||||
// << map keys, this meant applyAssignment was never called for the << key. It was later
|
||||
// autocreated by createStringScalarNode("<<") with tag !!str, silently dropping !!merge.
|
||||
// DontFollowAlias:true already prevents aliases being followed, so the skip was redundant.
|
||||
// Old (buggy) output: "D0, P[], (!!map)::base: &base\n x: 1\ndest:\n <<: *base\n"
|
||||
skipDoc: true,
|
||||
description: "direct *+ preserves explicit !!merge tag on << key (regression for issue 2677)",
|
||||
document: "base: &base\n x: 1\ndest:\n !!merge <<: *base\n",
|
||||
expression: `. as $d | {} *+ $d`,
|
||||
expected: []string{"D0, P[], (!!map)::base: &base\n x: 1\ndest:\n !!merge <<: *base\n"},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
description: "explicit !!merge tag on << key is preserved through ireduce merge",
|
||||
|
||||
@ -189,10 +189,6 @@ func mergeObjects(d *dataTreeNavigator, context Context, lhs *CandidateNode, rhs
|
||||
|
||||
log.Debugf("going to applied assignment to LHS: %v with RHS: %v", NodeToString(lhs), NodeToString(candidate))
|
||||
|
||||
if candidate.Tag == "!!merge" && !candidate.IsMapKey {
|
||||
continue
|
||||
}
|
||||
|
||||
err := applyAssignment(d, context, pathIndexToStartFrom, lhs, candidate, preferences)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
Loading…
Reference in New Issue
Block a user