aboutsummaryrefslogtreecommitdiff
path: root/src/checker/type.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/checker/type.cpp')
-rw-r--r--src/checker/type.cpp37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/checker/type.cpp b/src/checker/type.cpp
index 3a66b62ac..8dea9c58f 100644
--- a/src/checker/type.cpp
+++ b/src/checker/type.cpp
@@ -51,21 +51,32 @@ struct BasicType {
};
+
+#define TYPE_KINDS \
+ TYPE_KIND(Invalid), \
+ TYPE_KIND(Basic), \
+ TYPE_KIND(Array), \
+ TYPE_KIND(Slice), \
+ TYPE_KIND(Structure), \
+ TYPE_KIND(Pointer), \
+ TYPE_KIND(Named), \
+ TYPE_KIND(Alias), \
+ TYPE_KIND(Tuple), \
+ TYPE_KIND(Procedure), \
+ TYPE_KIND(Count),
+
enum TypeKind {
- Type_Invalid,
-
- Type_Basic,
- Type_Array,
- Type_Slice,
- Type_Structure,
- Type_Pointer,
- Type_Named,
- Type_Alias,
- Type_Tuple,
- Type_Procedure,
-
- Type_Count,
+#define TYPE_KIND(k) GB_JOIN2(Type_, k)
+ TYPE_KINDS
+#undef TYPE_KIND
};
+
+String const type_strings[] = {
+#define TYPE_KIND(k) {cast(u8 *)#k, gb_size_of(#k)-1}
+ TYPE_KINDS
+#undef TYPE_KIND
+};
+
struct Type {
TypeKind kind;
union {