ast/
types.rs

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}