summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-06-12 15:59:59 +0100
committerMichael Williamson <mike@zwobble.org>2026-06-12 16:05:11 +0100
commitaa725a130816f954b914e638381862d20d556af5 (patch)
treef0ba9bdb1aeecec5d50fd1c5ed9046552f49fe56 /src/main/java/org
parent466f13161c82289a17b761207da6bdfa4d78596c (diff)
Add visibility to Java methods
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java3
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java7
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java3
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaVisibility.java6
5 files changed, 28 insertions, 3 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java
index 46d68ef..4b26b08 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java
@@ -101,6 +101,7 @@ public class JavaPreciselyMatchersGenerator implements Generator {
List.of(
new JavaMethodDeclaration(
"match",
+ JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
JavaTypeRef.topLevel(List.of("org", "zwobble", "precisely"), "MatchResult"),
List.of(new JavaParam(JavaTypeRef.OBJECT, "actual")),
@@ -116,6 +117,7 @@ public class JavaPreciselyMatchersGenerator implements Generator {
),
new JavaMethodDeclaration(
"describe",
+ JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
JavaTypeRef.topLevel(List.of("org", "zwobble", "precisely"), "TextTree"),
List.of(),
@@ -131,6 +133,7 @@ public class JavaPreciselyMatchersGenerator implements Generator {
),
new JavaMethodDeclaration(
"toMatcher",
+ JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
JavaTypeRef.topLevelGeneric(List.of("org", "zwobble", "precisely"), "Matcher", List.of(JavaTypeRef.OBJECT)),
List.of(),
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 2b56e87..56f5659 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
@@ -6,14 +6,12 @@ import org.zwobble.hobgoblin.compiler.builtins.NativeTypes;
import org.zwobble.hobgoblin.compiler.config.OutputConfig;
import org.zwobble.hobgoblin.compiler.output.generators.Generator;
import org.zwobble.hobgoblin.compiler.output.generators.java.JavaGenerator;
-import org.zwobble.hobgoblin.compiler.output.lang.java.JavaWriter;
import org.zwobble.hobgoblin.compiler.output.lang.java.ast.*;
import org.zwobble.hobgoblin.compiler.parser.Parser;
import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo;
import org.zwobble.hobgoblin.compiler.types.*;
import org.zwobble.json5.reader.Json5ObjectReader;
-import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.*;
@@ -142,6 +140,7 @@ public class JavaTypesGenerator implements Generator {
List.of(
new JavaMethodDeclaration(
"build",
+ JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
generateTypeRef(sumDefinition.type(), context),
List.of(),
@@ -193,6 +192,7 @@ public class JavaTypesGenerator implements Generator {
List.of(
new JavaMethodDeclaration(
"arbitrary",
+ JavaVisibility.PUBLIC,
JavaMethodKind.STATIC,
builderJavaTypeRef,
List.of(),
@@ -224,6 +224,7 @@ public class JavaTypesGenerator implements Generator {
var body = new ArrayList<JavaClassBodyDeclaration>();
body.add(new JavaMethodDeclaration(
"build",
+ JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
generateTypeRef(structDefinition.type(), context),
List.of(),
@@ -240,6 +241,7 @@ public class JavaTypesGenerator implements Generator {
body.add(new JavaMethodDeclaration(
withMethodName,
+ JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
builderJavaTypeRef,
List.of(
@@ -258,6 +260,7 @@ public class JavaTypesGenerator implements Generator {
if (fieldBuilderTypeRef.isPresent()) {
body.add(new JavaMethodDeclaration(
withMethodName,
+ JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
builderJavaTypeRef,
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 d7a5325..ec4d70f 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
@@ -236,7 +236,9 @@ public class JavaWriter implements AutoCloseable {
}
void writeMethodDeclaration(JavaMethodDeclaration method) throws IOException {
- this.writer.write("public ");
+ writeVisibility(method.visibility());
+ this.writer.write(" ");
+
switch (method.kind()) {
case STATIC -> {
this.writer.write("static ");
@@ -244,6 +246,7 @@ public class JavaWriter implements AutoCloseable {
case INSTANCE -> {
}
}
+
writeTypeRef(method.returnType());
this.writer.write(" ");
this.writer.write(method.name());
@@ -386,6 +389,13 @@ public class JavaWriter implements AutoCloseable {
}
}
+ private void writeVisibility(JavaVisibility visibility) throws IOException {
+ this.writer.write(switch (visibility) {
+ case PUBLIC -> "public";
+ case PRIVATE -> "private";
+ });
+ }
+
private static <T> void writeWithSeparator(
Iterable<T> iterable,
WriteElement<T> writeElement,
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 454b41f..dc5954c 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
@@ -5,6 +5,7 @@ import java.util.Optional;
public record JavaMethodDeclaration(
String name,
+ JavaVisibility visibility,
JavaMethodKind kind,
JavaTypeRef returnType,
List<JavaParam> params,
@@ -12,6 +13,7 @@ public record JavaMethodDeclaration(
) implements JavaClassBodyDeclaration {
public JavaMethodDeclaration(
String name,
+ JavaVisibility visibility,
JavaMethodKind kind,
JavaTypeRef returnType,
List<JavaParam> params,
@@ -19,6 +21,7 @@ public record JavaMethodDeclaration(
) {
this(
name,
+ visibility,
kind,
returnType,
params,
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
new file mode 100644
index 0000000..f5c9915
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaVisibility.java
@@ -0,0 +1,6 @@
+package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
+
+public enum JavaVisibility {
+ PUBLIC,
+ PRIVATE
+}