use super::*;
mod display;
#[derive(Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ControlNode {
pub kind: ControlKind,
pub label: LabelNode,
pub expression: Option<ExpressionKind>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum LabelNode {
Nearest,
Named(IdentifierNode),
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ControlKind {
Goto,
Raise,
Break,
Continue,
Fallthrough,
FallthroughUnchecked,
Return,
Resume,
YieldReturn,
YieldBreak,
YieldFrom,
YieldSend,
Await,
AwaitNever,
AwaitBlockOn,
}