void ProgramCompiler::Formatter::visit(Iteration &iter)
{
- formatted += "for(";
- if(iter.init_statement)
- iter.init_statement->visit(*this);
- else
- formatted += ';';
- if(iter.condition)
+ if(!iter.init_statement && iter.condition && !iter.loop_expression)
{
- formatted += ' ';
+ formatted += "while(";
iter.condition->visit(*this);
+ formatted += ')';
}
- formatted += ';';
- if(iter.loop_expression)
+ else
{
- formatted += ' ';
- iter.loop_expression->visit(*this);
+ formatted += "for(";
+ if(iter.init_statement)
+ iter.init_statement->visit(*this);
+ else
+ formatted += ';';
+ if(iter.condition)
+ {
+ formatted += ' ';
+ iter.condition->visit(*this);
+ }
+ formatted += ';';
+ if(iter.loop_expression)
+ {
+ formatted += ' ';
+ iter.loop_expression->visit(*this);
+ }
+ formatted += ')';
}
- formatted += ')';
if(iter.body.body.empty())
formatted += " { }";
inline_result = 0;
}
+void ProgramCompiler::FunctionInliner::visit(VariableDeclaration &var)
+{
+ if(var.init_expression)
+ visit_and_inline(var.init_expression);
+ inline_result = 0;
+}
+
void ProgramCompiler::FunctionInliner::visit(Return &ret)
{
TraversingVisitor::visit(ret);