microcad_lang/eval/call/
argument.rs

1// Copyright © 2025 The µcad authors <info@ucad.xyz>
2// SPDX-License-Identifier: AGPL-3.0-or-later
3
4//! µcad value related evaluation entities
5
6use crate::{eval::*, syntax::*};
7
8impl Eval<ArgumentValue> for Argument {
9    /// Evaluate `Argument` and return `ArgumentValue`
10    fn eval(&self, context: &mut EvalContext) -> EvalResult<ArgumentValue> {
11        Ok(ArgumentValue::new(
12            match self.expression.eval(context) {
13                Ok(value) => value,
14                Err(err) => {
15                    context.error(self, err)?;
16                    Value::None
17                }
18            },
19            self.expression.single_identifier().cloned(),
20            self.src_ref.clone(),
21        ))
22    }
23}