aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ast.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-09-03 20:36:22 +0900
committernsfisis <nsfisis@gmail.com>2025-09-03 20:36:22 +0900
commit980d73ce25b116e645b16e9ed37dcf55fdffad7a (patch)
tree1039ecaa3a98b443a6818d660763051be1f5a54b /src/ast.c
parent256cbd88c53d15884f3519ce75890c7bd1626cb2 (diff)
downloadducc-980d73ce25b116e645b16e9ed37dcf55fdffad7a.tar.gz
ducc-980d73ce25b116e645b16e9ed37dcf55fdffad7a.tar.zst
ducc-980d73ce25b116e645b16e9ed37dcf55fdffad7a.zip
feat: support native bool/true/false
Diffstat (limited to 'src/ast.c')
-rw-r--r--src/ast.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/ast.c b/src/ast.c
index 1e444ba..84fe38e 100644
--- a/src/ast.c
+++ b/src/ast.c
@@ -35,6 +35,8 @@ const char* type_kind_stringify(TypeKind k) {
return "double";
else if (k == TypeKind_ldouble)
return "long double";
+ else if (k == TypeKind_bool)
+ return "bool";
else if (k == TypeKind_struct)
return "struct";
else if (k == TypeKind_union)
@@ -89,7 +91,7 @@ Type* type_new_func(Type* result, AstNode* params) {
return ty;
}
-BOOL type_is_unsized(Type* ty) {
+bool type_is_unsized(Type* ty) {
return ty->kind == TypeKind_void || ty->kind == TypeKind_func;
}
@@ -98,7 +100,8 @@ int type_sizeof(Type* ty) {
fatal_error("type_sizeof: type size cannot be determined");
}
- if (ty->kind == TypeKind_char || ty->kind == TypeKind_schar || ty->kind == TypeKind_uchar)
+ if (ty->kind == TypeKind_char || ty->kind == TypeKind_schar || ty->kind == TypeKind_uchar ||
+ ty->kind == TypeKind_bool)
return 1;
else if (ty->kind == TypeKind_short || ty->kind == TypeKind_ushort)
return 2;
@@ -126,7 +129,8 @@ int type_alignof(Type* ty) {
fatal_error("type_alignof: type size cannot be determined");
}
- if (ty->kind == TypeKind_char || ty->kind == TypeKind_schar || ty->kind == TypeKind_uchar)
+ if (ty->kind == TypeKind_char || ty->kind == TypeKind_schar || ty->kind == TypeKind_uchar ||
+ ty->kind == TypeKind_bool)
return 1;
else if (ty->kind == TypeKind_short || ty->kind == TypeKind_ushort)
return 2;