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 = metadata
  system.add_type(t, n, m)
  t
end | 
 
    
      
  
  
    #to_ast  ⇒ Object 
  
  
  
  
    | 
27
28
29 | # File 'lib/finitio/syntax/type/type_def.rb', line 27
def to_ast
  [:type_def, type_name, type.to_ast]
end |