leo_passes/common_subexpression_elimination/
program.rs1use super::CommonSubexpressionEliminatingVisitor;
18
19use leo_ast::{AstReconstructor, Constructor, Function, Module, ProgramReconstructor};
20
21impl ProgramReconstructor for CommonSubexpressionEliminatingVisitor<'_> {
22 fn reconstruct_program_scope(&mut self, mut input: leo_ast::ProgramScope) -> leo_ast::ProgramScope {
23 input.functions = input.functions.into_iter().map(|(i, f)| (i, self.reconstruct_function(f))).collect();
24 input.constructor = input.constructor.map(|c| self.reconstruct_constructor(c));
25 input
26 }
27
28 fn reconstruct_function(&mut self, mut input: Function) -> Function {
29 input.block = self.reconstruct_block(input.block).0;
30 input
31 }
32
33 fn reconstruct_constructor(&mut self, mut input: Constructor) -> Constructor {
34 input.block = self.reconstruct_block(input.block).0;
35 input
36 }
37
38 fn reconstruct_module(&mut self, mut input: Module) -> Module {
39 input.functions = input.functions.into_iter().map(|(i, f)| (i, self.reconstruct_function(f))).collect();
40 input
41 }
42}