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 | |
| parent | Misc: Add README (diff) | |
| download | pry-lang-a6b7f27a848f337a3d742f51a3d22da5712b4e88.tar.gz pry-lang-a6b7f27a848f337a3d742f51a3d22da5712b4e88.tar.bz2 pry-lang-a6b7f27a848f337a3d742f51a3d22da5712b4e88.zip | |
Codegen: Fix bug with functions without name
| -rw-r--r-- | examples/7.src | 2 | ||||
| -rw-r--r-- | 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, |