From 77af4d067be345fd59cd7a670042a997816d7528 Mon Sep 17 00:00:00 2001 From: kayomn Date: Fri, 25 Aug 2023 22:57:33 +0100 Subject: [PATCH] Fix > and == operators being miscompiled --- source/ona/kym.zig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ona/kym.zig b/source/ona/kym.zig index 62c6c41..59803b9 100644 --- a/source/ona/kym.zig +++ b/source/ona/kym.zig @@ -136,9 +136,9 @@ pub const RuntimeEnv = struct { .subtraction => .sub, .multiplication => .mul, .divsion => .div, - .greater_equals_comparison => .eql, + .greater_equals_comparison => .cge, .greater_than_comparison => .cgt, - .equals_comparison => .cge, + .equals_comparison => .eql, .less_than_comparison => .clt, .less_equals_comparison => .cle, }); @@ -297,13 +297,13 @@ pub const RuntimeEnv = struct { try self.compile_expression(chunk, @"if".condition_expression); try chunk.opcodes.push_one(.{.jf = 0}); - const then_origin_index = @as(u32, @intCast(chunk.opcodes.values.len - 1)); + const origin_index = @as(u32, @intCast(chunk.opcodes.values.len - 1)); for (@"if".block_statements.values) |block_statement| { try self.compile_statement(chunk, block_statement); } - chunk.opcodes.values[then_origin_index].jf = @intCast(chunk.opcodes.values.len - 1); + chunk.opcodes.values[origin_index].jf = @intCast(chunk.opcodes.values.len - 1); if (@"if".else_statement) |else_statement| { try self.compile_statement(chunk, else_statement.*);