lovm2_core/gen/hir/
return.rs1use super::*;
6
7#[derive(Clone)]
9pub struct Return {
10 expr: Expr,
11}
12
13impl Return {
14 pub fn nil() -> Self {
15 Self {
16 expr: Value::Nil.into(),
17 }
18 }
19
20 pub fn value<T>(expr: T) -> Self
21 where
22 T: Into<Expr>,
23 {
24 Self { expr: expr.into() }
25 }
26}
27
28impl HirLowering for Return {
29 fn lower<'hir, 'lir>(&'hir self, runtime: &mut HirLoweringRuntime<'lir>)
30 where
31 'hir: 'lir,
32 {
33 self.expr.lower(runtime);
34 runtime.emit(LirElement::Ret);
35 }
36}