class TypeProf::Core::Type::Array
Attributes
Public Class Methods
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/type.rb, line 95 def initialize(genv, elems, base_type) @elems = elems @base_type = base_type raise unless base_type.is_a?(Instance) end
: (GlobalEnv, ::Array[Vertex], Instance) -> void
Public Instance Methods
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/type.rb, line 141 def base_type(genv) @base_type end
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/type.rb, line 103 def get_elem(genv, idx = nil) if idx && @elems @elems[idx] || Source.new(genv.nil_type) else @base_type.args.first end end
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/type.rb, line 145 def show if @elems "[#{ @elems.map {|e| Type.strip_parens(e.show) }.join(", ") }]" else "#{ @base_type.mod.show_cpath }[#{ Type.strip_parens(@unified_elem.show) }]" end end
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/type.rb, line 111 def splat_assign(genv, lefts, rest_elem, rights) edges = [] state = :left j = nil rights_size = rights ? rights.size : 0 @elems.each_with_index do |elem, i| case state when :left if i < lefts.size edges << [elem, lefts[i]] else break unless rest_elem state = :rest redo end when :rest if @elems.size - i > rights_size edges << [elem, rest_elem] else state = :right j = i redo end when :right edges << [elem, rights[i - j]] end end edges end