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