From 037fd3fee47b0fd94e8f7a3cff25ab7578a6e5da Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 2 Feb 2025 18:48:30 +0000 Subject: Type check relational operations for integers --- .../java/org/shedlang/compiler/ast/typed/TypedBinaryOperator.java | 4 ++++ src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java | 2 ++ src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 8 ++++---- 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedBinaryOperator.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedBinaryOperator.java index 2f2e5929..d1f32073 100644 --- a/src/main/java/org/shedlang/compiler/ast/typed/TypedBinaryOperator.java +++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedBinaryOperator.java @@ -6,6 +6,10 @@ import org.shedlang.compiler.types.Types; public enum TypedBinaryOperator { INT_ADD(Types.INT), INT_EQUALS(Types.BOOL), + INT_GREATER_THAN(Types.BOOL), + INT_GREATER_THAN_OR_EQUAL(Types.BOOL), + INT_LESS_THAN(Types.BOOL), + INT_LESS_THAN_OR_EQUAL(Types.BOOL), INT_NOT_EQUAL(Types.BOOL), INT_SUB(Types.INT), STRING_ADD(Types.STRING); diff --git a/src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java b/src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java index 350ed118..1d7c94b6 100644 --- a/src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java +++ b/src/main/java/org/shedlang/compiler/shid/ShidCodeGen.java @@ -45,6 +45,8 @@ public class ShidCodeGen { new ShidIntSub(node.source()); case STRING_ADD -> new ShidStringAdd(node.source()); + default -> + throw new UnsupportedOperationException("TODO"); }); return context; diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index db249c0d..d4b52aa4 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -239,16 +239,16 @@ public class TypeChecker { TypedBinaryOperator.INT_EQUALS; case GREATER_THAN -> - throw new UnsupportedOperationException("TODO"); + TypedBinaryOperator.INT_GREATER_THAN; case GREATER_THAN_OR_EQUAL -> - throw new UnsupportedOperationException("TODO"); + TypedBinaryOperator.INT_GREATER_THAN_OR_EQUAL; case LESS_THAN -> - throw new UnsupportedOperationException("TODO"); + TypedBinaryOperator.INT_LESS_THAN; case LESS_THAN_OR_EQUAL -> - throw new UnsupportedOperationException("TODO"); + TypedBinaryOperator.INT_LESS_THAN_OR_EQUAL; case NOT_EQUAL -> TypedBinaryOperator.INT_NOT_EQUAL; -- cgit v1.2.3