diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-05-17 10:14:51 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-05-17 10:14:51 +0100 |
| commit | 36a11cc4637ab14718ddf73921a1c0658c9056d0 (patch) | |
| tree | f9b63309e4418af82186d507b3f1adf31e06cac1 /src/main/java/org/zwobble | |
| parent | 679f041d110605e7797795cd42ae6914193b9d88 (diff) | |
Add params to Java method node
Diffstat (limited to 'src/main/java/org/zwobble')
4 files changed, 27 insertions, 3 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 9d74d7d..1a5fe29 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 @@ -83,12 +83,24 @@ public class JavaWriter implements AutoCloseable { } } - private void writeMethodDeclaration(JavaMethodDeclaration method) throws IOException { + void writeMethodDeclaration(JavaMethodDeclaration method) throws IOException { this.writer.write("public "); writeTypeRef(method.returnType()); this.writer.write(" "); this.writer.write(method.name()); - this.writer.write("() {"); + this.writer.write("("); + + writeWithSeparator( + method.params(), + param -> { + writeTypeRef(param.type()); + writer.write(" "); + writer.write(param.name()); + }, + () -> writer.write(", ") + ); + + this.writer.write(") {"); this.writer.newLine(); this.writer.write("}"); } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java index 84179f6..fb29f5c 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java @@ -1,7 +1,10 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; +import java.util.List; + public record JavaMethodDeclaration( String name, - JavaTypeRef returnType + JavaTypeRef returnType, + List<JavaParam> params ) implements JavaClassBodyDeclaration { } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java new file mode 100644 index 0000000..49a7f5f --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java @@ -0,0 +1,7 @@ +package org.zwobble.hobgoblin.compiler.output.lang.java.ast; + +public record JavaParam( + JavaTypeRef type, + String name +) { +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java index 3654acc..9020791 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java @@ -3,5 +3,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; import java.util.List; public record JavaTypeRef(List<String> packageName, String name, List<JavaTypeRef> args) { + public static final JavaTypeRef INT = new JavaTypeRef(List.of(), "int", List.of()); + public static final JavaTypeRef LONG = new JavaTypeRef(List.of(), "long", List.of()); public static final JavaTypeRef VOID = new JavaTypeRef(List.of(), "void", List.of()); } |
