leo_passes/processing_script/
program.rs1use super::ProcessingScriptVisitor;
18
19use leo_ast::{AstReconstructor as _, Function, ProgramReconstructor, ProgramScope, Variant};
20use leo_errors::TypeCheckerError;
21
22impl ProgramReconstructor for ProcessingScriptVisitor<'_> {
23 fn reconstruct_program_scope(&mut self, mut input: ProgramScope) -> ProgramScope {
24 self.program_name = input.program_id.name.name;
25
26 input.functions = input.functions.into_iter().map(|(i, f)| (i, self.reconstruct_function(f))).collect();
27 if !self.state.is_test {
28 for (_i, f) in input.functions.iter() {
29 if matches!(f.variant, Variant::Script) {
30 self.state.handler.emit_err(TypeCheckerError::script_in_non_test(f.identifier, f.span))
31 }
32 }
33 }
34 input.functions.retain(|(_i, f)| !matches!(f.variant, Variant::Script));
35 input
36 }
37
38 fn reconstruct_function(&mut self, mut input: Function) -> Function {
39 self.current_variant = input.variant;
40 input.block = self.reconstruct_block(input.block).0;
41 input
42 }
43}