about summary refs log tree commit diff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-05-15 18:42:37 +0200
committerBaitinq <[email protected]>2025-05-15 18:42:41 +0200
commitc8439a069354cb526e02a76f52e978738ad8871c (patch)
treee49d0eb7221431daee13965c90e724d2cba28cc0 /src/codegen.zig
parentBootstrap: Tokenizer: Tokenize keywords (diff)
downloadpry-lang-c8439a069354cb526e02a76f52e978738ad8871c.tar.gz
pry-lang-c8439a069354cb526e02a76f52e978738ad8871c.tar.bz2
pry-lang-c8439a069354cb526e02a76f52e978738ad8871c.zip
Feature: Add support for null pointers
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 5733d5f..05cb877 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -426,6 +426,19 @@ pub const CodeGen = struct {
                 return try self.generate_function_call_statement(@ptrCast(fn_call));
             },
             .PRIMARY_EXPRESSION => |primary_expression| switch (primary_expression) {
+                .NULL => {
+                    return try self.generate_literal(llvm.LLVMConstNull(llvm.LLVMPointerType(llvm.LLVMInt8Type(), 0)), name, expression, try self.create_node(.{
+                        .TYPE = .{
+                            .POINTER_TYPE = .{
+                                .type = try self.create_node(.{
+                                    .TYPE = .{ .SIMPLE_TYPE = .{
+                                        .name = "i8",
+                                    } },
+                                }),
+                            },
+                        },
+                    }));
+                },
                 .NUMBER => |n| {
                     return try self.generate_literal(llvm.LLVMConstInt(llvm.LLVMInt64Type(), @intCast(n.value), 0), name, expression, try self.create_node(.{
                         .TYPE = .{