melior_macro/dialect/
type.rs1use tblgen::record::Record;
2
3#[derive(Debug, Clone, Copy)]
4pub struct Type {
5 optional: bool,
6 variadic: bool,
7 variadic_of_variadic: bool,
8}
9
10impl Type {
11 pub fn new(record: Record) -> Self {
12 Self {
13 optional: record.subclass_of("Optional"),
14 variadic: record.subclass_of("Variadic"),
15 variadic_of_variadic: record.subclass_of("VariadicOfVariadic"),
16 }
17 }
18
19 pub const fn is_optional(&self) -> bool {
20 self.optional
21 }
22
23 pub const fn is_variadic(&self) -> bool {
24 self.variadic
25 }
26
27 #[allow(unused)]
29 pub const fn is_variadic_of_variadic(&self) -> bool {
30 self.variadic_of_variadic
31 }
32
33 pub const fn is_unfixed(&self) -> bool {
34 self.is_variadic() || self.is_optional()
35 }
36}