Class: DeepCover::Node::Csend
Constant Summary
collapse
- REWRITE_SUFFIX =
'%{node};%{local};else;nil;end)'
CLASSES, Complex, Cvasgn, Dsym, Erange, Float, Int, Ivar, Kwarg, Kwoptarg, Kwrestarg, OrAsgn, Rational, Sym, True, Zsuper
Instance Attribute Summary
#base_node, #children, #index, #next_sibling, #parent, #previous_sibling
Instance Method Summary
collapse
Methods included from Branch
#flow_completion_count
#[], [], atom, #children_nodes, #covered_code, #each_node, #fancy_type, #find_all, has_evaluated_segments, inherited, #simple_literal?, #to_s, #type
Methods included from Memoize
#freeze, included
Constructor Details
#initialize(base_node, base_children: base_node.children) ⇒ Csend
rubocop:disable Naming/UncommunicativeMethodParamName [#5436]
117
118
119
120
121
|
# File 'lib/deep_cover/node/send.rb', line 117
def initialize(base_node, base_children: base_node.children, **) send_without_receiver = base_node.updated(:safe_send, [nil, *base_node.children.drop(1)])
base_children = [base_children.first, send_without_receiver]
super
end
|
Instance Method Details
#branches ⇒ Object
141
142
143
144
145
|
# File 'lib/deep_cover/node/send.rb', line 141
def branches
[TrivialBranch.new(condition: receiver, other_branch: actual_send),
actual_send,
]
end
|
#branches_summary(of_branches = branches) ⇒ Object
147
148
149
150
151
|
# File 'lib/deep_cover/node/send.rb', line 147
def branches_summary(of_branches = branches)
of_branches.map do |jump|
jump == actual_send ? 'safe send' : 'nil shortcut'
end.join(' and ')
end
|
#execution_count ⇒ Object
133
134
135
|
# File 'lib/deep_cover/node/send.rb', line 133
def execution_count
receiver.flow_completion_count
end
|
#has_block? ⇒ Boolean
125
126
127
|
# File 'lib/deep_cover/node/send.rb', line 125
def has_block?
parent.is_a?(Block) && parent.child_index_to_name(index) == :call
end
|
#message ⇒ Object
137
138
139
|
# File 'lib/deep_cover/node/send.rb', line 137
def message
actual_send.message
end
|
#rewrite ⇒ Object
129
130
131
|
# File 'lib/deep_cover/node/send.rb', line 129
def rewrite
REWRITE_SUFFIX unless has_block?
end
|