Fixes issue when update against self #1869

This commit is contained in:
Mike Farah 2023-11-18 12:19:27 +11:00
parent 4b8c8506a5
commit 3d64bdadc1
2 changed files with 13 additions and 1 deletions

View File

@ -368,7 +368,10 @@ func (n *CandidateNode) doCopy(cloneContent bool) *CandidateNode {
// updates this candidate from the given candidate node // updates this candidate from the given candidate node
func (n *CandidateNode) UpdateFrom(other *CandidateNode, prefs assignPreferences) { func (n *CandidateNode) UpdateFrom(other *CandidateNode, prefs assignPreferences) {
if n == other {
log.Debugf("UpdateFrom, no need to update from myself.")
return
}
// if this is an empty map or empty array, use the style of other node. // if this is an empty map or empty array, use the style of other node.
if (n.Kind != ScalarNode && len(n.Content) == 0) || if (n.Kind != ScalarNode && len(n.Content) == 0) ||
// if the tag has changed (e.g. from str to bool) // if the tag has changed (e.g. from str to bool)

View File

@ -17,6 +17,15 @@ var assignOperatorScenarios = []expressionScenario{
"D0, P[], ()::a:\n b: cat\nx: frog\n", "D0, P[], ()::a:\n b: cat\nx: frog\n",
}, },
}, },
{
description: "Create yaml file",
document: "a: {b: 3}",
expression: `.a |= .`,
skipDoc: true,
expected: []string{
"D0, P[], (!!map)::a: {b: 3}\n",
},
},
{ {
skipDoc: true, skipDoc: true,
document: "{}", document: "{}",