Class: RBI::ConflictTree

Inherits:
Tree show all
Extended by:
T::Sig
Defined in:
lib/rbi/rewriters/merge_trees.rb

Overview

A tree showing incompatibles nodes

Is rendered as a merge conflict between ‘left` and` right`: ~~~rb class Foo

<<<<<<< left
def m1; end
def m2(a); end
=======
def m1(a); end
def m2; end
>>>>>>> right

end ~~~

Instance Attribute Summary collapse

Attributes inherited from Tree

#nodes

Attributes inherited from NodeWithComments

#comments

Attributes inherited from Node

#loc, #parent_tree

Instance Method Summary collapse

Methods inherited from Tree

#<<, #add_sig_templates!, #annotate!, #deannotate!, #empty?, #group_nodes!, #index, #merge, #nest_non_public_methods!, #nest_singleton_methods!, #oneline?, #sort_nodes!

Methods inherited from NodeWithComments

#annotations, #merge_with, #oneline?

Methods inherited from Node

#compatible_with?, #detach, #group_kind, #merge_with, #oneline?, #parent_conflict_tree, #parent_scope, #print, #print_blank_line_before, #replace, #string

Constructor Details

#initialize(left_name: "left", right_name: "right") ⇒ ConflictTree

Returns a new instance of ConflictTree.



585
586
587
588
589
590
591
592
593
# File 'lib/rbi/rewriters/merge_trees.rb', line 585

def initialize(left_name: "left", right_name: "right")
  super()
  @left_name = left_name
  @right_name = right_name
  @left = T.let(Tree.new, Tree)
  @left.parent_tree = self
  @right = T.let(Tree.new, Tree)
  @right.parent_tree = self
end

Instance Attribute Details

#leftObject (readonly)

Returns the value of attribute left.



582
583
584
# File 'lib/rbi/rewriters/merge_trees.rb', line 582

def left
  @left
end

#rightObject (readonly)

Returns the value of attribute right.



582
583
584
# File 'lib/rbi/rewriters/merge_trees.rb', line 582

def right
  @right
end

Instance Method Details

#accept_printer(v) ⇒ Object



596
597
598
599
600
601
602
# File 'lib/rbi/rewriters/merge_trees.rb', line 596

def accept_printer(v)
  v.printl("<<<<<<< #{@left_name}")
  v.visit(left)
  v.printl("=======")
  v.visit(right)
  v.printl(">>>>>>> #{@right_name}")
end