use crate::syntax::decl::{CSTVarDecl, CSTFuncDecl};
use crate::ast::ty::Type;
use crate::ast::expr::Expr;
use crate::util::mstring::StringHandle;
use crate::util::sona::Owner;
pub enum Decl<'a> {
VarDecl(VarDecl<'a>, &'a CSTVarDecl),
FuncDecl(FuncDecl<'a>, &'a CSTFuncDecl)
}
pub struct VarDecl<'a> {
pub var_name: StringHandle,
pub var_type: &'a Type<'a>,
pub var_init: Option<Owner<'a, Expr<'a>>>
}
pub struct FuncDecl<'a> {
pub func_name: StringHandle,
pub arg_types: Vec<&'a Type<'a>>,
pub ret_type: &'a Type<'a>
}