From fbc474a0c619df6bd334d5cde1987f820840c5f3 Mon Sep 17 00:00:00 2001 From: Baitinq Date: Fri, 30 May 2025 23:05:09 +0200 Subject: Feature: Support recursive structs --- src/codegen.zig | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/codegen.zig b/src/codegen.zig index b60ad95..9be065e 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -727,6 +727,17 @@ pub const CodeGen = struct { .STRUCT_TYPE => |t| { const struct_type = llvm.LLVMStructCreateNamed(self.llvm_context, try std.fmt.allocPrintZ(self.arena, "{s}", .{name.?})); + // Needed for recursive structs + if (name != null) { + try self.environment.add_variable(name.?, try self.create_variable(.{ + .value = null, + .type = struct_type, + .stack_level = null, + .node = expression, + .node_type = expression, + })); + } + var llvm_types = std.ArrayList(llvm.LLVMTypeRef).init(self.arena); for (t.fields) |field| { -- cgit 1.4.1