Module: Finitio::Syntax::TypeDef

Includes:
Node
Defined in:
lib/finitio/syntax/type/type_def.rb

Instance Method Summary collapse

Methods included from Node

included, #metadata, #resolve_ruby_const, #unique_names!

Instance Method Details

#compile(system) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/finitio/syntax/type/type_def.rb', line 10

def compile(system)
  if vars
    vs = vars.compile(system)
    overrides = Hash[vs.map{|v|
      [ v.to_s, ProxyType.new(v) ]
    }]
    t = type.compile(system.with_scope(overrides))
    t = HighOrderType.new(vs, t)
  else
    t = type.compile(system)
  end
  n = type_name && type_name.to_str
  m = 
  system.add_type(t, n, m)
  t
end

#to_astObject



27
28
29
# File 'lib/finitio/syntax/type/type_def.rb', line 27

def to_ast
  [:type_def, type_name, type.to_ast]
end