diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-26 16:17:19 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-26 16:17:19 +0100 |
| commit | 3ffddab4deb7e1c115936792d45f4ede5b904901 (patch) | |
| tree | 3d30813169e7cd2e0ba9ed58e47882b3406f0511 /src | |
| parent | 7272bb92deb55a032ef37e6f3f8549793b1e2a3b (diff) | |
Add logical and to Java AST
Diffstat (limited to 'src')
3 files changed, 17 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 bc70492..1ca3abd 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 @@ -710,6 +710,7 @@ public class JavaWriter implements AutoCloseable { case BITWISE_AND -> JavaPrecedence.BITWISE_AND; case BITWISE_OR -> JavaPrecedence.BITWISE_INCLUSIVE_OR; case EQUAL_TO -> JavaPrecedence.EQUALITY; + case LOGICAL_AND -> JavaPrecedence.LOGICAL_AND; case LEFT_SHIFT -> JavaPrecedence.SHIFT; case LESS_THAN -> JavaPrecedence.RELATIONAL; case NOT_EQUAL_TO -> JavaPrecedence.EQUALITY; @@ -747,6 +748,7 @@ public class JavaWriter implements AutoCloseable { case EQUAL_TO -> "=="; case LEFT_SHIFT -> "<<"; case LESS_THAN -> "<"; + case LOGICAL_AND -> "&&"; case NOT_EQUAL_TO -> "!="; case UNSIGNED_RIGHT_SHIFT -> ">>>"; }); @@ -767,6 +769,7 @@ public class JavaWriter implements AutoCloseable { case EQUAL_TO -> true; case LEFT_SHIFT -> true; case LESS_THAN -> true; + case LOGICAL_AND -> 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 e51ad40..34d9d4e 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 @@ -13,6 +13,7 @@ public enum JavaBinaryOperator { EQUAL_TO, LEFT_SHIFT, LESS_THAN, + LOGICAL_AND, 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 fb8b649..178ca0a 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 @@ -1334,6 +1334,19 @@ public class JavaWriterTests { } @Test + public void binaryOperationLogicalAnd() throws IOException { + var java = new JavaBinaryOperation( + JavaBinaryOperator.LOGICAL_AND, + new JavaRef(JavaIdentifier.of("x")), + new JavaRef(JavaIdentifier.of("y")) + ); + + var string = write(writer -> writer.writeTopLevelExpression(java)); + + assertThat(string, equalTo("x && y")); + } + + @Test public void binaryOperationNotEqualTo() throws IOException { var java = new JavaBinaryOperation( JavaBinaryOperator.NOT_EQUAL_TO, |
