use crate::{EvalResult, Evaluator, Value, Statement};
impl Evaluator<'_> {
pub fn evaluate_scope_expression(&mut self, statements: Vec<Statement>) -> EvalResult<Value> {
let mut result = EvalResult::NoValue;
self.ctx.enter_scope();
for s in statements {
result = self.evaluate_statement(s);
match &result {
EvalResult::Value(_) => {}
EvalResult::NoValue => {}
EvalResult::Return(_) => {
self.ctx.leave_scope();
return result;
}
EvalResult::Err(err) => self.err(err),
}
}
self.ctx.leave_scope();
result
}
}