use crate::DeadCodeEliminator;
use leo_ast::{Finalize, Function, ProgramReconstructor, StatementReconstructor};
impl ProgramReconstructor for DeadCodeEliminator<'_> {
fn reconstruct_function(&mut self, input: Function) -> Function {
self.used_variables.clear();
self.is_necessary = false;
let block = self.reconstruct_block(input.block).0;
let finalize = input.finalize.map(|finalize| {
self.used_variables.clear();
self.is_necessary = false;
let block = self.reconstruct_block(finalize.block).0;
Finalize {
identifier: finalize.identifier,
input: finalize.input,
output: finalize.output,
output_type: finalize.output_type,
block,
span: finalize.span,
id: finalize.id,
}
});
Function {
annotations: input.annotations,
variant: input.variant,
identifier: input.identifier,
input: input.input,
output: input.output,
output_type: input.output_type,
block,
finalize,
span: input.span,
id: input.id,
}
}
}