1use std::fmt::Debug;
2
3use span::Span;
4
5use crate::Path;
6
7#[derive(Debug, Clone, PartialEq)]
8pub enum TypeKind {
9 I8(Span),
10 I16(Span),
11 I32(Span),
12 I64(Span),
13 U8(Span),
14 U16(Span),
15 U32(Span),
16 U64(Span),
17 F32(Span),
18 F64(Span),
19 Bool(Span),
20 Char(Span),
21 Array {
22 open_brace: Span,
23 ty: Box<Type>,
24 semicollon: Span,
25 length: u32,
26 close_brace: Span,
27 },
28 Path(Path),
29 Ref {
30 ampersand: Span,
31 of: Box<Type>,
32 },
33 Empty(Span),
34}
35
36#[derive(Clone, PartialEq)]
37pub struct Type {
38 pub kind: TypeKind,
39 pub span: Span,
40}
41
42impl Debug for Type {
43 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
44 write!(f, "{:#?}", self.kind)
45 }
46}