use super::*;
#[derive(Debug, Clone, PartialEq)]
pub struct Stmt {
pub id: NodeId,
pub kind: StmtKind,
pub span: Span,
}
#[derive(Debug, Clone, PartialEq)]
pub enum StmtKind {
Expr(Expr),
Semi(Expr),
Let(Box<Local>),
Item(Box<Item>),
MacCall(MacCallStmt),
Empty,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Local {
pub pat: Pat,
pub ty: Option<Ty>,
pub kind: LocalKind,
pub span: Span,
pub attrs: AttrVec,
pub tokens: Option<TokenStream>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum LocalKind {
Decl,
Init(LocalInit),
InitElse(LocalInit, Block),
}
#[derive(Debug, Clone, PartialEq)]
pub struct LocalInit {
pub expr: Expr,
pub els: Option<Block>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct MacCallStmt {
pub mac: MacCall,
pub style: MacStmtStyle,
pub attrs: AttrVec,
pub tokens: Option<TokenStream>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MacStmtStyle {
Semicolon,
Braces,
NoBraces,
}