use super::WriteTransformingVisitor;
use leo_ast::{Function, ProgramReconstructor, StatementReconstructor as _};
impl ProgramReconstructor for WriteTransformingVisitor<'_> {
fn reconstruct_function(&mut self, input: Function) -> Function {
let mut statements = Vec::new();
for parameter in input.input.iter() {
self.define_variable_members(parameter.identifier, &mut statements);
}
let mut block = self.reconstruct_block(input.block).0;
statements.extend(block.statements);
block.statements = statements;
Function { block, ..input }
}
fn reconstruct_program_scope(&mut self, input: leo_ast::ProgramScope) -> leo_ast::ProgramScope {
self.program = input.program_id.name.name;
leo_ast::ProgramScope {
functions: input.functions.into_iter().map(|(i, f)| (i, self.reconstruct_function(f))).collect(),
..input
}
}
}