diff options
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 0c09511..341c7ce 100644 --- a/hobgoblin/src/output/lang/java/ast.hob +++ b/hobgoblin/src/output/lang/java/ast.hob @@ -245,6 +245,7 @@ enum JavaBinaryOperator { variant equalTo; variant leftShift; variant lessThan; + variant logicalAnd; 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 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, |
