diff options
Diffstat (limited to 'src/main/java')
3 files changed, 26 insertions, 1 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 1252777..87b1aa6 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 @@ -108,6 +108,10 @@ public class JavaWriter implements AutoCloseable { case JavaIntegerLiteral integerLiteral -> { writeIntegerLiteral(integerLiteral); } + + case JavaNewExpression newExpression -> { + writeNewExpression(newExpression); + } } } @@ -167,6 +171,18 @@ public class JavaWriter implements AutoCloseable { this.writer.write("}"); } + private void writeNewExpression(JavaNewExpression newExpression) throws IOException { + this.writer.write("new "); + writeTypeRef(newExpression.type()); + this.writer.write("("); + writeWithSeparator( + newExpression.args(), + this::writeExpression, + () -> this.writer.write(", ") + ); + this.writer.write(")"); + } + private void writeRecordDeclaration(JavaRecordDeclaration recordDeclaration) throws IOException { writeDocComment(recordDeclaration.docComment()); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java index 0aa202c..e90fe4e 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java @@ -1,4 +1,4 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public sealed interface JavaExpression permits JavaIntegerLiteral { +public sealed interface JavaExpression permits JavaIntegerLiteral, JavaNewExpression { } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNewExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNewExpression.java new file mode 100644 index 0000000..b6852bf --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNewExpression.java @@ -0,0 +1,9 @@ +package org.zwobble.hobgoblin.compiler.output.lang.java.ast; + +import java.util.List; + +public record JavaNewExpression( + JavaTypeRef type, + List<JavaExpression> args +) implements JavaExpression { +} |
