summaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-05-18 23:57:59 +0100
committerMichael Williamson <mike@zwobble.org>2026-05-18 23:57:59 +0100
commit1d80b1c242ef4188deac4921e6e67bd91ba6708f (patch)
tree0de1951c6e19ca05c69ed7f53c44d76e798282e4 /src/main/java/org/zwobble
parent4e8d3aa3f1ec9372e97098d0c247ef104edfb012 (diff)
Support static method declarations in Java
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java7
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodKind.java6
4 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java
index 92c60d4..0b49d87 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java
@@ -126,6 +126,7 @@ public class JavaTypesGenerator implements Generator {
List.of(
new JavaMethodDeclaration(
"build",
+ JavaMethodKind.INSTANCE,
generateTypeRef(structDefinition.type()),
List.of(),
new JavaBlock(List.of(
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 9707ab5..3711837 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
@@ -147,6 +147,13 @@ public class JavaWriter implements AutoCloseable {
void writeMethodDeclaration(JavaMethodDeclaration method) throws IOException {
this.writer.write("public ");
+ switch (method.kind()) {
+ case STATIC -> {
+ this.writer.write("static ");
+ }
+ case INSTANCE -> {
+ }
+ }
writeTypeRef(method.returnType());
this.writer.write(" ");
this.writer.write(method.name());
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 c1cc44d..f38625f 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
@@ -4,6 +4,7 @@ import java.util.List;
public record JavaMethodDeclaration(
String name,
+ JavaMethodKind kind,
JavaTypeRef returnType,
List<JavaParam> params,
JavaBlock body
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodKind.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodKind.java
new file mode 100644
index 0000000..e63a942
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodKind.java
@@ -0,0 +1,6 @@
+package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
+
+public enum JavaMethodKind {
+ STATIC,
+ INSTANCE
+}