microcad-lang 0.5.0

µcad language
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Copyright © 2025-2026 The µcad authors <info@microcad.xyz>
// SPDX-License-Identifier: AGPL-3.0-or-later

use crate::{eval::*, lower::ir};

impl Eval<Value> for ir::ReturnStatement {
    fn eval(&self, context: &mut EvalContext) -> EvalResult<Value> {
        log::debug!("Evaluating return statement to value: {self}");
        if let Some(result) = &self.result {
            let result = result.eval(context)?;
            log::debug!("returning {result}");
            Ok(Value::Return(Box::new(result)))
        } else {
            Ok(Value::Return(Value::None.into()))
        }
    }
}