class TypeProf::Type::Hash
Attributes
base_type[R]
elems[R]
Public Class Methods
new(elems, base_type)
click to toggle source
# File typeprof-0.21.11/lib/typeprof/container-type.rb, line 562 def initialize(elems, base_type) @elems = elems raise unless elems @base_type = base_type end
Public Instance Methods
generate_substitution()
click to toggle source
# File typeprof-0.21.11/lib/typeprof/container-type.rb, line 602 def generate_substitution tyvar_k = Type::Var.new(:K) tyvar_v = Type::Var.new(:V) k_ty0, v_ty0 = @elems.squash # XXX: need to heuristically replace ret type Hash[K, V] with self, instead of conversative type? { tyvar_k => k_ty0, tyvar_v => v_ty0 } end
inspect()
click to toggle source
# File typeprof-0.21.11/lib/typeprof/container-type.rb, line 570 def inspect "Type::Hash#{ @elems.inspect }" end
limit_size(limit)
click to toggle source
# File typeprof-0.21.11/lib/typeprof/container-type.rb, line 587 def limit_size(limit) return Type.any if limit <= 0 Hash.new(@elems.limit_size(limit - 1), @base_type) end
localize(env, alloc_site, depth)
click to toggle source
# File typeprof-0.21.11/lib/typeprof/container-type.rb, line 578 def localize(env, alloc_site, depth) return env, Type.any if depth <= 0 alloc_site = alloc_site.add_id(:hash).add_id(@base_type) env, elems = @elems.localize(env, alloc_site, depth - 1) ty = Local.new(Hash, alloc_site, @base_type) env = env.deploy_type(alloc_site, elems) return env, ty end
method_dispatch_info()
click to toggle source
# File typeprof-0.21.11/lib/typeprof/container-type.rb, line 592 def method_dispatch_info raise end
screen_name(scratch)
click to toggle source
# File typeprof-0.21.11/lib/typeprof/container-type.rb, line 574 def screen_name(scratch) @elems.screen_name(scratch) end
substitute(subst, depth)
click to toggle source
# File typeprof-0.21.11/lib/typeprof/container-type.rb, line 596 def substitute(subst, depth) return Type.any if depth <= 0 elems = @elems.substitute(subst, depth - 1) Hash.new(elems, @base_type) end