use crate::parser::ast::{
declaration::generics::{GenericConstArg, GenericTypeArg},
declaration::visibility::Visibility,
identifier::Identifier,
metadata::AstNodeMeta,
types::TypeInstantiation,
};
use super::where_clause::WhereClause;
#[derive(Debug)]
pub struct UnionDeclaration<'src> {
pub meta: AstNodeMeta<'src>,
pub vis: Visibility<'src>,
pub name: Identifier<'src>,
pub generic_type_arguments: Vec<GenericTypeArg<'src>>,
pub generic_const_arguments: Vec<GenericConstArg<'src>>,
pub where_clause: Option<WhereClause<'src>>,
pub variants: Vec<UnionVariant<'src>>,
}
#[derive(Debug)]
pub struct UnionVariant<'src> {
pub meta: AstNodeMeta<'src>,
pub name: Identifier<'src>,
pub ty: TypeInstantiation<'src>,
}