class DeepCover::Node::Csend
Constants
- REWRITE_SUFFIX_IN_BLOCK
Public Class Methods
new(base_node, base_children: base_node.children, **)
click to toggle source
Calls superclass method
DeepCover::Node::new
# File lib/deep_cover/node/send.rb, line 115 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
Public Instance Methods
branches()
click to toggle source
# File lib/deep_cover/node/send.rb, line 138 def branches [TrivialBranch.new(condition: receiver, other_branch: actual_send), actual_send, ] end
branches_summary(of_branches)
click to toggle source
# File lib/deep_cover/node/send.rb, line 144 def branches_summary(of_branches) of_branches.map do |jump| jump == actual_send ? 'safe send' : 'nil shortcut' end.join(' and ') end
execution_count()
click to toggle source
# File lib/deep_cover/node/send.rb, line 134 def execution_count receiver.flow_completion_count end
has_block?()
click to toggle source
# File lib/deep_cover/node/send.rb, line 126 def has_block? parent.is_a?(Block) && parent.child_index_to_name(index) == :call end
rewrite()
click to toggle source
# File lib/deep_cover/node/send.rb, line 130 def rewrite '%{node};%{local};end)' unless has_block? end