mago_syntax/ast/ast/
echo.rs1use serde::Serialize;
2
3use mago_span::HasSpan;
4use mago_span::Span;
5
6use crate::ast::ast::expression::Expression;
7use crate::ast::ast::keyword::Keyword;
8use crate::ast::ast::terminator::Terminator;
9use crate::ast::sequence::TokenSeparatedSequence;
10
11#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, PartialOrd, Ord)]
20pub struct EchoTag<'arena> {
21 pub tag: Span,
22 pub values: TokenSeparatedSequence<'arena, &'arena Expression<'arena>>,
23 pub terminator: Terminator<'arena>,
24}
25
26#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, PartialOrd, Ord)]
37pub struct Echo<'arena> {
38 pub echo: Keyword<'arena>,
39 pub values: TokenSeparatedSequence<'arena, &'arena Expression<'arena>>,
40 pub terminator: Terminator<'arena>,
41}
42
43impl HasSpan for EchoTag<'_> {
44 fn span(&self) -> Span {
45 self.tag.join(self.terminator.span())
46 }
47}
48
49impl HasSpan for Echo<'_> {
50 fn span(&self) -> Span {
51 self.echo.span().join(self.terminator.span())
52 }
53}