xenon_codegen/
type.rs

1use super::identifier::Identifier;
2
3#[derive(Clone, Default)]
4pub struct Type {
5    pub name: Identifier,
6    pub generic_child: Option<Box<Type>>
7}
8impl Type {
9    pub fn new(name: Identifier) -> Type {
10        return Type {
11            name,
12            generic_child: None
13        };
14    }
15
16    pub fn is_valid(&self) -> bool {
17        if !self.name.is_valid() {
18            return false;
19        }
20
21        match self.generic_child.as_ref() {
22            Some(c) => {
23                if !c.is_valid() {
24                    return false;
25                }
26            }
27            None => {
28                return true;
29            }
30        }
31
32        return true;
33    }
34}