use microcad_lang_base::PushDiag;
use crate::{eval::*, lower::ir};
impl Eval<ArgumentValue> for ir::Argument {
fn eval(&self, context: &mut EvalContext) -> EvalResult<ArgumentValue> {
use crate::lower::SingleIdentifier;
Ok(ArgumentValue::new(
match self.expression.eval(context) {
Ok(value) => value,
Err(err) => {
context.error(self, err)?;
Value::None
}
},
self.expression.single_identifier().cloned(),
self.src_ref.clone(),
))
}
}