about summary refs log tree commit diff
path: root/src/codegen.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig11
1 files changed, 11 insertions, 0 deletions
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| {