Skip to main content

mago_syntax/ast/ast/
conditional.rs

1use serde::Serialize;
2
3use mago_span::HasSpan;
4use mago_span::Span;
5
6use crate::ast::ast::expression::Expression;
7
8#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, PartialOrd, Ord)]
9pub struct Conditional<'arena> {
10    pub condition: &'arena Expression<'arena>,
11    pub question_mark: Span,
12    pub then: Option<&'arena Expression<'arena>>,
13    pub colon: Span,
14    pub r#else: &'arena Expression<'arena>,
15}
16
17impl HasSpan for Conditional<'_> {
18    fn span(&self) -> Span {
19        self.condition.span().join(self.r#else.span())
20    }
21}