class TypeProf::Type::Cell::Elements
Attributes
elems[R]
Public Class Methods
dummy_elements()
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 126 def self.dummy_elements Elements.new([]) # XXX end
new(elems)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 122 def initialize(elems) @elems = elems end
Public Instance Methods
[](idx)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 186 def [](idx) @elems[idx] end
each_free_type_variable(&blk)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 176 def each_free_type_variable(&blk) @elems.each do |ty| ty.each_free_type_variable(&blk) end end
globalize(env, visited, depth)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 136 def globalize(env, visited, depth) Elements.new(@elems.map {|ty| ty.globalize(env, visited, depth) }) end
include_untyped?(scratch)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 206 def include_untyped?(scratch) return @elems.any? {|ty| ty.include_untyped?(scratch) } end
limit_size(limit)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 149 def limit_size(limit) Elements.new(@elems.map {|ty| ty.limit_size(limit) }) end
localize(env, alloc_site, depth)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 140 def localize(env, alloc_site, depth) elems = @elems.map.with_index do |ty, i| alloc_site2 = alloc_site.add_id(i) env, ty = ty.localize(env, alloc_site2, depth) ty end return env, Elements.new(elems) end
match?(other)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 165 def match?(other) return nil if @elems.size != other.elems.size subst = nil @elems.zip(other.elems) do |ty0, ty1| subst2 = Type.match?(ty0, ty1) return nil unless subst2 subst = Type.merge_substitution(subst, subst2) end subst end
pretty_print(q)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 157 def pretty_print(q) q.group(9, "Elements[", "]") do q.seplist(@elems) do |elem| q.pp elem end end end
screen_name(scratch)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 153 def screen_name(scratch) "*[#{ @elems.map {|ty| ty.screen_name(scratch) }.join(", ") }]" end
substitute(subst, depth)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 182 def substitute(subst, depth) Elements.new(@elems.map {|ty| ty.substitute(subst, depth) }) end
to_local_type(id, base_ty)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 132 def to_local_type(id, base_ty) Type::Local.new(Cell, id, base_ty) end
union(other)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 194 def union(other) return self if self == other if @elems.size != other.elems.size raise "#{ @elems.size } != #{ other.elems.size }" end elems = [] @elems.zip(other.elems) do |ty0, ty1| elems << ty0.union(ty1) end Elements.new(elems) end
update(idx, ty)
click to toggle source
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 190 def update(idx, ty) Elements.new(Utils.array_update(@elems, idx, @elems[idx].union(ty))) end