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_ast ⇒ Object
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
|