diff options
| author | Baitinq <[email protected]> | 2025-05-18 11:07:50 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-05-18 11:07:50 +0200 |
| commit | cc9a25f26c8c88141faf4b35cfffa3b276c25308 (patch) | |
| tree | 4e46985c0a3580fa9b564d9cdb8a91b5c04f31c5 /src | |
| parent | Feature: Add support for continue statement (diff) | |
| download | interpreter-cc9a25f26c8c88141faf4b35cfffa3b276c25308.tar.gz interpreter-cc9a25f26c8c88141faf4b35cfffa3b276c25308.tar.bz2 interpreter-cc9a25f26c8c88141faf4b35cfffa3b276c25308.zip | |
Codegen: Don't allow changing types on variable assignment
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/tokenizer.src | 8 | ||||
| -rw-r--r-- | src/codegen.zig | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/bootstrap/tokenizer.src b/src/bootstrap/tokenizer.src index ff2f5a7..6a88117 100644 --- a/src/bootstrap/tokenizer.src +++ b/src/bootstrap/tokenizer.src @@ -5,13 +5,13 @@ extern atoi = (*i8) => i64; import "!stdlib.src"; -let file_size = 0; -let buf = 0; +let offset = 0; +let buf = null; +let file_size = 0; -let offset = 0; -let tokens = 0; +let tokens = null; let tokens_len = 0; let read_file = (filename: *i8) => *i8 { diff --git a/src/codegen.zig b/src/codegen.zig index 33ee3b5..c10c7ec 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -151,6 +151,7 @@ pub const CodeGen = struct { } var ptr: llvm.LLVMValueRef = undefined; + var typ = variable.node_type; if (assignment_statement.is_declaration) { var x = try self.get_llvm_type(variable.node_type); if (variable.node_type.TYPE == .FUNCTION_TYPE) { @@ -159,11 +160,10 @@ pub const CodeGen = struct { ptr = llvm.LLVMBuildAlloca(self.builder, x, try std.fmt.allocPrintZ(self.arena, "{s}", .{identifier.name})); } else { ptr = self.environment.get_variable(identifier.name).?.value; + typ = self.environment.get_variable(identifier.name).?.node_type; } - var typ = variable.node_type; if (assignment_statement.is_dereference) { - typ = self.environment.get_variable(identifier.name).?.node_type; ptr = llvm.LLVMBuildLoad2(self.builder, try self.get_llvm_type(typ), ptr, ""); } |