diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-28 13:48:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-28 13:48:39 +0100 |
| commit | 3ce11f3a242c2287a14d5f5a4ae230b4c79beaaa (patch) | |
| tree | 0b73e903f3510815eda72058d84d852f4657b682 /src | |
| parent | e64daf38c0b6c98ccd75af777c58708c395b1b95 (diff) | |
Add <= and >= operators to Java AST
Diffstat (limited to 'src')
3 files changed, 34 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java index 52c2db1..d2f46ad 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java @@ -792,9 +792,11 @@ public class JavaWriter implements AutoCloseable { case BITWISE_OR -> JavaPrecedence.BITWISE_INCLUSIVE_OR; case EQUAL_TO -> JavaPrecedence.EQUALITY; case GREATER_THAN -> JavaPrecedence.RELATIONAL; + case GREATER_THAN_OR_EQUAL -> JavaPrecedence.RELATIONAL; case LOGICAL_AND -> JavaPrecedence.LOGICAL_AND; case LEFT_SHIFT -> JavaPrecedence.SHIFT; case LESS_THAN -> JavaPrecedence.RELATIONAL; + case LESS_THAN_OR_EQUAL -> JavaPrecedence.RELATIONAL; case MULTIPLY -> JavaPrecedence.MULTIPLICATIVE; case NOT_EQUAL_TO -> JavaPrecedence.EQUALITY; case UNSIGNED_RIGHT_SHIFT -> JavaPrecedence.SHIFT; @@ -830,8 +832,10 @@ public class JavaWriter implements AutoCloseable { case BITWISE_OR -> "|"; case EQUAL_TO -> "=="; case GREATER_THAN -> ">"; + case GREATER_THAN_OR_EQUAL -> ">="; case LEFT_SHIFT -> "<<"; case LESS_THAN -> "<"; + case LESS_THAN_OR_EQUAL -> "<="; case LOGICAL_AND -> "&&"; case MULTIPLY -> "*"; case NOT_EQUAL_TO -> "!="; @@ -853,8 +857,10 @@ public class JavaWriter implements AutoCloseable { case BITWISE_OR -> true; case EQUAL_TO -> true; case GREATER_THAN -> true; + case GREATER_THAN_OR_EQUAL -> true; case LEFT_SHIFT -> true; case LESS_THAN -> true; + case LESS_THAN_OR_EQUAL -> true; case LOGICAL_AND -> true; case MULTIPLY -> true; case NOT_EQUAL_TO -> true; diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java index d098691..5c96b0a 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java @@ -12,8 +12,10 @@ public enum JavaBinaryOperator { BITWISE_OR, EQUAL_TO, GREATER_THAN, + GREATER_THAN_OR_EQUAL, LEFT_SHIFT, LESS_THAN, + LESS_THAN_OR_EQUAL, LOGICAL_AND, MULTIPLY, NOT_EQUAL_TO, diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java index de39610..6ccf789 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java @@ -1460,6 +1460,19 @@ public class JavaWriterTests { } @Test + public void binaryOperationGreaterThanOrEqual() throws IOException { + var java = new JavaBinaryOperation( + JavaBinaryOperator.GREATER_THAN_OR_EQUAL, + new JavaRef(JavaIdentifier.of("x")), + new JavaIntegerLiteral(42) + ); + + var string = write(writer -> writer.writeTopLevelExpression(java)); + + assertThat(string, equalTo("x >= 42")); + } + + @Test public void binaryOperationLeftShift() throws IOException { var java = JavaBinaryOperation.arbitrary() .withOperator(JavaBinaryOperator.LEFT_SHIFT) @@ -1486,6 +1499,19 @@ public class JavaWriterTests { } @Test + public void binaryOperationLessThanOrEqual() throws IOException { + var java = new JavaBinaryOperation( + JavaBinaryOperator.LESS_THAN_OR_EQUAL, + new JavaRef(JavaIdentifier.of("x")), + new JavaIntegerLiteral(42) + ); + + var string = write(writer -> writer.writeTopLevelExpression(java)); + + assertThat(string, equalTo("x <= 42")); + } + + @Test public void binaryOperationLogicalAnd() throws IOException { var java = new JavaBinaryOperation( JavaBinaryOperator.LOGICAL_AND, |
