about summary refs log tree commit diff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-05-24 10:29:38 +0200
committerBaitinq <[email protected]>2025-05-24 10:29:38 +0200
commit10f5f234ce066f533bc7dfa96b4acbd342c359c4 (patch)
treeb3b4f2f934a4c00a5fd45f03c1bf04f7eb1d08cb /src/codegen.zig
parentCodegen: Fix bug with typecheck of return of function params (diff)
downloadpry-lang-10f5f234ce066f533bc7dfa96b4acbd342c359c4.tar.gz
pry-lang-10f5f234ce066f533bc7dfa96b4acbd342c359c4.tar.bz2
pry-lang-10f5f234ce066f533bc7dfa96b4acbd342c359c4.zip
Codegen: Fix bug with functions inside functions
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index e9eec9b..619e6db 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -545,11 +545,12 @@ pub const CodeGen = struct {
                 },
                 .IDENTIFIER => |i| {
                     const variable = self.environment.get_variable(i.name).?;
-                    var param_type = try self.get_llvm_type(variable.node_type);
                     var param_value = variable.value;
-                    if (variable.node_type.TYPE == .FUNCTION_TYPE) {
-                        param_type = llvm.LLVMPointerType(param_type.?, 0);
-                    } else {
+                    if (variable.node_type.TYPE != .FUNCTION_TYPE or variable.stack_level != 0) {
+                        var param_type = try self.get_llvm_type(variable.node_type);
+                        if (variable.node_type.TYPE == .FUNCTION_TYPE) {
+                            param_type = llvm.LLVMPointerType(param_type.?, 0);
+                        }
                         param_value = llvm.LLVMBuildLoad2(self.builder, param_type, variable.value, "");
                     }