From a6b7f27a848f337a3d742f51a3d22da5712b4e88 Mon Sep 17 00:00:00 2001 From: Baitinq Date: Tue, 11 Mar 2025 00:04:11 +0100 Subject: Codegen: Fix bug with functions without name --- examples/7.src | 2 +- src/codegen.zig | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/7.src b/examples/7.src index c0690b6..b10a350 100644 --- a/examples/7.src +++ b/examples/7.src @@ -2,7 +2,7 @@ let ten = () => i64 { return () => i64 { return 10; }(); -}; /* TODO */ +}; let main = () => i64 { let i = 4; diff --git a/src/codegen.zig b/src/codegen.zig index 45ebde6..d463122 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -265,10 +265,11 @@ pub const CodeGen = struct { try self.environment.create_scope(); defer self.environment.drop_scope(); - const ptr = self.environment.get_variable(name.?); + var ptr: ?*Variable = null; // Needed for recursive functions if (name != null) { + ptr = self.environment.get_variable(name.?); try self.environment.add_variable(name.?, try self.create_variable(.{ .value = function, .type = function_type, @@ -309,7 +310,7 @@ pub const CodeGen = struct { core.LLVMPositionBuilderAtEnd(self.builder, builder_pos); // Global functions - if (self.environment.scope_stack.items.len == 2) { + if (name == null or self.environment.scope_stack.items.len == 2) { return try self.create_variable(.{ .value = function, .type = function_type, -- cgit 1.4.1