about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-03-11 00:04:11 +0100
committerBaitinq <[email protected]>2025-03-11 00:04:56 +0100
commita6b7f27a848f337a3d742f51a3d22da5712b4e88 (patch)
tree21ddd713b65aaba06787e6fc08285486e6e6be9c
parentMisc: Add README (diff)
downloadinterpreter-a6b7f27a848f337a3d742f51a3d22da5712b4e88.tar.gz
interpreter-a6b7f27a848f337a3d742f51a3d22da5712b4e88.tar.bz2
interpreter-a6b7f27a848f337a3d742f51a3d22da5712b4e88.zip
Codegen: Fix bug with functions without name
-rw-r--r--examples/7.src2
-rw-r--r--src/codegen.zig5
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,