cas_compiler/expr/
return_expr.rs

1use cas_compute::numerical::value::Value;
2use cas_error::Error;
3use cas_parser::parser::ast::return_expr::Return;
4use crate::{Compile, Compiler, InstructionKind};
5
6impl Compile for Return {
7    fn compile(&self, compiler: &mut Compiler) -> Result<(), Error> {
8        if let Some(expr) = &self.value {
9            expr.compile(compiler)?;
10        } else {
11            compiler.add_instr(InstructionKind::LoadConst(Value::Unit));
12        }
13        compiler.add_instr(InstructionKind::Return);
14        Ok(())
15    }
16}