mirror of
https://github.com/mikefarah/yq.git
synced 2026-07-06 21:55:37 +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{
|
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,
|
skipDoc: true,
|
||||||
description: "explicit !!merge tag on << key is preserved through ireduce merge",
|
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))
|
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)
|
err := applyAssignment(d, context, pathIndexToStartFrom, lhs, candidate, preferences)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user