use crate::{eval::*, lower::ir};
impl Eval<Value> for ir::ReturnStatement {
fn eval(&self, context: &mut EvalContext) -> EvalResult<Value> {
log::debug!("Evaluating return statement to value: {self}");
if let Some(result) = &self.result {
let result = result.eval(context)?;
log::debug!("returning {result}");
Ok(Value::Return(Box::new(result)))
} else {
Ok(Value::Return(Value::None.into()))
}
}
}