class TypeProf::Core::AST::CallBaseNode::CallNode
Public Class Methods
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/ast/call.rb, line 207 def initialize(raw_node, lenv) recv = raw_node.receiver ? AST.create_node(raw_node.receiver, lenv) : nil mid = raw_node.name mid_code_range = TypeProf::CodeRange.from_node(raw_node.message_loc) if raw_node.message_loc raw_args = raw_node.arguments raw_block = raw_node.block super(raw_node, recv, mid, mid_code_range, raw_args, nil, raw_block, lenv) end
Calls superclass method
TypeProf::Core::AST::CallBaseNode::new
Public Instance Methods
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/ast/call.rb, line 216 def narrowings @narrowings ||= begin args = @positional_args case @mid when :is_a? if @recv.is_a?(LocalVariableReadNode) && args && args.size == 1 [ Narrowing.new({ @recv.var => Narrowing::IsAConstraint.new(args[0], false) }), Narrowing.new({ @recv.var => Narrowing::IsAConstraint.new(args[0], true) }) ] elsif @recv.is_a?(InstanceVariableReadNode) && args && args.size == 1 [ Narrowing.new({ @recv.var => Narrowing::IsAConstraint.new(args[0], false) }), Narrowing.new({ @recv.var => Narrowing::IsAConstraint.new(args[0], true) }) ] else super end when :! then_narrowing, else_narrowing = @recv.narrowings [else_narrowing, then_narrowing] else super end end end
Calls superclass method
TypeProf::Core::AST::Node#narrowings