summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hobgoblin/src/output/lang/java/ast.hob1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java3
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java1
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java13
4 files changed, 18 insertions, 0 deletions
diff --git a/hobgoblin/src/output/lang/java/ast.hob b/hobgoblin/src/output/lang/java/ast.hob
index f44e4af..5ec34a1 100644
--- a/hobgoblin/src/output/lang/java/ast.hob
+++ b/hobgoblin/src/output/lang/java/ast.hob
@@ -192,6 +192,7 @@ enum JavaBinaryOperator {
variant bitwiseOr;
variant equalTo;
variant leftShift;
+ variant lessThan;
variant notEqualTo;
variant unsignedRightShift;
}
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
@@ -1007,6 +1007,19 @@ public class JavaWriterTests {
}
@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(
JavaBinaryOperator.NOT_EQUAL_TO,