From 2fa409c86fc3f4426c640c3715b3c15e8cd30a3c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 10 Jul 2026 20:55:01 +0100 Subject: Add less than operator to Java AST --- .../hobgoblin/compiler/output/lang/java/JavaWriter.java | 3 +++ .../compiler/output/lang/java/ast/JavaBinaryOperator.java | 1 + .../compiler/output/lang/java/JavaWriterTests.java | 13 +++++++++++++ 3 files changed, 17 insertions(+) (limited to 'src') 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 7b402b7..18df14e 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 @@ -609,6 +609,7 @@ public class JavaWriter implements AutoCloseable { case BITWISE_OR -> JavaPrecedence.BITWISE_INCLUSIVE_OR; case EQUAL_TO -> JavaPrecedence.EQUALITY; case LEFT_SHIFT -> JavaPrecedence.SHIFT; + case LESS_THAN -> JavaPrecedence.RELATIONAL; case NOT_EQUAL_TO -> JavaPrecedence.EQUALITY; case UNSIGNED_RIGHT_SHIFT -> JavaPrecedence.SHIFT; }; @@ -630,6 +631,7 @@ public class JavaWriter implements AutoCloseable { case BITWISE_OR -> "|"; case EQUAL_TO -> "=="; case LEFT_SHIFT -> "<<"; + case LESS_THAN -> "<"; case NOT_EQUAL_TO -> "!="; case UNSIGNED_RIGHT_SHIFT -> ">>>"; }); @@ -648,6 +650,7 @@ public class JavaWriter implements AutoCloseable { case BITWISE_OR -> true; case EQUAL_TO -> true; case LEFT_SHIFT -> true; + case LESS_THAN -> true; case NOT_EQUAL_TO -> true; case UNSIGNED_RIGHT_SHIFT -> 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 a3284e6..4eaa2a5 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 @@ -11,6 +11,7 @@ public enum JavaBinaryOperator { BITWISE_OR, EQUAL_TO, LEFT_SHIFT, + LESS_THAN, NOT_EQUAL_TO, UNSIGNED_RIGHT_SHIFT 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 02f471c..4daf608 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 @@ -1006,6 +1006,19 @@ public class JavaWriterTests { assertThat(string, equalTo("x == y")); } + @Test + public void binaryOperationLessThan() throws IOException { + var java = new JavaBinaryOperation( + JavaBinaryOperator.LESS_THAN, + new JavaRef(JavaIdentifier.of("x")), + new JavaIntegerLiteral(42) + ); + + var string = write(writer -> writer.writeTopLevelExpression(java)); + + assertThat(string, equalTo("x < 42")); + } + @Test public void binaryOperationNotEqualTo() throws IOException { var java = new JavaBinaryOperation( -- cgit v1.2.3