aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java b/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java
index 475831c6..1b4aa18c 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java
@@ -318,13 +318,29 @@ public class PatioCodeGen {
case IntEqualsInstruction intEquals ->
generateBinaryOperation(
- (target, left, right, operationContext) ->
- operationContext.addInstruction(new PatioIntEquals(
- target,
+ (target, left, right, operationContext) -> {
+ var targetBoolResult = operationContext.allocateLocal(
+ PatioCodeGenLocalSpace.TEMPORARY,
+ PatioTypes.INT
+ );
+ var targetBool = targetBoolResult.value();
+ operationContext = targetBoolResult.context();
+
+ operationContext = operationContext.addInstruction(new PatioIntEquals(
+ targetBool,
left,
right,
intEquals.source()
- )),
+ ));
+
+ operationContext = operationContext.addInstruction(new PatioBoolToInt(
+ target,
+ targetBool,
+ intEquals.source()
+ ));
+
+ return operationContext;
+ },
context
);