use super::*;
use crate::StatementBody;
#[cfg(feature = "pretty-print")]
mod display;
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct GuardStatement {
pub condition: GuardPattern,
pub body: StatementBlock,
pub span: Range<u32>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash, From)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum GuardPattern {
Case(Box<ImplicitCaseNode>),
Inline(Box<ExpressionNode>),
}
impl GuardStatement {
pub fn last(&self) -> Option<&StatementBody> {
Some(&self.body.terms.last()?.r#type)
}
}