# An AST2ICode context stores the currently built icode informations
class A2IContext
-special ICodeBuilder
+ super ICodeBuilder
redef fun stmt(s: ICode)
do
if _current_node != null then
end
class A2IVisitor
-special AbsSyntaxVisitor
+ super AbsSyntaxVisitor
writable var _icode_ctx: nullable A2IContext
fun icode_ctx: A2IContext do return _icode_ctx.as(not null)
redef fun visit(n) do n.accept_icode_generation(self)
v.seq = iclos.body
escapable.continue_seq = iclos.body
escapable.continue_value = null
- v.stmt(new IMove(v.variable(variable), iclos.params.first))
+ for i in [0..variables.length[ do
+ v.stmt(new IMove(v.variable(variables[i]), iclos.params[i]))
+ end
v.generate_stmt(n_block)
# Call closure