Class: TypeProf::Core::Type

Inherits:
Object
  • Object
show all
Defined in:
lib/typeprof/core/type.rb

Direct Known Subclasses

Array, Bot, Hash, Instance, Proc, Singleton, Symbol, Var

Defined Under Namespace

Classes: Array, Bot, Hash, Instance, Proc, Singleton, Symbol, Var

Class Method Summary collapse

Class Method Details

.default_param_map(genv, ty) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/typeprof/core/type.rb', line 18

def self.default_param_map(genv, ty)
  ty = ty.base_type(genv)
  instance_ty = ty.is_a?(Type::Instance) ? ty : Type::Instance.new(genv, ty.mod, []) # TODO: type params
  singleton_ty = ty.is_a?(Type::Instance) ? Type::Singleton.new(genv, ty.mod) : ty
  {
    "*self": Source.new(ty),
    "*instance": Source.new(instance_ty),
    "*class": Source.new(singleton_ty),
  }
end

.new(genv, *args) ⇒ Object

This new method does memoize creation of types : (GlobalEnv, *untyped) -> instance



5
6
7
# File 'lib/typeprof/core/type.rb', line 5

def self.new(genv, *args)
  genv.type_table[[self] + args] ||= super(genv, *args)
end

.strip_array(s) ⇒ Object



14
15
16
# File 'lib/typeprof/core/type.rb', line 14

def self.strip_array(s)
  s.start_with?("Array[") && s.end_with?("]") ? s[6..-2] || raise : s
end

.strip_parens(s) ⇒ Object



9
10
11
12
# File 'lib/typeprof/core/type.rb', line 9

def self.strip_parens(s)
  #s =~ /\A\((.*)\)\z/ ? $1 : s
  s.start_with?("(") && s.end_with?(")") ? s[1..-2] || raise : s
end