use crate::{ errors::{CheckError, SourceRange}, info, program::{self}, }; use super::{CompInfo, MersStatement}; #[derive(Debug)] pub struct Tuple { pub pos_in_src: SourceRange, pub elems: Vec>, } impl MersStatement for Tuple { fn has_scope(&self) -> bool { false } fn compile_custom( &self, info: &mut info::Info, comp: CompInfo, ) -> Result, CheckError> { Ok(Box::new(program::run::tuple::Tuple { pos_in_src: self.pos_in_src.clone(), elems: self .elems .iter() .map(|v| v.compile(info, comp)) .collect::, _>>()?, })) } fn source_range(&self) -> SourceRange { self.pos_in_src.clone() } }