cas_compiler/expr/
return_expr.rs1use 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}