1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
use super::{Context, Executable, InterpreterState};
use crate::{syntax::ast::node::Return, Result, Value};

impl Executable for Return {
    fn run(&self, interpreter: &mut Context) -> Result<Value> {
        let result = match self.expr() {
            Some(ref v) => v.run(interpreter),
            None => Ok(Value::undefined()),
        };
        // Set flag for return
        interpreter
            .executor()
            .set_current_state(InterpreterState::Return);
        result
    }
}