Module: Jade::Codegen::Transforms::TailCall
Constant Summary
Constants included
from Helpers
Helpers::NATIVE_RUBY_CLASSES
Instance Method Summary
collapse
Methods included from Helpers
data_define, dict_constraints, dict_synthetic_name, fn_constraints, fn_impl_synthetic_name, generate_many, generate_node, impl_synthetic_name, param_synthetic_name, resolve_callee_symbol, ruby_classes_for_type, to_qualified
Instance Method Details
#generate_body(body, registry, self_sym, param_names) ⇒ Object
12
13
14
15
16
|
# File 'lib/jade/codegen/transforms/tail_call.rb', line 12
def generate_body(body, registry, self_sym, param_names)
[self_sym, param_names.size]
.then { emit_tail(body, registry, it, param_names) }
.then { Pretty.block("loop do", it) }
end
|
#tail_recursive?(body, self_sym, arity, registry) ⇒ Boolean
8
9
10
|
# File 'lib/jade/codegen/transforms/tail_call.rb', line 8
def tail_recursive?(body, self_sym, arity, registry)
classify(body, [self_sym, arity], registry) == :tail
end
|