microcad_lang/syntax/statement/
statement_list.rs1use crate::{src_ref::*, syntax::*};
7use derive_more::Deref;
8
9#[derive(Clone, Default, Deref)]
11pub struct StatementList(pub Vec<Statement>);
12
13impl std::fmt::Display for StatementList {
14 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
15 for statement in self.iter() {
16 writeln!(f, "{statement}")?;
17 }
18 Ok(())
19 }
20}
21
22impl std::fmt::Debug for StatementList {
23 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24 for statement in self.iter() {
25 writeln!(f, "{statement:?}")?;
26 }
27 Ok(())
28 }
29}
30
31impl SrcReferrer for StatementList {
32 fn src_ref(&self) -> SrcRef {
33 if let (Some(first), Some(last)) = (self.first(), self.last()) {
34 SrcRef::merge(first, last)
35 } else {
36 SrcRef(None)
37 }
38 }
39}