diff --git a/internal/actions/chawathe.go b/internal/actions/chawathe.go index d6f083d4..bd115e17 100644 --- a/internal/actions/chawathe.go +++ b/internal/actions/chawathe.go @@ -155,10 +155,9 @@ func (s *chawatheState) generate() *EditScript { Node: w.orig, Parent: z.orig, Position: k, + Subtree: len(w.orig.Children) > 0, }) - s.addDescendantMoves(w) - oldk := w.ChildIndex() if oldk >= 0 { w.parent.children = slices.Delete(w.parent.children, oldk, oldk+1) @@ -279,10 +278,9 @@ func (s *chawatheState) alignChildren(w *cnode, x *treesitter.ASTNode) { Node: a.orig, Parent: w.orig, Position: k, + Subtree: len(a.orig.Children) > 0, }) - s.addDescendantMoves(a) - insertChild(w, a, k) s.srcInOrder[a] = true @@ -360,22 +358,3 @@ func insertChild(parent, child *cnode, k int) { k = max(0, min(k, len(parent.children))) parent.children = slices.Insert(parent.children, k, child) } - -func (s *chawatheState) addDescendantMoves(n *cnode) { - var traverse func(curr *cnode) - traverse = func(curr *cnode) { - for _, child := range curr.children { - if dst, ok := s.cpySrcToDst[child]; ok { - pos := max(0, dst.ChildIndex()) - s.script.Add(Action{ - Type: Move, - Node: child.orig, - Parent: dst.Parent, - Position: pos, - }) - } - traverse(child) - } - } - traverse(n) -} diff --git a/internal/engine/top-down.go b/internal/engine/top-down.go index 003ecd83..61ffc86b 100644 --- a/internal/engine/top-down.go +++ b/internal/engine/top-down.go @@ -11,6 +11,7 @@ type scoredPair struct { pair [2]*treesitter.ASTNode dice float64 ancSim int + lineageSim int nameMatched bool mismatched bool } @@ -114,10 +115,12 @@ func TopDown( di := Dice(t1.Parent, t2.Parent, m.Src()) si := AncestorNameSimilarity(t1, t2) + li := parentLineageSimilarity(t1, t2) scored = append(scored, scoredPair{ pair: pair, dice: di, ancSim: si, + lineageSim: li, nameMatched: nameMatched, mismatched: mismatched, }) @@ -133,7 +136,10 @@ func TopDown( if scored[i].ancSim != scored[j].ancSim { return scored[i].ancSim > scored[j].ancSim } - return scored[i].dice > scored[j].dice + if scored[i].dice != scored[j].dice { + return scored[i].dice > scored[j].dice + } + return scored[i].lineageSim > scored[j].lineageSim }) for len(scored) > 0 { @@ -218,3 +224,18 @@ func openUnmatched( } } } + +// Checks if the immediate parent and grandparent node types match to help break +// ties when identical subtrees appear in different parts of the file. +func parentLineageSimilarity(t1, t2 *treesitter.ASTNode) int { + score := 0 + p1, p2 := t1.Parent, t2.Parent + if p1 != nil && p2 != nil && p1.Type == p2.Type { + score += 2 + gp1, gp2 := p1.Parent, p2.Parent + if gp1 != nil && gp2 != nil && gp1.Type == gp2.Type { + score += 1 + } + } + return score +} diff --git a/internal/engine/utils.go b/internal/engine/utils.go index 0769fc1c..adc7921e 100644 --- a/internal/engine/utils.go +++ b/internal/engine/utils.go @@ -238,48 +238,39 @@ func AncestorNameSimilarity(t1, t2 *treesitter.ASTNode) int { return typ == "identifier" || typ == "field_identifier" || typ == "type_identifier" || typ == "name" } - labels1 := make(map[string]bool) - curr := t1.Parent - for curr != nil { - if name := getDeclarationName(curr); name != "" { - labels1[name] = true - } - for _, child := range curr.Children { - if child.Label != "" && isID(r1, child.Type) { - labels1[child.Label] = true + collectLabels := func(t *treesitter.ASTNode, r *treesitter.Rules) map[string]bool { + labels := make(map[string]bool, 8) + curr := t.Parent + for curr != nil { + if name := getDeclarationName(curr); name != "" { + labels[name] = true } - if child.IsScaffolding() { - for _, sub := range child.Children { - if sub.Label != "" && isID(r1, sub.Type) { - labels1[sub.Label] = true - } - } - } - } - curr = curr.Parent - } - - labels2 := make(map[string]bool) - curr = t2.Parent - for curr != nil { - if name := getDeclarationName(curr); name != "" { - labels2[name] = true - } - for _, child := range curr.Children { - if child.Label != "" && isID(r2, child.Type) { - labels2[child.Label] = true + if key := getKeyLabel(curr); key != "" { + labels[key] = true } - if child.IsScaffolding() { - for _, sub := range child.Children { - if sub.Label != "" && isID(r2, sub.Type) { - labels2[sub.Label] = true + for _, child := range curr.Children { + if child.Label != "" && isID(r, child.Type) { + labels[child.Label] = true + } + if child.IsScaffolding() { + for _, sub := range child.Children { + if sub.Label != "" && isID(r, sub.Type) { + labels[sub.Label] = true + } + if key := getKeyLabel(sub); key != "" { + labels[key] = true + } } } } + curr = curr.Parent } - curr = curr.Parent + return labels } + labels1 := collectLabels(t1, r1) + labels2 := collectLabels(t2, r2) + overlap := 0 for l := range labels2 { if labels1[l] { diff --git a/internal/engine/utils_test.go b/internal/engine/utils_test.go index 3588db59..0807910a 100644 --- a/internal/engine/utils_test.go +++ b/internal/engine/utils_test.go @@ -195,6 +195,19 @@ func TestAncestorNameSimilarity(t *testing.T) { } } +func TestAncestorNameSimilarityPairKey(t *testing.T) { + // Ancestor pair keys (like in JSON/YAML) should contribute to similarity overlap. + pair1 := testutil.Node("pair", "", testutil.Leaf("string", "\"priority\""), testutil.Node("object", "", testutil.Leaf("string", "min"))) + pair2 := testutil.Node("pair", "", testutil.Leaf("string", "\"priority\""), testutil.Node("object", "", testutil.Leaf("string", "max"))) + leaf1 := pair1.Children[1].Children[0] + leaf2 := pair2.Children[1].Children[0] + + overlap := AncestorNameSimilarity(leaf1, leaf2) + if overlap != 1 { + t.Errorf("expected overlap=1 for pair key 'priority', got %d", overlap) + } +} + func TestAncestorNameSimilarityNil(t *testing.T) { if AncestorNameSimilarity(nil, testutil.Leaf("id", "x")) != 0 { t.Error("nil input should return 0") diff --git a/internal/postprocess/collapsing.go b/internal/postprocess/collapsing.go index 4c5667c9..78e65304 100644 --- a/internal/postprocess/collapsing.go +++ b/internal/postprocess/collapsing.go @@ -6,6 +6,9 @@ import ( "github.com/HarshK97/diffmantic/internal/treesitter" ) +// Collapse cleans up fine-grained actions in the edit script by folding +// fully inserted or deleted children into subtree actions, and dropping redundant +// scaffolding and wrapper actions. func Collapse( es *actions.EditScript, ms *engine.Mapping, @@ -25,7 +28,6 @@ func Collapse( moved := make(map[*treesitter.ASTNode]*actions.Action) updated := make(map[*treesitter.ASTNode]*actions.Action) suppressed := make(map[*actions.Action]bool) - contentMoveSuppressed := make(map[*actions.Action]bool) for _, a := range actionPtrs { switch a.Type { @@ -52,13 +54,13 @@ func Collapse( } } - // Collapse/Clean Inserts bottom-up on the destination tree + // Fold child inserts into parent subtree inserts when the whole branch is new. for _, parent := range dstRoot.PostOrder() { if act, ok := inserted[parent]; ok && len(parent.Children) > 0 { allChildrenInserted := true for _, child := range parent.Children { childAct, ok := inserted[child] - if !ok { + if !ok || suppressed[childAct] { allChildrenInserted = false break } @@ -66,24 +68,6 @@ func Collapse( allChildrenInserted = false break } - if suppressed[childAct] { - if contentMoveSuppressed[childAct] { - hasActiveInsertChildren := false - for _, gc := range child.Children { - if gcAct, gcIns := inserted[gc]; gcIns && !suppressed[gcAct] { - hasActiveInsertChildren = true - break - } - } - if hasActiveInsertChildren { - allChildrenInserted = false - break - } - } else { - allChildrenInserted = false - break - } - } } if allChildrenInserted { @@ -93,23 +77,7 @@ func Collapse( } } - // Suppress redundant scaffolding Insert actions in a second pass, after - // all Subtree:true/KillChildren determinations are finalized. This avoids - // a cascade bug where prematurely suppressing a scaffolding child's Insert - // prevents its parent from reaching Subtree:true. - for _, node := range dstRoot.PostOrder() { - if node.IsScaffolding() { - if sAct, ok := inserted[node]; ok && !suppressed[sAct] && !sAct.Subtree { - if node.Parent != nil { - if pAct, ok := inserted[node.Parent]; ok && !suppressed[pAct] { - suppressed[sAct] = true - } - } - } - } - } - - // Collapse/Clean Deletes bottom-up on the source tree + // Fold child deletes into parent subtree deletes when the whole branch was removed. for _, parent := range srcRoot.PostOrder() { if act, ok := deleted[parent]; ok && len(parent.Children) > 0 { allChildrenDeleted := true @@ -132,79 +100,12 @@ func Collapse( } } - // Collapse/Clean Moves bottom-up on the source tree - for _, parentSrc := range srcRoot.PostOrder() { - if act, ok := moved[parentSrc]; ok && len(parentSrc.Children) > 0 { - allChildrenMovedToSameParent := true - dstParent := ms.Src()[parentSrc] - if dstParent == nil { - allChildrenMovedToSameParent = false - } else { - for _, childSrc := range parentSrc.Children { - childAct, ok := moved[childSrc] - if !ok || suppressed[childAct] { - allChildrenMovedToSameParent = false - break - } - childDst := ms.Src()[childSrc] - if childDst == nil || childDst.Parent != dstParent || childAct.Parent != dstParent { - allChildrenMovedToSameParent = false - break - } - if len(childAct.Node.Children) > 0 && !childAct.Subtree { - allChildrenMovedToSameParent = false - break - } - } - } - - if allChildrenMovedToSameParent { - // Children all move under the same destination parent. - // Now verify if their destination positions are contiguous. - var destPositions []int - for _, childSrc := range parentSrc.Children { - childDst := ms.Src()[childSrc] - pos := childDst.ChildIndex() - destPositions = append(destPositions, pos) - } - - contiguous := true - for _, pos := range destPositions { - if pos < 0 { - contiguous = false - break - } - } - if contiguous { - for i := 0; i < len(destPositions)-1; i++ { - if destPositions[i+1] != destPositions[i]+1 { - contiguous = false - break - } - } - } - - if contiguous { - // Pass both parent-equality and contiguity -> collapse - KillChildren(parentSrc, moved, suppressed) - act.Subtree = true - } else { - // Pass parent-equality but FAIL contiguity -> do NOT collapse. - // Both parent move and children moves survive without suppression. - act.Subtree = false - } - } else { - // FAIL parent-equality -> Kill parent's move, children survive. - // NOTE: This assumes parent-equality failure indicates a dissolved/rewrapped - // identity (e.g. boolean operator nesting shifts) where suppressing the parent - // move avoids misleading highlights of newly inserted sibling elements as moved. - // This has only been validated against cases where parent-equality failure - // correctly indicated a dissolved/rewrapped identity, not yet against a case - // where it might fragment a legitimately-coherent parent-level container move. - suppressed[act] = true - } - } - } + // Scaffolding nodes (like statement_list or block) shouldn't emit separate + // actions if their parent already handles them. We run this after subtree + // collapsing so child suppressions don't prevent parents from becoming subtrees. + suppressRedundantScaffolding(dstRoot, inserted, suppressed) + suppressRedundantScaffolding(srcRoot, deleted, suppressed) + suppressRedundantScaffolding(srcRoot, moved, suppressed) suppressInlineParentRedundancy(actionPtrs, inserted, deleted, suppressed) @@ -217,6 +118,7 @@ func Collapse( return result } +// KillChildren marks all descendant actions as suppressed under a collapsed subtree. func KillChildren( parent *treesitter.ASTNode, actionMap map[*treesitter.ASTNode]*actions.Action, @@ -232,9 +134,28 @@ func KillChildren( } } -// suppressInlineParentRedundancy kills a parent Insert/Delete when an inline -// child of the same type already covers the same line. Subtree:true parents -// are never killed (they cover more than the line). Looks one level up only. +func suppressRedundantScaffolding( + root *treesitter.ASTNode, + actionMap map[*treesitter.ASTNode]*actions.Action, + suppressed map[*actions.Action]bool, +) { + for _, node := range root.PostOrder() { + if !node.IsScaffolding() || node.Parent == nil { + continue + } + sAct, ok := actionMap[node] + if !ok || suppressed[sAct] || sAct.Subtree { + continue + } + if pAct, ok := actionMap[node.Parent]; ok && !suppressed[pAct] { + suppressed[sAct] = true + } + } +} + +// If a child action already covers the deletion or insertion on a line, drop +// its single-line parent wrappers so we don't highlight the same line twice. +// Multi-line subtree actions are kept since they span past the single line. func suppressInlineParentRedundancy( actionPtrs []*actions.Action, inserted, deleted map[*treesitter.ASTNode]*actions.Action, @@ -251,30 +172,21 @@ func suppressInlineParentRedundancy( if node.StartRow != node.EndRow { continue } - parent := node.Parent - if parent == nil { - continue - } - var parentAct *actions.Action - switch a.Type { - case actions.Insert: - parentAct = inserted[parent] - case actions.Delete: - parentAct = deleted[parent] - } - if parentAct == nil || suppressed[parentAct] { - continue - } - if parentAct.Subtree { - continue - } - if parent.StartRow != parent.EndRow { - continue + + actionMap := inserted + if a.Type == actions.Delete { + actionMap = deleted } - if parent.StartRow != node.StartRow { - continue + + for parent := node.Parent; parent != nil; parent = parent.Parent { + if parent.StartRow != parent.EndRow || parent.StartRow != node.StartRow { + break + } + parentAct := actionMap[parent] + if parentAct != nil && !suppressed[parentAct] && !parentAct.Subtree { + suppressed[parentAct] = true + } } - suppressed[parentAct] = true } } diff --git a/internal/postprocess/collapsing_test.go b/internal/postprocess/collapsing_test.go index 619885dd..7d0070b6 100644 --- a/internal/postprocess/collapsing_test.go +++ b/internal/postprocess/collapsing_test.go @@ -38,37 +38,29 @@ func TestCollapseDivergence(t *testing.T) { // Construct EditScript: // P moves to Q - // C moves with Parent = qDst (manually set, diverging from dDst.Parent = rDst) es := actions.NewEditScript() es.Add(actions.Action{ Type: actions.Move, Node: pSrc, Parent: qDst, Position: 0, - }) - es.Add(actions.Action{ - Type: actions.Move, - Node: cSrc, - Parent: qDst, // Manually set to match P's destination to trigger the divergence - Position: 0, + Subtree: true, }) // Run Collapse collapsed := Collapse(es, ms, pSrc, qDst) - // Since C's mapped destination dDst.Parent (rDst) != dstParent (qDst), - // parent-equality should fail. Thus, P's Move is suppressed, and C's Move survives. if collapsed.Size() != 1 { t.Fatalf("expected collapsed edit script to have size 1, got %d", collapsed.Size()) } collapsedActions := collapsed.Actions() survivingAction := collapsedActions[0] - if survivingAction.Node != cSrc { - t.Errorf("expected surviving action node to be cSrc, got %v", survivingAction.Node) + if survivingAction.Node != pSrc { + t.Errorf("expected surviving action node to be pSrc, got %v", survivingAction.Node) } - if survivingAction.Subtree { - t.Errorf("expected surviving action to not be a subtree move, but Subtree is true") + if !survivingAction.Subtree { + t.Errorf("expected surviving action to be a subtree move, but Subtree is false") } } @@ -863,8 +855,7 @@ func TestParentMoveWithDeletedDescendant(t *testing.T) { ms.Add(c1Src, c1Dst) // Construct EditScript: - // - pSrc moves under qDst - // - c1Src moves under pDst + // - pSrc moves under qDst (subtree move) // - c2Src is deleted es := actions.NewEditScript() pMove := actions.Action{ @@ -872,42 +863,171 @@ func TestParentMoveWithDeletedDescendant(t *testing.T) { Node: pSrc, Parent: qDst, Position: 0, - } - c1Move := actions.Action{ - Type: actions.Move, - Node: c1Src, - Parent: pDst, - Position: 0, + Subtree: true, } c2Delete := actions.Action{ Type: actions.Delete, Node: c2Src, } es.Add(pMove) - es.Add(c1Move) es.Add(c2Delete) // Run Collapse collapsed := Collapse(es, ms, pSrc, qDst) - // Since c2Src is deleted, it doesn't have a Move action in 'moved' map. - // So parent-equality check for pSrc will fail (allChildrenMovedToSameParent is false). - // This triggers the else branch: P's Move is suppressed, but c1Src's Move survives. pMoveSurvives := false - c1MoveSurvives := false + c2DeleteSurvives := false for _, act := range collapsed.Actions() { if act.Node == pSrc && act.Type == actions.Move { pMoveSurvives = true } - if act.Node == c1Src && act.Type == actions.Move { - c1MoveSurvives = true + if act.Node == c2Src && act.Type == actions.Delete { + c2DeleteSurvives = true + } + } + + if !pMoveSurvives { + t.Error("expected parent block Move to survive as subtree move") + } + if !c2DeleteSurvives { + t.Error("expected child c2Src Delete to survive") + } +} + +func TestScaffoldingDeleteSuppression(t *testing.T) { + // P=block (Delete, scaffolding) -> S=statement_list (Delete, scaffolding) -> C=expression_statement (Delete) + // S's Delete should be suppressed as redundant when under parent block Delete. + stmt := &treesitter.ASTNode{Type: "expression_statement", StartByte: 10, EndByte: 30} + stmtList := &treesitter.ASTNode{ + Type: "statement_list", StartByte: 10, EndByte: 30, + Children: []*treesitter.ASTNode{stmt}, + } + block := &treesitter.ASTNode{ + Type: "block", StartByte: 0, EndByte: 35, + Children: []*treesitter.ASTNode{stmtList}, + } + block.Language = "go" + stmt.Parent = stmtList + stmtList.Parent = block + + ms := engine.NewMapping() + es := actions.NewEditScript() + es.Add(actions.Action{Type: actions.Delete, Node: block}) + es.Add(actions.Action{Type: actions.Delete, Node: stmtList}) + es.Add(actions.Action{Type: actions.Delete, Node: stmt}) + + collapsed := Collapse(es, ms, block, nil) + + blockSurvives := false + stmtListSurvives := false + for _, a := range collapsed.Actions() { + if a.Node == block && a.Type == actions.Delete { + blockSurvives = true + } + if a.Node == stmtList && a.Type == actions.Delete { + stmtListSurvives = true + } + } + + if !blockSurvives { + t.Error("expected parent block Delete action to survive") + } + if stmtListSurvives { + t.Error("expected child statement_list Delete action to be suppressed as redundant scaffolding") + } +} + +func TestScaffoldingMoveSuppression(t *testing.T) { + // P=call (Move) -> S=argument_list (Move, scaffolding) + s := &treesitter.ASTNode{Type: "argument_list", StartByte: 11, EndByte: 20} + parent := &treesitter.ASTNode{ + Type: "call_expression", StartByte: 0, EndByte: 20, + Children: []*treesitter.ASTNode{s}, + } + parent.Language = "go" + s.Parent = parent + + dstS := &treesitter.ASTNode{Type: "argument_list", StartByte: 111, EndByte: 120} + dstParent := &treesitter.ASTNode{ + Type: "call_expression", StartByte: 100, EndByte: 120, + Children: []*treesitter.ASTNode{dstS}, + } + dstParent.Language = "go" + dstS.Parent = dstParent + + ms := engine.NewMapping() + ms.Add(parent, dstParent) + ms.Add(s, dstS) + + es := actions.NewEditScript() + es.Add(actions.Action{Type: actions.Move, Node: parent, Parent: dstParent, Position: 0}) + es.Add(actions.Action{Type: actions.Move, Node: s, Parent: dstParent, Position: 0}) + + collapsed := Collapse(es, ms, parent, dstParent) + + pSurvives := false + sSurvives := false + for _, a := range collapsed.Actions() { + if a.Node == parent && a.Type == actions.Move { + pSurvives = true + } + if a.Node == s && a.Type == actions.Move { + sSurvives = true + } + } + + if !pSurvives { + t.Error("expected parent call_expression Move to survive") + } + if sSurvives { + t.Error("expected argument_list Move to be suppressed as redundant child scaffolding") + } +} + +func TestMultiLevelInlineDeleteSuppression(t *testing.T) { + // Hierarchy on line 133: + // expression_statement (Delete, L133) + // call_expression (not deleted because argument_list moved) + // selector_expression (Delete, L133) + // expression_statement should be suppressed by selector_expression because + // selector_expression is on the exact same line and is the specific deleted function. + sel := &treesitter.ASTNode{Type: "selector_expression", StartByte: 10, EndByte: 25, StartRow: 133, EndRow: 133} + argList := &treesitter.ASTNode{Type: "argument_list", StartByte: 25, EndByte: 40, StartRow: 133, EndRow: 133} + call := &treesitter.ASTNode{ + Type: "call_expression", StartByte: 10, EndByte: 40, StartRow: 133, EndRow: 133, + Children: []*treesitter.ASTNode{sel, argList}, + } + exprStmt := &treesitter.ASTNode{ + Type: "expression_statement", StartByte: 10, EndByte: 40, StartRow: 133, EndRow: 133, + Children: []*treesitter.ASTNode{call}, + } + exprStmt.Language = "go" + call.Parent = exprStmt + sel.Parent = call + argList.Parent = call + + ms := engine.NewMapping() + es := actions.NewEditScript() + es.Add(actions.Action{Type: actions.Delete, Node: exprStmt}) + es.Add(actions.Action{Type: actions.Delete, Node: sel}) + + collapsed := Collapse(es, ms, exprStmt, nil) + + exprSurvives := false + selSurvives := false + for _, a := range collapsed.Actions() { + if a.Node == exprStmt && a.Type == actions.Delete { + exprSurvives = true + } + if a.Node == sel && a.Type == actions.Delete { + selSurvives = true } } - if pMoveSurvives { - t.Error("expected parent block Move to be suppressed since one child (c2Src) was deleted") + if exprSurvives { + t.Error("expected multi-level inline ancestor expression_statement Delete to be suppressed") } - if !c1MoveSurvives { - t.Error("expected child c1Src Move to survive") + if !selSurvives { + t.Error("expected leaf selector_expression Delete to survive") } } diff --git a/tests/testdata/c_redis_quadratic_search/expected_actions.json.gz b/tests/testdata/c_redis_quadratic_search/expected_actions.json.gz index 98bdeaf3..82edd02a 100644 Binary files a/tests/testdata/c_redis_quadratic_search/expected_actions.json.gz and b/tests/testdata/c_redis_quadratic_search/expected_actions.json.gz differ diff --git a/tests/testdata/c_redis_quadratic_search/expected_ui.json.gz b/tests/testdata/c_redis_quadratic_search/expected_ui.json.gz index 497b0e3e..8347c1ca 100644 Binary files a/tests/testdata/c_redis_quadratic_search/expected_ui.json.gz and b/tests/testdata/c_redis_quadratic_search/expected_ui.json.gz differ diff --git a/tests/testdata/c_redis_rax_random/expected_actions.json.gz b/tests/testdata/c_redis_rax_random/expected_actions.json.gz index a6b1fb68..5e635096 100644 Binary files a/tests/testdata/c_redis_rax_random/expected_actions.json.gz and b/tests/testdata/c_redis_rax_random/expected_actions.json.gz differ diff --git a/tests/testdata/c_redis_rax_random/expected_ui.json.gz b/tests/testdata/c_redis_rax_random/expected_ui.json.gz index 28172cc1..bcdfad53 100644 Binary files a/tests/testdata/c_redis_rax_random/expected_ui.json.gz and b/tests/testdata/c_redis_rax_random/expected_ui.json.gz differ diff --git a/tests/testdata/c_redis_unit_mismatch/expected_actions.json.gz b/tests/testdata/c_redis_unit_mismatch/expected_actions.json.gz index 5a681741..a4adfeda 100644 Binary files a/tests/testdata/c_redis_unit_mismatch/expected_actions.json.gz and b/tests/testdata/c_redis_unit_mismatch/expected_actions.json.gz differ diff --git a/tests/testdata/c_redis_unit_mismatch/expected_ui.json.gz b/tests/testdata/c_redis_unit_mismatch/expected_ui.json.gz index a49675c0..4a9564cf 100644 Binary files a/tests/testdata/c_redis_unit_mismatch/expected_ui.json.gz and b/tests/testdata/c_redis_unit_mismatch/expected_ui.json.gz differ diff --git a/tests/testdata/c_redis_use_after_free_handleclientsblockedonkey/expected_actions.json.gz b/tests/testdata/c_redis_use_after_free_handleclientsblockedonkey/expected_actions.json.gz index 0e519534..461ba2e6 100644 Binary files a/tests/testdata/c_redis_use_after_free_handleclientsblockedonkey/expected_actions.json.gz and b/tests/testdata/c_redis_use_after_free_handleclientsblockedonkey/expected_actions.json.gz differ diff --git a/tests/testdata/c_redis_use_after_free_handleclientsblockedonkey/expected_ui.json.gz b/tests/testdata/c_redis_use_after_free_handleclientsblockedonkey/expected_ui.json.gz index 3cfb668c..2db9caa3 100644 Binary files a/tests/testdata/c_redis_use_after_free_handleclientsblockedonkey/expected_ui.json.gz and b/tests/testdata/c_redis_use_after_free_handleclientsblockedonkey/expected_ui.json.gz differ diff --git a/tests/testdata/cpp_fmt_workaround_broken_generic_msvc/expected_actions.json.gz b/tests/testdata/cpp_fmt_workaround_broken_generic_msvc/expected_actions.json.gz index e4772507..beb3bbc4 100644 Binary files a/tests/testdata/cpp_fmt_workaround_broken_generic_msvc/expected_actions.json.gz and b/tests/testdata/cpp_fmt_workaround_broken_generic_msvc/expected_actions.json.gz differ diff --git a/tests/testdata/cpp_simdjson_fixing_issue_1449/expected_actions.json.gz b/tests/testdata/cpp_simdjson_fixing_issue_1449/expected_actions.json.gz index 30878740..11d8a32c 100644 Binary files a/tests/testdata/cpp_simdjson_fixing_issue_1449/expected_actions.json.gz and b/tests/testdata/cpp_simdjson_fixing_issue_1449/expected_actions.json.gz differ diff --git a/tests/testdata/cpp_simdjson_fixing_issue_1449/expected_ui.json.gz b/tests/testdata/cpp_simdjson_fixing_issue_1449/expected_ui.json.gz index 9feec312..1bbda779 100644 Binary files a/tests/testdata/cpp_simdjson_fixing_issue_1449/expected_ui.json.gz and b/tests/testdata/cpp_simdjson_fixing_issue_1449/expected_ui.json.gz differ diff --git a/tests/testdata/cpp_simdjson_issue_2271/expected_actions.json.gz b/tests/testdata/cpp_simdjson_issue_2271/expected_actions.json.gz index 527bd600..0c2200d9 100644 Binary files a/tests/testdata/cpp_simdjson_issue_2271/expected_actions.json.gz and b/tests/testdata/cpp_simdjson_issue_2271/expected_actions.json.gz differ diff --git a/tests/testdata/cpp_simdjson_issue_2271/expected_ui.json.gz b/tests/testdata/cpp_simdjson_issue_2271/expected_ui.json.gz index a8c1351c..763a4f7f 100644 Binary files a/tests/testdata/cpp_simdjson_issue_2271/expected_ui.json.gz and b/tests/testdata/cpp_simdjson_issue_2271/expected_ui.json.gz differ diff --git a/tests/testdata/cpp_simdjson_taking_float_adding_hundreds/expected_actions.json.gz b/tests/testdata/cpp_simdjson_taking_float_adding_hundreds/expected_actions.json.gz index 5c81e4c3..28a8ac44 100644 Binary files a/tests/testdata/cpp_simdjson_taking_float_adding_hundreds/expected_actions.json.gz and b/tests/testdata/cpp_simdjson_taking_float_adding_hundreds/expected_actions.json.gz differ diff --git a/tests/testdata/cpp_simdjson_taking_float_adding_hundreds/expected_ui.json.gz b/tests/testdata/cpp_simdjson_taking_float_adding_hundreds/expected_ui.json.gz index 3546ab98..ad966723 100644 Binary files a/tests/testdata/cpp_simdjson_taking_float_adding_hundreds/expected_ui.json.gz and b/tests/testdata/cpp_simdjson_taking_float_adding_hundreds/expected_ui.json.gz differ diff --git a/tests/testdata/go_gin_fix_compile/expected_actions.json.gz b/tests/testdata/go_gin_fix_compile/expected_actions.json.gz index 222a1410..13748a4f 100644 Binary files a/tests/testdata/go_gin_fix_compile/expected_actions.json.gz and b/tests/testdata/go_gin_fix_compile/expected_actions.json.gz differ diff --git a/tests/testdata/go_gin_fix_compile/expected_ui.json.gz b/tests/testdata/go_gin_fix_compile/expected_ui.json.gz index ab7f822e..27474347 100644 Binary files a/tests/testdata/go_gin_fix_compile/expected_ui.json.gz and b/tests/testdata/go_gin_fix_compile/expected_ui.json.gz differ diff --git a/tests/testdata/go_gin_fix_corrupted/expected_actions.json.gz b/tests/testdata/go_gin_fix_corrupted/expected_actions.json.gz index c6113cf4..0ea4a6a9 100644 Binary files a/tests/testdata/go_gin_fix_corrupted/expected_actions.json.gz and b/tests/testdata/go_gin_fix_corrupted/expected_actions.json.gz differ diff --git a/tests/testdata/go_gin_fix_corrupted/expected_ui.json.gz b/tests/testdata/go_gin_fix_corrupted/expected_ui.json.gz index bb4a5808..0bda04c6 100644 Binary files a/tests/testdata/go_gin_fix_corrupted/expected_ui.json.gz and b/tests/testdata/go_gin_fix_corrupted/expected_ui.json.gz differ diff --git a/tests/testdata/go_gin_fixes_http/expected_actions.json.gz b/tests/testdata/go_gin_fixes_http/expected_actions.json.gz index f749011b..14858a7e 100644 Binary files a/tests/testdata/go_gin_fixes_http/expected_actions.json.gz and b/tests/testdata/go_gin_fixes_http/expected_actions.json.gz differ diff --git a/tests/testdata/go_gin_fixes_http/expected_ui.json.gz b/tests/testdata/go_gin_fixes_http/expected_ui.json.gz index 0f4895b6..d846a42e 100644 Binary files a/tests/testdata/go_gin_fixes_http/expected_ui.json.gz and b/tests/testdata/go_gin_fixes_http/expected_ui.json.gz differ diff --git a/tests/testdata/go_gin_prevent_flush/expected_actions.json.gz b/tests/testdata/go_gin_prevent_flush/expected_actions.json.gz index d61d4ae2..1b572978 100644 Binary files a/tests/testdata/go_gin_prevent_flush/expected_actions.json.gz and b/tests/testdata/go_gin_prevent_flush/expected_actions.json.gz differ diff --git a/tests/testdata/go_gin_prevent_flush/expected_ui.json.gz b/tests/testdata/go_gin_prevent_flush/expected_ui.json.gz index 0df5252f..a58342f2 100644 Binary files a/tests/testdata/go_gin_prevent_flush/expected_ui.json.gz and b/tests/testdata/go_gin_prevent_flush/expected_ui.json.gz differ diff --git a/tests/testdata/go_gin_using_keyed/expected_actions.json.gz b/tests/testdata/go_gin_using_keyed/expected_actions.json.gz index bee3ba9e..1da4a4ad 100644 Binary files a/tests/testdata/go_gin_using_keyed/expected_actions.json.gz and b/tests/testdata/go_gin_using_keyed/expected_actions.json.gz differ diff --git a/tests/testdata/go_gin_using_keyed/expected_ui.json.gz b/tests/testdata/go_gin_using_keyed/expected_ui.json.gz index 5dc92e81..4b0d7a29 100644 Binary files a/tests/testdata/go_gin_using_keyed/expected_ui.json.gz and b/tests/testdata/go_gin_using_keyed/expected_ui.json.gz differ diff --git a/tests/testdata/html_mdn_website_structure_layout/expected_actions.json.gz b/tests/testdata/html_mdn_website_structure_layout/expected_actions.json.gz index 1165ec4a..0c957007 100644 Binary files a/tests/testdata/html_mdn_website_structure_layout/expected_actions.json.gz and b/tests/testdata/html_mdn_website_structure_layout/expected_actions.json.gz differ diff --git a/tests/testdata/html_mdn_website_structure_layout/expected_ui.json.gz b/tests/testdata/html_mdn_website_structure_layout/expected_ui.json.gz index 39ba951c..014dfebe 100644 Binary files a/tests/testdata/html_mdn_website_structure_layout/expected_ui.json.gz and b/tests/testdata/html_mdn_website_structure_layout/expected_ui.json.gz differ diff --git a/tests/testdata/java_commons_lang_simplify_abstractreflection_setaccessible/expected_actions.json.gz b/tests/testdata/java_commons_lang_simplify_abstractreflection_setaccessible/expected_actions.json.gz index 243ba7e4..50f93015 100644 Binary files a/tests/testdata/java_commons_lang_simplify_abstractreflection_setaccessible/expected_actions.json.gz and b/tests/testdata/java_commons_lang_simplify_abstractreflection_setaccessible/expected_actions.json.gz differ diff --git a/tests/testdata/java_commons_lang_simplify_abstractreflection_setaccessible/expected_ui.json.gz b/tests/testdata/java_commons_lang_simplify_abstractreflection_setaccessible/expected_ui.json.gz index 47442e49..e193aecd 100644 Binary files a/tests/testdata/java_commons_lang_simplify_abstractreflection_setaccessible/expected_ui.json.gz and b/tests/testdata/java_commons_lang_simplify_abstractreflection_setaccessible/expected_ui.json.gz differ diff --git a/tests/testdata/java_mockito_non_deterministic_assertionerror/expected_actions.json.gz b/tests/testdata/java_mockito_non_deterministic_assertionerror/expected_actions.json.gz index 8996c545..ae3d6aad 100644 Binary files a/tests/testdata/java_mockito_non_deterministic_assertionerror/expected_actions.json.gz and b/tests/testdata/java_mockito_non_deterministic_assertionerror/expected_actions.json.gz differ diff --git a/tests/testdata/java_mockito_non_deterministic_assertionerror/expected_ui.json.gz b/tests/testdata/java_mockito_non_deterministic_assertionerror/expected_ui.json.gz index c2494596..2cd6aed0 100644 Binary files a/tests/testdata/java_mockito_non_deterministic_assertionerror/expected_ui.json.gz and b/tests/testdata/java_mockito_non_deterministic_assertionerror/expected_ui.json.gz differ diff --git a/tests/testdata/json_schemastore_catalog_add_schema/expected_actions.json.gz b/tests/testdata/json_schemastore_catalog_add_schema/expected_actions.json.gz index e4dd194a..389b1494 100644 Binary files a/tests/testdata/json_schemastore_catalog_add_schema/expected_actions.json.gz and b/tests/testdata/json_schemastore_catalog_add_schema/expected_actions.json.gz differ diff --git a/tests/testdata/json_schemastore_catalog_add_schema/expected_ui.json.gz b/tests/testdata/json_schemastore_catalog_add_schema/expected_ui.json.gz index 89c394a7..c7d41988 100644 Binary files a/tests/testdata/json_schemastore_catalog_add_schema/expected_ui.json.gz and b/tests/testdata/json_schemastore_catalog_add_schema/expected_ui.json.gz differ diff --git a/tests/testdata/json_schemastore_uv_pip_settings/expected_actions.json.gz b/tests/testdata/json_schemastore_uv_pip_settings/expected_actions.json.gz index f3ca7cc7..abfabdf5 100644 Binary files a/tests/testdata/json_schemastore_uv_pip_settings/expected_actions.json.gz and b/tests/testdata/json_schemastore_uv_pip_settings/expected_actions.json.gz differ diff --git a/tests/testdata/lua_kong_add_missing_select/expected_actions.json.gz b/tests/testdata/lua_kong_add_missing_select/expected_actions.json.gz index bae98094..3ca7a117 100644 Binary files a/tests/testdata/lua_kong_add_missing_select/expected_actions.json.gz and b/tests/testdata/lua_kong_add_missing_select/expected_actions.json.gz differ diff --git a/tests/testdata/lua_kong_add_missing_select/expected_ui.json.gz b/tests/testdata/lua_kong_add_missing_select/expected_ui.json.gz index 488f0fc1..cd9df419 100644 Binary files a/tests/testdata/lua_kong_add_missing_select/expected_ui.json.gz and b/tests/testdata/lua_kong_add_missing_select/expected_ui.json.gz differ diff --git a/tests/testdata/lua_kong_dp_status_ready_rpc/expected_actions.json.gz b/tests/testdata/lua_kong_dp_status_ready_rpc/expected_actions.json.gz index 43c9c20b..aa103b32 100644 Binary files a/tests/testdata/lua_kong_dp_status_ready_rpc/expected_actions.json.gz and b/tests/testdata/lua_kong_dp_status_ready_rpc/expected_actions.json.gz differ diff --git a/tests/testdata/lua_kong_dp_status_ready_rpc/expected_ui.json.gz b/tests/testdata/lua_kong_dp_status_ready_rpc/expected_ui.json.gz index aec8b08c..5f21b558 100644 Binary files a/tests/testdata/lua_kong_dp_status_ready_rpc/expected_ui.json.gz and b/tests/testdata/lua_kong_dp_status_ready_rpc/expected_ui.json.gz differ diff --git a/tests/testdata/lua_kong_fix_default_workspace_check/expected_actions.json.gz b/tests/testdata/lua_kong_fix_default_workspace_check/expected_actions.json.gz index d074a6be..554095c6 100644 Binary files a/tests/testdata/lua_kong_fix_default_workspace_check/expected_actions.json.gz and b/tests/testdata/lua_kong_fix_default_workspace_check/expected_actions.json.gz differ diff --git a/tests/testdata/lua_kong_fix_default_workspace_check/expected_ui.json.gz b/tests/testdata/lua_kong_fix_default_workspace_check/expected_ui.json.gz index eb2cdffd..b98acb6a 100644 Binary files a/tests/testdata/lua_kong_fix_default_workspace_check/expected_ui.json.gz and b/tests/testdata/lua_kong_fix_default_workspace_check/expected_ui.json.gz differ diff --git a/tests/testdata/lua_kong_sync_retry_timeout/expected_actions.json.gz b/tests/testdata/lua_kong_sync_retry_timeout/expected_actions.json.gz index 67a3f885..5dd2809a 100644 Binary files a/tests/testdata/lua_kong_sync_retry_timeout/expected_actions.json.gz and b/tests/testdata/lua_kong_sync_retry_timeout/expected_actions.json.gz differ diff --git a/tests/testdata/lua_kong_sync_retry_timeout/expected_ui.json.gz b/tests/testdata/lua_kong_sync_retry_timeout/expected_ui.json.gz index ce566cd8..a41eeffa 100644 Binary files a/tests/testdata/lua_kong_sync_retry_timeout/expected_ui.json.gz and b/tests/testdata/lua_kong_sync_retry_timeout/expected_ui.json.gz differ diff --git a/tests/testdata/lua_neovim_dir_spec_change/expected_actions.json.gz b/tests/testdata/lua_neovim_dir_spec_change/expected_actions.json.gz index 445faee1..7b6f8641 100644 Binary files a/tests/testdata/lua_neovim_dir_spec_change/expected_actions.json.gz and b/tests/testdata/lua_neovim_dir_spec_change/expected_actions.json.gz differ diff --git a/tests/testdata/lua_neovim_dir_spec_change/expected_ui.json.gz b/tests/testdata/lua_neovim_dir_spec_change/expected_ui.json.gz index 84d376a5..d181319a 100644 Binary files a/tests/testdata/lua_neovim_dir_spec_change/expected_ui.json.gz and b/tests/testdata/lua_neovim_dir_spec_change/expected_ui.json.gz differ diff --git a/tests/testdata/lua_neovim_fs_api_refactor/expected_actions.json.gz b/tests/testdata/lua_neovim_fs_api_refactor/expected_actions.json.gz index a1383498..bbc72055 100644 Binary files a/tests/testdata/lua_neovim_fs_api_refactor/expected_actions.json.gz and b/tests/testdata/lua_neovim_fs_api_refactor/expected_actions.json.gz differ diff --git a/tests/testdata/lua_neovim_fs_api_refactor/expected_ui.json.gz b/tests/testdata/lua_neovim_fs_api_refactor/expected_ui.json.gz index 50848007..238bd991 100644 Binary files a/tests/testdata/lua_neovim_fs_api_refactor/expected_ui.json.gz and b/tests/testdata/lua_neovim_fs_api_refactor/expected_ui.json.gz differ diff --git a/tests/testdata/lua_neovim_gen_help_html_change/expected_actions.json.gz b/tests/testdata/lua_neovim_gen_help_html_change/expected_actions.json.gz index a40b18c0..1b58d1d6 100644 Binary files a/tests/testdata/lua_neovim_gen_help_html_change/expected_actions.json.gz and b/tests/testdata/lua_neovim_gen_help_html_change/expected_actions.json.gz differ diff --git a/tests/testdata/lua_neovim_gen_help_html_change/expected_ui.json.gz b/tests/testdata/lua_neovim_gen_help_html_change/expected_ui.json.gz index a17e7c57..5c5415b3 100644 Binary files a/tests/testdata/lua_neovim_gen_help_html_change/expected_ui.json.gz and b/tests/testdata/lua_neovim_gen_help_html_change/expected_ui.json.gz differ diff --git a/tests/testdata/lua_neovim_write_spec_refactor/expected_actions.json.gz b/tests/testdata/lua_neovim_write_spec_refactor/expected_actions.json.gz index 21637f3b..06509eb0 100644 Binary files a/tests/testdata/lua_neovim_write_spec_refactor/expected_actions.json.gz and b/tests/testdata/lua_neovim_write_spec_refactor/expected_actions.json.gz differ diff --git a/tests/testdata/lua_neovim_write_spec_refactor/expected_ui.json.gz b/tests/testdata/lua_neovim_write_spec_refactor/expected_ui.json.gz index bba5a970..f9b58462 100644 Binary files a/tests/testdata/lua_neovim_write_spec_refactor/expected_ui.json.gz and b/tests/testdata/lua_neovim_write_spec_refactor/expected_ui.json.gz differ diff --git a/tests/testdata/lua_neovim_zip_spec_change/expected_actions.json.gz b/tests/testdata/lua_neovim_zip_spec_change/expected_actions.json.gz index 547bce3e..d65e4112 100644 Binary files a/tests/testdata/lua_neovim_zip_spec_change/expected_actions.json.gz and b/tests/testdata/lua_neovim_zip_spec_change/expected_actions.json.gz differ diff --git a/tests/testdata/lua_neovim_zip_spec_change/expected_ui.json.gz b/tests/testdata/lua_neovim_zip_spec_change/expected_ui.json.gz index 3bf2a3a4..2c83d82c 100644 Binary files a/tests/testdata/lua_neovim_zip_spec_change/expected_ui.json.gz and b/tests/testdata/lua_neovim_zip_spec_change/expected_ui.json.gz differ diff --git a/tests/testdata/py_requests_prevent_response/expected_actions.json.gz b/tests/testdata/py_requests_prevent_response/expected_actions.json.gz index 313a3b87..68ac37b5 100644 Binary files a/tests/testdata/py_requests_prevent_response/expected_actions.json.gz and b/tests/testdata/py_requests_prevent_response/expected_actions.json.gz differ diff --git a/tests/testdata/py_requests_prevent_response/expected_ui.json.gz b/tests/testdata/py_requests_prevent_response/expected_ui.json.gz index 8901efcd..7921df72 100644 Binary files a/tests/testdata/py_requests_prevent_response/expected_ui.json.gz and b/tests/testdata/py_requests_prevent_response/expected_ui.json.gz differ diff --git a/tests/testdata/py_requests_refactor_prefer/expected_actions.json.gz b/tests/testdata/py_requests_refactor_prefer/expected_actions.json.gz index 7964224a..3fbb984e 100644 Binary files a/tests/testdata/py_requests_refactor_prefer/expected_actions.json.gz and b/tests/testdata/py_requests_refactor_prefer/expected_actions.json.gz differ diff --git a/tests/testdata/py_requests_refactor_prefer/expected_ui.json.gz b/tests/testdata/py_requests_refactor_prefer/expected_ui.json.gz index 80f0bf05..16599e93 100644 Binary files a/tests/testdata/py_requests_refactor_prefer/expected_ui.json.gz and b/tests/testdata/py_requests_refactor_prefer/expected_ui.json.gz differ diff --git a/tests/testdata/ruby_sinatra_fix_content_type_leak_in_muste_4/expected_actions.json.gz b/tests/testdata/ruby_sinatra_fix_content_type_leak_in_muste_4/expected_actions.json.gz index f089824a..14979ad2 100644 Binary files a/tests/testdata/ruby_sinatra_fix_content_type_leak_in_muste_4/expected_actions.json.gz and b/tests/testdata/ruby_sinatra_fix_content_type_leak_in_muste_4/expected_actions.json.gz differ diff --git a/tests/testdata/ruby_sinatra_fix_content_type_leak_in_muste_4/expected_ui.json.gz b/tests/testdata/ruby_sinatra_fix_content_type_leak_in_muste_4/expected_ui.json.gz index e3628951..f45177c3 100644 Binary files a/tests/testdata/ruby_sinatra_fix_content_type_leak_in_muste_4/expected_ui.json.gz and b/tests/testdata/ruby_sinatra_fix_content_type_leak_in_muste_4/expected_ui.json.gz differ diff --git a/tests/testdata/ruby_sinatra_fix_proc_template_memory_leak_9/expected_actions.json.gz b/tests/testdata/ruby_sinatra_fix_proc_template_memory_leak_9/expected_actions.json.gz index af0095e2..2cca54e7 100644 Binary files a/tests/testdata/ruby_sinatra_fix_proc_template_memory_leak_9/expected_actions.json.gz and b/tests/testdata/ruby_sinatra_fix_proc_template_memory_leak_9/expected_actions.json.gz differ diff --git a/tests/testdata/ruby_sinatra_fix_proc_template_memory_leak_9/expected_ui.json.gz b/tests/testdata/ruby_sinatra_fix_proc_template_memory_leak_9/expected_ui.json.gz index b6dcce2b..bc6c34cf 100644 Binary files a/tests/testdata/ruby_sinatra_fix_proc_template_memory_leak_9/expected_ui.json.gz and b/tests/testdata/ruby_sinatra_fix_proc_template_memory_leak_9/expected_ui.json.gz differ diff --git a/tests/testdata/ruby_sinatra_fix_redos_12/expected_actions.json.gz b/tests/testdata/ruby_sinatra_fix_redos_12/expected_actions.json.gz index 0c39dd39..86e7d250 100644 Binary files a/tests/testdata/ruby_sinatra_fix_redos_12/expected_actions.json.gz and b/tests/testdata/ruby_sinatra_fix_redos_12/expected_actions.json.gz differ diff --git a/tests/testdata/ruby_sinatra_fix_redos_12/expected_ui.json.gz b/tests/testdata/ruby_sinatra_fix_redos_12/expected_ui.json.gz index 9d8915ed..56eb480f 100644 Binary files a/tests/testdata/ruby_sinatra_fix_redos_12/expected_ui.json.gz and b/tests/testdata/ruby_sinatra_fix_redos_12/expected_ui.json.gz differ diff --git a/tests/testdata/ruby_sinatra_use_exception_detailed_message_10/expected_actions.json.gz b/tests/testdata/ruby_sinatra_use_exception_detailed_message_10/expected_actions.json.gz index 75713484..784b9d68 100644 Binary files a/tests/testdata/ruby_sinatra_use_exception_detailed_message_10/expected_actions.json.gz and b/tests/testdata/ruby_sinatra_use_exception_detailed_message_10/expected_actions.json.gz differ diff --git a/tests/testdata/ruby_sinatra_use_exception_detailed_message_10/expected_ui.json.gz b/tests/testdata/ruby_sinatra_use_exception_detailed_message_10/expected_ui.json.gz index 888fa2c5..da40f215 100644 Binary files a/tests/testdata/ruby_sinatra_use_exception_detailed_message_10/expected_ui.json.gz and b/tests/testdata/ruby_sinatra_use_exception_detailed_message_10/expected_ui.json.gz differ diff --git a/tests/testdata/rust_tokio_test_tests_when/expected_actions.json.gz b/tests/testdata/rust_tokio_test_tests_when/expected_actions.json.gz index e985a9b5..3349459b 100644 Binary files a/tests/testdata/rust_tokio_test_tests_when/expected_actions.json.gz and b/tests/testdata/rust_tokio_test_tests_when/expected_actions.json.gz differ diff --git a/tests/testdata/yaml_k8s_examples_persistentvolume_nfs/expected_actions.json.gz b/tests/testdata/yaml_k8s_examples_persistentvolume_nfs/expected_actions.json.gz index c1a42e68..752dc5cb 100644 Binary files a/tests/testdata/yaml_k8s_examples_persistentvolume_nfs/expected_actions.json.gz and b/tests/testdata/yaml_k8s_examples_persistentvolume_nfs/expected_actions.json.gz differ diff --git a/tests/testdata/yaml_k8s_examples_persistentvolume_nfs/expected_ui.json.gz b/tests/testdata/yaml_k8s_examples_persistentvolume_nfs/expected_ui.json.gz index eda9d34b..7619198c 100644 Binary files a/tests/testdata/yaml_k8s_examples_persistentvolume_nfs/expected_ui.json.gz and b/tests/testdata/yaml_k8s_examples_persistentvolume_nfs/expected_ui.json.gz differ diff --git a/tests/testdata/yaml_k8s_examples_sysdig_scalar_daemonset/expected_actions.json.gz b/tests/testdata/yaml_k8s_examples_sysdig_scalar_daemonset/expected_actions.json.gz index 68f8eccd..e26f3e27 100644 Binary files a/tests/testdata/yaml_k8s_examples_sysdig_scalar_daemonset/expected_actions.json.gz and b/tests/testdata/yaml_k8s_examples_sysdig_scalar_daemonset/expected_actions.json.gz differ diff --git a/tests/testdata/yaml_k8s_examples_sysdig_scalar_daemonset/expected_ui.json.gz b/tests/testdata/yaml_k8s_examples_sysdig_scalar_daemonset/expected_ui.json.gz index eda4e03e..b240afa2 100644 Binary files a/tests/testdata/yaml_k8s_examples_sysdig_scalar_daemonset/expected_ui.json.gz and b/tests/testdata/yaml_k8s_examples_sysdig_scalar_daemonset/expected_ui.json.gz differ diff --git a/tests/testdata/yaml_microservices_skaffold_pipeline_refactor/expected_actions.json.gz b/tests/testdata/yaml_microservices_skaffold_pipeline_refactor/expected_actions.json.gz index edd7966b..3f5a904e 100644 Binary files a/tests/testdata/yaml_microservices_skaffold_pipeline_refactor/expected_actions.json.gz and b/tests/testdata/yaml_microservices_skaffold_pipeline_refactor/expected_actions.json.gz differ diff --git a/tests/testdata/yaml_microservices_skaffold_pipeline_refactor/expected_ui.json.gz b/tests/testdata/yaml_microservices_skaffold_pipeline_refactor/expected_ui.json.gz index 63d01400..084e3c98 100644 Binary files a/tests/testdata/yaml_microservices_skaffold_pipeline_refactor/expected_ui.json.gz and b/tests/testdata/yaml_microservices_skaffold_pipeline_refactor/expected_ui.json.gz differ diff --git a/tests/testdata/zig_clap_more_than_2/expected_actions.json.gz b/tests/testdata/zig_clap_more_than_2/expected_actions.json.gz index 474dc896..149027f2 100644 Binary files a/tests/testdata/zig_clap_more_than_2/expected_actions.json.gz and b/tests/testdata/zig_clap_more_than_2/expected_actions.json.gz differ diff --git a/tests/testdata/zig_clap_more_than_2/expected_ui.json.gz b/tests/testdata/zig_clap_more_than_2/expected_ui.json.gz index df116062..7565daa8 100644 Binary files a/tests/testdata/zig_clap_more_than_2/expected_ui.json.gz and b/tests/testdata/zig_clap_more_than_2/expected_ui.json.gz differ diff --git a/tests/testdata/zig_clap_new_struct_tuple/expected_actions.json.gz b/tests/testdata/zig_clap_new_struct_tuple/expected_actions.json.gz index eae8298b..bffb1980 100644 Binary files a/tests/testdata/zig_clap_new_struct_tuple/expected_actions.json.gz and b/tests/testdata/zig_clap_new_struct_tuple/expected_actions.json.gz differ diff --git a/tests/testdata/zig_clap_new_struct_tuple/expected_ui.json.gz b/tests/testdata/zig_clap_new_struct_tuple/expected_ui.json.gz index 5b0bb744..95301d54 100644 Binary files a/tests/testdata/zig_clap_new_struct_tuple/expected_ui.json.gz and b/tests/testdata/zig_clap_new_struct_tuple/expected_ui.json.gz differ diff --git a/tests/testdata/zig_clap_short_only_params/expected_actions.json.gz b/tests/testdata/zig_clap_short_only_params/expected_actions.json.gz index c50dbe50..89acc451 100644 Binary files a/tests/testdata/zig_clap_short_only_params/expected_actions.json.gz and b/tests/testdata/zig_clap_short_only_params/expected_actions.json.gz differ diff --git a/tests/testdata/zig_clap_short_only_params/expected_ui.json.gz b/tests/testdata/zig_clap_short_only_params/expected_ui.json.gz index 5203703f..87541d32 100644 Binary files a/tests/testdata/zig_clap_short_only_params/expected_ui.json.gz and b/tests/testdata/zig_clap_short_only_params/expected_ui.json.gz differ