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