diff options
| author | Baitinq <[email protected]> | 2025-03-11 00:04:11 +0100 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-03-11 00:04:56 +0100 |
| commit | a6b7f27a848f337a3d742f51a3d22da5712b4e88 (patch) | |
| tree | 21ddd713b65aaba06787e6fc08285486e6e6be9c /src/codegen.zig | |
| parent | Misc: Add README (diff) | |
| download | interpreter-a6b7f27a848f337a3d742f51a3d22da5712b4e88.tar.gz interpreter-a6b7f27a848f337a3d742f51a3d22da5712b4e88.tar.bz2 interpreter-a6b7f27a848f337a3d742f51a3d22da5712b4e88.zip | |
Codegen: Fix bug with functions without name
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 5 |
1 files changed, 3 insertions, 2 deletions
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, |