summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java16
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java5
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java7
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java2
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());
}