microcad_lang/eval/call/
argument.rs1use microcad_lang_base::PushDiag;
7
8use crate::{eval::*, lower::ir};
9
10impl Eval<ArgumentValue> for ir::Argument {
11 fn eval(&self, context: &mut EvalContext) -> EvalResult<ArgumentValue> {
13 use crate::lower::SingleIdentifier;
14
15 Ok(ArgumentValue::new(
16 match self.expression.eval(context) {
17 Ok(value) => value,
18 Err(err) => {
19 context.error(self, err)?;
20 Value::None
21 }
22 },
23 self.expression.single_identifier().cloned(),
24 self.src_ref.clone(),
25 ))
26 }
27}