use super::*;
mod display;
mod iters;
#[derive(Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct UnionDeclaration {
pub annotations: AnnotationNode,
pub name: IdentifierNode,
pub inherits: Vec<ExpressionKind>,
pub implements: Option<ExpressionKind>,
pub body: Vec<UnionTerm>,
pub span: Range<u32>,
}
#[derive(Clone, PartialEq, Eq, Hash, From)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum UnionTerm {
Macro(ProceduralNode),
Variant(VariantDeclaration),
Method(MethodDeclaration),
}
#[derive(Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct VariantDeclaration {
pub name: IdentifierNode,
pub annotations: AnnotationNode,
pub body: Vec<ClassTerm>,
pub span: Range<u32>,
}