1mod alias;
2mod apply;
3mod atom;
4mod function;
5mod generic;
6mod pair;
7mod structs;
8mod unions;
9
10pub use alias::*;
11pub use apply::*;
12pub use atom::*;
13pub use function::*;
14pub use generic::*;
15pub use pair::*;
16pub use structs::*;
17pub use unions::*;
18
19use id_arena::Id;
20
21pub type TypeId = Id<Type>;
22
23#[derive(Debug, Clone)]
24pub enum Type {
25 Unresolved,
26 Generic(Generic),
27 Any,
28 Never,
29 Ref(TypeId),
30 Atom(Atom),
31 Pair(Pair),
32 Alias(Alias),
33 Struct(Struct),
34 Function(FunctionType),
35 Apply(Apply),
36 Union(Union),
37}