class TypeProf::Core::ActualArguments
Attributes
block[R]
keywords[R]
positionals[R]
splat_flags[R]
Public Class Methods
new(positionals, splat_flags, keywords, block)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/env/method.rb, line 27 def initialize(positionals, splat_flags, keywords, block) @positionals = positionals @splat_flags = splat_flags @keywords = keywords @block = block end
Public Instance Methods
get_keyword_arg(genv, changes, name)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/env/method.rb, line 66 def get_keyword_arg(genv, changes, name) vtx = Vertex.new(self) @keywords.each_type do |ty| case ty when Type::Hash changes.add_edge(genv, ty.get_value(name), vtx) when Type::Instance if ty.mod == genv.mod_hash changes.add_edge(genv, ty.args[1], vtx) end else # what to do? end end vtx end
get_rest_args(genv, start_rest, end_rest)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/env/method.rb, line 44 def get_rest_args(genv, start_rest, end_rest) vtxs = [] start_rest.upto(end_rest - 1) do |i| a_arg = @positionals[i] if @splat_flags[i] a_arg.each_type do |ty| ty = ty.base_type(genv) if ty.is_a?(Type::Instance) && ty.mod == genv.mod_ary && ty.args[0] vtxs << ty.args[0].new_vertex(genv, self) else "???" end end else vtxs << a_arg end end vtxs.uniq end
new_vertexes(genv, node)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/env/method.rb, line 36 def new_vertexes(genv, node) positionals = @positionals.map {|arg| arg.new_vertex(genv, node) } splat_flags = @splat_flags keywords = @keywords ? @keywords.new_vertex(genv, node) : nil block = @block ? @block.new_vertex(genv, node) : nil ActualArguments.new(positionals, splat_flags, keywords, block) end