compose_eval/expression/
array.rs1use crate::{Eval, Evaluated, Machine};
2use compose_library::diag::SourceResult;
3use compose_library::{ArrayValue, Value, Vm};
4use compose_syntax::ast;
5
6impl<'a> Eval for ast::Array<'a> {
7 fn eval(self, vm: &mut Machine) -> SourceResult<Evaluated> {
8 let elements = self.elements();
9
10 let inner = elements
11 .map(|e| e.eval(vm).map(|v| v.value))
12 .collect::<SourceResult<Vec<Value>>>()?;
13
14 Ok(Evaluated::mutable(Value::Array(ArrayValue::from(
15 vm.heap_mut(),
16 inner,
17 ))))
18 }
19}