use crate::{
debug::StructDebug, expression::Expression, function::Function, structure::StructField,
r#type::Type,
};
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum EnumVariantFields {
Unit,
Tuple { types: Vec<Type> },
Named(Vec<StructField>),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct EnumVariant {
pub name: String,
pub fields: EnumVariantFields,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Enum {
pub name: String,
pub variants: Vec<EnumVariant>,
pub constants: Vec<(String, Expression)>,
pub methods: Vec<Function>,
pub doc: Option<String>,
pub debug: Option<StructDebug>,
}