Module: Finitio::Syntax::AdType

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

Instance Method Summary collapse

Methods included from Node

included, #metadata, #resolve_ruby_const, #unique_names!

Instance Method Details

#compile(factory) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/finitio/syntax/type/ad_type.rb', line 8

def compile(factory)
  name      = builtin_type_name
  clazz     = name ? resolve_ruby_const(name.to_s) : nil
  contracts = compile_contracts(factory, clazz)
  contracts = unique_names!(contracts, "contract")
  factory.adt(clazz, contracts)
end

#compile_contracts(factory, clazz) ⇒ Object



16
17
18
# File 'lib/finitio/syntax/type/ad_type.rb', line 16

def compile_contracts(factory, clazz)
  captures[:contract].map{|c| c.compile(factory, clazz) }
end

#to_astObject



20
21
22
23
24
25
# File 'lib/finitio/syntax/type/ad_type.rb', line 20

def to_ast
  [ 
    :ad_type,
    builtin_type_name ? builtin_type_name.to_s : nil
  ] + captures[:contract].map(&:to_ast)
end