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 792abfa..c691feb 100644 --- a/hobgoblin/src/output/lang/java/ast.hob +++ b/hobgoblin/src/output/lang/java/ast.hob @@ -250,6 +250,7 @@ enum JavaBinaryOperator { variant bitwiseAnd; variant bitwiseOr; variant equalTo; + variant multiply; variant leftShift; variant lessThan; variant logicalAnd; 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 4e4d8e5..b593364 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 @@ -724,6 +724,7 @@ public class JavaWriter implements AutoCloseable { case LOGICAL_AND -> JavaPrecedence.LOGICAL_AND; case LEFT_SHIFT -> JavaPrecedence.SHIFT; case LESS_THAN -> JavaPrecedence.RELATIONAL; + case MULTIPLY -> JavaPrecedence.MULTIPLICATIVE; case NOT_EQUAL_TO -> JavaPrecedence.EQUALITY; case UNSIGNED_RIGHT_SHIFT -> JavaPrecedence.SHIFT; }; @@ -760,6 +761,7 @@ public class JavaWriter implements AutoCloseable { case LEFT_SHIFT -> "<<"; case LESS_THAN -> "<"; case LOGICAL_AND -> "&&"; + case MULTIPLY -> "*"; case NOT_EQUAL_TO -> "!="; case UNSIGNED_RIGHT_SHIFT -> ">>>"; }); @@ -781,6 +783,7 @@ public class JavaWriter implements AutoCloseable { case LEFT_SHIFT -> true; case LESS_THAN -> true; case LOGICAL_AND -> true; + case MULTIPLY -> 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 34d9d4e..e9c2a54 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_AND, BITWISE_OR, EQUAL_TO, + MULTIPLY, LEFT_SHIFT, LESS_THAN, LOGICAL_AND, 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 80c145d..2889032 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 @@ -1388,6 +1388,19 @@ public class JavaWriterTests { } @Test + public void binaryOperationMultiply() throws IOException { + var java = new JavaBinaryOperation( + JavaBinaryOperator.MULTIPLY, + 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, |
