From ec184c5b7baccdc77a3dab790709838256546d21 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 29 May 2026 16:58:06 +0100 Subject: Add body to Java interfaces --- .../compiler/output/generators/javatypes/JavaTypesGenerator.java | 1 + .../zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java | 7 +++++++ .../compiler/output/lang/java/ast/JavaInterfaceDeclaration.java | 1 + 3 files changed, 9 insertions(+) (limited to 'src/main/java/org') 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 0c4b8b8..8f6bd48 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 @@ -142,6 +142,7 @@ public class JavaTypesGenerator implements Generator { sumDefinition.variants().stream() .map(variant -> generateTypeRef(variant.type(), context)) .toList(), + List.of(), JavaCustomArea.type(generateTypeRef(sumDefinition.type(), context), "body"), sumDefinition.docComment() ) 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 3e1a266..3cf58ce 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 @@ -171,6 +171,13 @@ public class JavaWriter implements AutoCloseable { this.writer.write("{"); this.writer.indent(); + + for (var bodyDeclaration: interfaceDeclaration.body()) { + writer.newLine(); + writeClassBodyDeclaration(bodyDeclaration); + writer.newLine(); + } + this.writer.newLine(); this.writeCustomArea(interfaceDeclaration.customArea()); this.writer.dedent(); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java index c1c0fc5..d0bd0a1 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java @@ -7,6 +7,7 @@ import java.util.List; public record JavaInterfaceDeclaration( String name, List permitsTypes, + List body, JavaCustomArea customArea, DocComment docComment ) implements JavaTypeDeclaration { -- cgit v1.2.3