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