diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-02-02 18:48:30 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-02-02 18:48:30 +0000 |
| commit | 037fd3fee47b0fd94e8f7a3cff25ab7578a6e5da (patch) | |
| tree | 22db67ddf944e565d778b32c291125f8b53ea72d /src/main/java | |
| parent | 1d41ef64406e575caf012f8a50febc15805bafca (diff) | |
Type check relational operations for integers
Diffstat (limited to 'src/main/java')
3 files changed, 10 insertions, 4 deletions
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; |
