Do not insert Array type to local environment, stack, etc.
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 261
def generate_substitution
{ Type::Var.new(:Elem) => @elems.squash }
end
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 223
def inspect
"Type::Array[#{ @elems.inspect }, base_type: #{ @base_type.inspect }]"
#@base_type.inspect
end
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 246
def limit_size(limit)
return Type.any if limit <= 0
Array.new(@elems.limit_size(limit - 1), @base_type)
end
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 237
def localize(env, alloc_site, depth)
return env, Type.any if depth <= 0
alloc_site = alloc_site.add_id(:ary).add_id(@base_type)
env, elems = @elems.localize(env, alloc_site, depth - 1)
ty = Local.new(Array, alloc_site, @base_type)
env = env.deploy_type(alloc_site, elems)
return env, ty
end
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 251
def method_dispatch_info
raise
end
# File typeprof-0.21.2/lib/typeprof/container-type.rb, line 228
def screen_name(scratch)
str = @elems.screen_name(scratch)
if str =~ /\A\*\[(.*)\]\z/
str = @base_type.klass.type_params.map {|var_name,| var_name == :Elem ? $1 : "untyped" }.join(", ")
str = "#{ @base_type.screen_name(scratch) }[#{ str }]"
end
str
end