use nova_diagnostics::Spanned;
use crate::Path;
#[derive(Debug, Clone)]
pub enum Type {
Path {
path: Path,
args: Vec<Spanned<Type>>,
},
Ref {
is_mut: bool,
inner: Box<Spanned<Type>>,
},
Ptr {
is_mut: bool,
inner: Box<Spanned<Type>>,
},
Array(Box<Spanned<Type>>),
Tuple(Vec<Spanned<Type>>),
Fn {
params: Vec<Spanned<Type>>,
ret: Box<Spanned<Type>>,
},
Optional(Box<Spanned<Type>>),
Infer,
}
#[derive(Debug, Clone)]
pub struct TypeParam {
pub name: Spanned<String>,
pub bounds: Vec<Spanned<Path>>,
}