From 570741a4eede1ee75c6ce43f39d245db280b9e04 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 19 Jun 2026 18:57:52 +0100 Subject: Define Java AST enums in hobgoblin --- hobgoblin/src/output/lang/java/ast.hob | 12 +++++++++--- .../output/lang/java/ast/JavaConstructorDeclaration.java | 2 +- .../compiler/output/lang/java/ast/JavaFieldDeclaration.java | 2 +- .../output/lang/java/ast/JavaInterfaceDeclaration.java | 2 +- .../compiler/output/lang/java/ast/JavaInterfaceOpenness.java | 5 +++++ .../compiler/output/lang/java/ast/JavaMethodDeclaration.java | 2 +- .../compiler/output/lang/java/ast/JavaMethodKind.java | 5 +++++ .../compiler/output/lang/java/ast/JavaVisibility.java | 5 +++++ .../hobgoblin/compiler/output/lang/java/ast/Native.java | 12 ------------ 9 files changed, 28 insertions(+), 19 deletions(-) diff --git a/hobgoblin/src/output/lang/java/ast.hob b/hobgoblin/src/output/lang/java/ast.hob index 0c68ce4..83807cc 100644 --- a/hobgoblin/src/output/lang/java/ast.hob +++ b/hobgoblin/src/output/lang/java/ast.hob @@ -47,7 +47,9 @@ struct JavaInterfaceDeclaration { field docComment: DocComment; } -native JavaInterfaceOpenness { +enum JavaInterfaceOpenness { + variant open; + variant sealed; } struct JavaRecordComponent { @@ -100,7 +102,9 @@ struct JavaMethodDeclaration { // == Methods == -native JavaMethodKind { +enum JavaMethodKind { + variant static; + variant instance; } struct JavaParam { @@ -115,7 +119,9 @@ native JavaTypeRef { // == Visibility == -native JavaVisibility { +enum JavaVisibility { + variant public; + variant private; } // == Statements == diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java index b8898c7..c8d1d77 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java @@ -4,7 +4,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public record JavaConstructorDeclaration(String typeName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, java.util.List params, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder arbitrary() { - return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaVisibility(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.arbitrary().build()); + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility.PUBLIC, java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.arbitrary().build()); } public record Builder(String typeName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, java.util.List params, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java index 81f26ea..7dd114d 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java @@ -4,7 +4,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public record JavaFieldDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder arbitrary() { - return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaVisibility(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), ""); + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility.PUBLIC, org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), ""); } public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { 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 6e7012b..d3940bd 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 @@ -4,7 +4,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public record JavaInterfaceDeclaration(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness, java.util.List permitsTypes, java.util.List body, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder arbitrary() { - return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaInterfaceOpenness(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.Native.arbitraryDocComment()); + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness.OPEN, java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.Native.arbitraryDocComment()); } public record Builder(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness, java.util.List permitsTypes, java.util.List body, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceOpenness.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceOpenness.java index c6fa444..d84bf69 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceOpenness.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceOpenness.java @@ -1,6 +1,11 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public enum JavaInterfaceOpenness { OPEN, SEALED + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness body } 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 b6b5043..44f027c 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,7 +4,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public record JavaMethodDeclaration(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodKind kind, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef returnType, java.util.List params, java.util.Optional body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder arbitrary() { - return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaVisibility(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaMethodKind(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), java.util.List.of(), java.util.Optional.empty()); + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility.PUBLIC, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodKind.STATIC, org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), java.util.List.of(), java.util.Optional.empty()); } public record Builder(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodKind kind, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef returnType, java.util.List params, java.util.Optional body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { 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 index e63a942..200947e 100644 --- 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 @@ -1,6 +1,11 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public enum JavaMethodKind { STATIC, INSTANCE + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodKind body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodKind body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaVisibility.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaVisibility.java index f5c9915..984d365 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaVisibility.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaVisibility.java @@ -1,6 +1,11 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public enum JavaVisibility { PUBLIC, PRIVATE + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/Native.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/Native.java index 26ec60e..88f25b1 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/Native.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/Native.java @@ -4,19 +4,7 @@ public class Native { private Native() { } - public static JavaInterfaceOpenness arbitraryJavaInterfaceOpenness() { - return JavaInterfaceOpenness.OPEN; - } - - public static JavaMethodKind arbitraryJavaMethodKind() { - return JavaMethodKind.INSTANCE; - } - public static JavaTypeRef arbitraryJavaTypeRef() { return JavaTypeRef.INT; } - - public static JavaVisibility arbitraryJavaVisibility() { - return JavaVisibility.PRIVATE; - } } -- cgit v1.2.3