diff options
| author | Baitinq <[email protected]> | 2025-07-07 23:50:06 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-07-07 23:50:06 +0200 |
| commit | 6818776dd5866ff07938cbdf8dbfdf6cea62fe34 (patch) | |
| tree | b5e4e515b202a30fb98f4857400584d72eff32f2 /src/bootstrap/codegen.pry | |
| parent | Boostrap: Codegen function definition arguments (diff) | |
| download | pry-lang-6818776dd5866ff07938cbdf8dbfdf6cea62fe34.tar.gz pry-lang-6818776dd5866ff07938cbdf8dbfdf6cea62fe34.tar.bz2 pry-lang-6818776dd5866ff07938cbdf8dbfdf6cea62fe34.zip | |
Bootstrap: Codegen: Support bool types
Diffstat (limited to 'src/bootstrap/codegen.pry')
| -rw-r--r-- | src/bootstrap/codegen.pry | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/bootstrap/codegen.pry b/src/bootstrap/codegen.pry index c8032d9..1bb20ca 100644 --- a/src/bootstrap/codegen.pry +++ b/src/bootstrap/codegen.pry @@ -145,6 +145,12 @@ let codegen_get_llvm_type = (c: *codegen, node: *Node) => *LLVMTypeRef { return r; }; + if strcmp(simple_type.name, "bool") { + let r = cast(*LLVMTypeRef, arena_alloc((*c).arena, sizeof(LLVMTypeRef))); + *r = LLVMInt1Type(); + return r; + }; + if strcmp(simple_type.name, "void") { let r = cast(*LLVMTypeRef, arena_alloc((*c).arena, sizeof(LLVMTypeRef))); *r = LLVMVoidType(); @@ -252,6 +258,26 @@ let codegen_generate_expression_value = (c: *codegen, expression: *Node, name: * return codegen_generate_literal(c, LLVMConstInt(LLVMInt64Type(), n, 0), name, expression, create_node(c, node_type)); }; + if ((*expression).type == NODE_PRIMARY_EXPRESSION_BOOLEAN) { + printf("THIS\n"); + let b = (*cast(*NODE_PRIMARY_EXPRESSION_BOOLEAN_DATA, (*expression).data)).value; + + let node_type = Node{}; + node_type.type = NODE_TYPE_SIMPLE_TYPE; + + let d = cast(*NODE_TYPE_SIMPLE_TYPE_DATA, arena_alloc((*c).arena, sizeof(NODE_TYPE_SIMPLE_TYPE_DATA))); + (*d).name = "bool"; + (*d).underlying_type = cast(*Node, null); + node_type.data = cast(*void, d); + + let int_value = 0; + if b == true { + int_value = 1; + }; + + return codegen_generate_literal(c, LLVMConstInt(LLVMInt1Type(), int_value, 0), name, expression, create_node(c, node_type)); + }; + if ((*expression).type == NODE_PRIMARY_EXPRESSION_STRING) { printf("THIS8\n"); let str = (*cast(*NODE_PRIMARY_EXPRESSION_STRING_DATA, (*expression).data)).value; |