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