From 364bfd15a9a62724a80ce27f09ec5e80a05dfcb1 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 27 Jul 2026 20:28:30 +0100 Subject: Add multiplication 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 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 @@ -1387,6 +1387,19 @@ public class JavaWriterTests { assertThat(string, equalTo("x && y")); } + @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( -- cgit v1.2.3