File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed
Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -479,9 +479,32 @@ func (n *Node) Unsplit() bool {
479479 if n .parent .IsLeaf () {
480480 return n .parent .Unsplit ()
481481 }
482+
483+ n .parent .simplify ()
482484 return true
483485}
484486
487+ // Simplify removes unnecessary chained parents
488+ func (n * Node ) simplify () {
489+ if n .parent == nil || len (n .children ) != 1 {
490+ return
491+ }
492+
493+ ind := 0
494+ for i , c := range n .parent .children {
495+ if c .id == n .id {
496+ ind = i
497+ }
498+ }
499+
500+ parent := n .parent
501+ kind := n .Kind
502+ parent .children [ind ] = n .children [0 ]
503+ parent .children [ind ].parent = parent
504+ parent .children [ind ].Kind = kind
505+ parent .simplify ()
506+ }
507+
485508// String returns the string form of the node and all children (used for debugging)
486509func (n * Node ) String () string {
487510 var strf func (n * Node , ident int ) string
You can’t perform that action at this time.
0 commit comments