use super::ProcessingScriptVisitor;
use leo_ast::{AstReconstructor, CallExpression, Expression, Variant};
use leo_errors::TypeCheckerError;
impl AstReconstructor for ProcessingScriptVisitor<'_> {
type AdditionalInput = ();
type AdditionalOutput = ();
fn reconstruct_call(&mut self, input: CallExpression, _additional: &()) -> (Expression, Self::AdditionalOutput) {
if !matches!(self.current_variant, Variant::Script) {
let Some(func_symbol) =
self.state.symbol_table.lookup_function(self.program_name, input.function.expect_global_location())
else {
panic!("Type checking should have prevented this.");
};
if matches!(func_symbol.function.variant, Variant::Script) {
self.state
.handler
.emit_err(TypeCheckerError::non_script_calls_script(input.function.clone(), input.span))
}
}
(input.into(), Default::default())
}
}