summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGenerator.java50
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java25
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaNamespaceConfig.java4
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java88
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java55
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java56
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java6
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumConstant.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaIdentifier.java28
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java14
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java13
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java34
26 files changed, 351 insertions, 192 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGenerator.java
index e68acaa..ae9a81d 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGenerator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGenerator.java
@@ -2,15 +2,18 @@ package org.zwobble.hobgoblin.compiler.output.generators.java;
import org.zwobble.hobgoblin.compiler.output.lang.java.JavaWriter;
import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit;
+import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier;
import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeArg;
import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef;
import org.zwobble.hobgoblin.compiler.types.*;
+import org.zwobble.hobgoblin.compiler.util.Casing;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
public class JavaGenerator {
private final JavaGeneratorConfig config;
@@ -25,22 +28,24 @@ public class JavaGenerator {
) throws IOException {
for (var javaCompilationUnit : javaCompilationUnits) {
var javaCompilationUnitPath = sourceRootDirectory
- .resolve(String.join(File.separator, javaCompilationUnit.packageName()))
- .resolve(javaCompilationUnit.typeDeclaration().name() + ".java");
+ .resolve(javaCompilationUnit.packageName().stream().map(JavaIdentifier::value).collect(Collectors.joining(File.separator)))
+ .resolve(javaCompilationUnit.typeDeclaration().name().value() + ".java");
try (var writer = JavaWriter.file(javaCompilationUnitPath)) {
writer.writeCompilationUnit(javaCompilationUnit);
}
}
}
- public List<String> namespaceToJavaPackageParts(NamespaceName namespaceName) {
+ public List<JavaIdentifier> namespaceToJavaPackageParts(NamespaceName namespaceName) {
var ancestorNamespaceName = namespaceName;
var remainingNamespaceNameParts = new ArrayList<String>();
while (!ancestorNamespaceName.isRoot()) {
var namespaceConfig = this.config.namespaceConfig(ancestorNamespaceName);
if (namespaceConfig.isPresent()) {
var packageParts = new ArrayList<>(namespaceConfig.get().packageName());
- packageParts.addAll(remainingNamespaceNameParts.reversed());
+ for (var namespaceNamePart : remainingNamespaceNameParts.reversed()) {
+ packageParts.add(generatePackageNamePart(namespaceNamePart));
+ }
return packageParts;
}
remainingNamespaceNameParts.add(ancestorNamespaceName.parts().getLast());
@@ -48,10 +53,28 @@ public class JavaGenerator {
}
var packageParts = new ArrayList<>(this.config.packageName());
- packageParts.addAll(namespaceName.parts());
+ for (var namespaceNamePart : namespaceName.parts()) {
+ packageParts.add(generatePackageNamePart(namespaceNamePart));
+ }
return packageParts;
}
+ public JavaIdentifier generateEnumConstantName(String name) {
+ return new JavaIdentifier(Casing.lowerCamelCaseToUpperCase(name));
+ }
+
+ public JavaIdentifier generateFieldName(String name) {
+ return new JavaIdentifier(name);
+ }
+
+ public JavaIdentifier generatePackageNamePart(String part) {
+ return JavaIdentifier.of(part);
+ }
+
+ public JavaIdentifier generateTypeName(String name) {
+ return new JavaIdentifier(name);
+ }
+
public JavaTypeRef generateTypeRef(Type type) {
return this.generateTypeRef(type, false);
}
@@ -76,7 +99,10 @@ public class JavaGenerator {
}
case EnumType enumType ->
- JavaTypeRef.topLevel(namespaceToJavaPackageParts(enumType.namespaceName()), enumType.name());
+ JavaTypeRef.topLevel(
+ namespaceToJavaPackageParts(enumType.namespaceName()),
+ generateTypeName(enumType.name())
+ );
case SimpleNativeType simpleNativeType -> {
var nativeTypeConfig = this.config.nativeTypeConfig(simpleNativeType);
@@ -90,16 +116,22 @@ public class JavaGenerator {
} else {
yield JavaTypeRef.topLevel(
namespaceToJavaPackageParts(simpleNativeType.namespaceName()),
- simpleNativeType.name()
+ generateTypeName(simpleNativeType.name())
);
}
}
case StructType structType ->
- JavaTypeRef.topLevel(namespaceToJavaPackageParts(structType.namespaceName()), structType.name());
+ JavaTypeRef.topLevel(
+ namespaceToJavaPackageParts(structType.namespaceName()),
+ generateTypeName(structType.name())
+ );
case SumType sumType ->
- JavaTypeRef.topLevel(namespaceToJavaPackageParts(sumType.namespaceName()), sumType.name());
+ JavaTypeRef.topLevel(
+ namespaceToJavaPackageParts(sumType.namespaceName()),
+ generateTypeName(sumType.name())
+ );
case TypeLevelValueType typeLevelValueType ->
throw new UnsupportedOperationException("TODO");
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java
index 9be9eed..7eb2c32 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java
@@ -1,10 +1,7 @@
package org.zwobble.hobgoblin.compiler.output.generators.java;
import org.zwobble.hobgoblin.compiler.builtins.NativeTypes;
-import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral;
-import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall;
-import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral;
-import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef;
+import org.zwobble.hobgoblin.compiler.output.lang.java.ast.*;
import org.zwobble.hobgoblin.compiler.parser.Parser;
import org.zwobble.hobgoblin.compiler.types.NamespaceName;
import org.zwobble.hobgoblin.compiler.types.SimpleNativeType;
@@ -13,7 +10,7 @@ import org.zwobble.json5.reader.Json5ObjectReader;
import java.util.*;
public record JavaGeneratorConfig(
- List<String> packageName,
+ List<JavaIdentifier> packageName,
Map<NamespaceName, JavaNamespaceConfig> namespaceConfigs,
Map<SimpleNativeType, JavaNativeTypeConfig> nativeTypeConfigs
) {
@@ -23,7 +20,7 @@ public record JavaGeneratorConfig(
var nativeTypeConfigs = parseNativeTypeConfigs(output);
return new JavaGeneratorConfig(
- Arrays.asList(packageName.split("\\.")),
+ parseJavaPackageName(packageName),
namespaceConfigs,
nativeTypeConfigs
);
@@ -37,7 +34,7 @@ public record JavaGeneratorConfig(
var hobgoblinNamespace = Parser.parseNamespaceName(hobgoblinNamespaceString);
var javaPackageString = namespaceJson.getString("java").value();
- var javaPackage = Arrays.asList(javaPackageString.split("\\."));
+ var javaPackage = parseJavaPackageName(javaPackageString);
namespaceConfigs.put(hobgoblinNamespace, new JavaNamespaceConfig(javaPackage));
}
@@ -58,7 +55,9 @@ public record JavaGeneratorConfig(
);
var javaTypeString = nativeTypeJson.getString("java").value();
- var javaTypeParts = Arrays.asList(javaTypeString.split("\\."));
+ var javaTypeParts = Arrays.stream(javaTypeString.split("\\."))
+ .map(JavaIdentifier::of)
+ .toList();
var javaTypeRef = JavaTypeRef.topLevel(javaTypeParts.subList(0, javaTypeParts.size() - 1), javaTypeParts.getLast());
nativeTypeConfigs.put(hobgoblinType, new JavaNativeTypeConfig(javaTypeRef, Optional.empty(), Optional.empty()));
@@ -68,12 +67,18 @@ public record JavaGeneratorConfig(
return nativeTypeConfigs;
}
+ private static List<JavaIdentifier> parseJavaPackageName(String packageName) {
+ return Arrays.stream(packageName.split("\\."))
+ .map(JavaIdentifier::of)
+ .toList();
+ }
+
private static final Map<SimpleNativeType, JavaNativeTypeConfig> DEFAULT_NATIVE_TYPE_CONFIGS = Map.ofEntries(
Map.entry(NativeTypes.INT_32, JavaNativeTypeConfig.primitive(JavaTypeRef.INT, JavaTypeRef.INT_BOXED, new JavaIntegerLiteral(0))),
Map.entry(NativeTypes.INT_64, JavaNativeTypeConfig.primitive(JavaTypeRef.LONG, JavaTypeRef.LONG_BOXED, new JavaIntegerLiteral(0))),
Map.entry(NativeTypes.STRING, JavaNativeTypeConfig.of(JavaTypeRef.STRING, new JavaStringLiteral(""))),
- Map.entry(NativeTypes.LIST_INNER, JavaNativeTypeConfig.of(JavaTypeRef.LIST, new JavaStaticMethodCall(JavaTypeRef.LIST, "of", List.of()))),
- Map.entry(NativeTypes.OPTION_INNER, JavaNativeTypeConfig.of(JavaTypeRef.OPTIONAL, new JavaStaticMethodCall(JavaTypeRef.OPTIONAL, "empty", List.of())))
+ Map.entry(NativeTypes.LIST_INNER, JavaNativeTypeConfig.of(JavaTypeRef.LIST, new JavaStaticMethodCall(JavaTypeRef.LIST, JavaIdentifier.of("of"), List.of()))),
+ Map.entry(NativeTypes.OPTION_INNER, JavaNativeTypeConfig.of(JavaTypeRef.OPTIONAL, new JavaStaticMethodCall(JavaTypeRef.OPTIONAL, JavaIdentifier.of("empty"), List.of())))
);
public Optional<JavaNativeTypeConfig> nativeTypeConfig(SimpleNativeType type) {
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaNamespaceConfig.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaNamespaceConfig.java
index 3c313cd..4e6d8d8 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaNamespaceConfig.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaNamespaceConfig.java
@@ -1,6 +1,8 @@
package org.zwobble.hobgoblin.compiler.output.generators.java;
+import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier;
+
import java.util.List;
-public record JavaNamespaceConfig(List<String> packageName) {
+public record JavaNamespaceConfig(List<JavaIdentifier> packageName) {
}
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 8cd8b40..b8a634c 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
@@ -85,22 +85,20 @@ public class JavaPreciselyMatchersGenerator implements Generator {
TypedStructDefinitionNode structDefinition,
Context context
) {
- var matcherTypeName = structDefinition.name() + "Matcher";
+ var matcherTypeName = this.javaGenerator.generateTypeName(structDefinition.name() + "Matcher");
var structType = structDefinition.type();
- var javaStructTypeRef = JavaTypeRef.topLevel(
- namespaceToJavaPackageParts(structType.namespaceName()),
- structDefinition.name()
- );
+ var javaStructTypeRef = this.javaGenerator.generateTypeRef(structType);
var javaMatcherTypeRef = JavaTypeRef.topLevel(
namespaceToJavaPackageParts(structType.namespaceName()),
matcherTypeName
);
+ var submatchersIdentifier = JavaIdentifier.of("submatchers");
var methods = new ArrayList<JavaClassBodyDeclaration>(List.of(
new JavaMethodDeclaration(
- "is" + lowerCamelCaseToUpperCamelCase(structDefinition.name()),
+ this.javaGenerator.generateFieldName("is" + lowerCamelCaseToUpperCamelCase(structDefinition.name())),
JavaVisibility.PUBLIC,
JavaMethodKind.STATIC,
javaMatcherTypeRef,
@@ -109,7 +107,7 @@ public class JavaPreciselyMatchersGenerator implements Generator {
new JavaReturn(new JavaNewExpression(
javaMatcherTypeRef,
List.of(
- new JavaStaticMethodCall(JavaTypeRef.LIST, "of", List.of())
+ new JavaStaticMethodCall(JavaTypeRef.LIST, JavaIdentifier.of("of"), List.of())
)
))
))
@@ -117,7 +115,7 @@ public class JavaPreciselyMatchersGenerator implements Generator {
new JavaFieldDeclaration(
JavaVisibility.PRIVATE,
JavaTypeRef.list(matcherRef(JavaTypeArg.superType(javaStructTypeRef))),
- "submatchers"
+ submatchersIdentifier
),
new JavaConstructorDeclaration(
matcherTypeName,
@@ -125,52 +123,52 @@ public class JavaPreciselyMatchersGenerator implements Generator {
List.of(
new JavaParam(
JavaTypeRef.list(matcherRef(JavaTypeArg.superType(javaStructTypeRef))),
- "submatchers"
+ submatchersIdentifier
)
),
new JavaBlock(List.of(
new JavaExpressionStatement(
new JavaAssignment(
- new JavaFieldAccess(new JavaRef("this"), "submatchers"),
- new JavaRef("submatchers")
+ new JavaFieldAccess(JavaRef.THIS, submatchersIdentifier),
+ new JavaRef(submatchersIdentifier)
)
)
))
),
new JavaMethodDeclaration(
- "match",
+ JavaIdentifier.of("match"),
JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
MATCH_RESULT_REF,
- List.of(new JavaParam(JavaTypeRef.OBJECT, "actual")),
+ List.of(new JavaParam(JavaTypeRef.OBJECT, JavaIdentifier.of("actual"))),
new JavaBlock(List.of(
new JavaReturn(
new JavaMethodCall(
- new JavaMethodCall(new JavaRef("this"), "toMatcher", List.of()),
- "match",
- List.of(new JavaRef("actual"))
+ new JavaMethodCall(JavaRef.THIS, JavaIdentifier.of("toMatcher"), List.of()),
+ JavaIdentifier.of("match"),
+ List.of(new JavaRef(JavaIdentifier.of("actual")))
)
)
))
),
new JavaMethodDeclaration(
- "describe",
+ JavaIdentifier.of("describe"),
JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
- JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, "TextTree"),
+ TEXT_TREE_REF,
List.of(),
new JavaBlock(List.of(
new JavaReturn(
new JavaMethodCall(
- new JavaMethodCall(new JavaRef("this"), "toMatcher", List.of()),
- "describe",
+ new JavaMethodCall(JavaRef.THIS, JavaIdentifier.of("toMatcher"), List.of()),
+ JavaIdentifier.of("describe"),
List.of()
)
)
))
),
new JavaMethodDeclaration(
- "toMatcher",
+ JavaIdentifier.of("toMatcher"),
JavaVisibility.PRIVATE,
JavaMethodKind.INSTANCE,
matcherRef(JavaTypeRef.OBJECT),
@@ -178,10 +176,11 @@ public class JavaPreciselyMatchersGenerator implements Generator {
new JavaBlock(List.of(
new JavaReturn(new JavaStaticMethodCall(
MATCHERS_REF,
- "instanceOf",
+ JavaIdentifier.of("instanceOf"),
List.of(
- new JavaStaticFieldAccess(javaStructTypeRef, "class"),
- new JavaFieldAccess(new JavaRef("this"), "submatchers")
+ // TODO: replace with class accessor
+ new JavaStaticFieldAccess(javaStructTypeRef, JavaIdentifier.of("class")),
+ new JavaFieldAccess(JavaRef.THIS, submatchersIdentifier)
)
))
))
@@ -191,13 +190,15 @@ public class JavaPreciselyMatchersGenerator implements Generator {
for (var field : structDefinition.fields()) {
var fieldType = field.type().value();
var javaFieldTypeRef = this.javaGenerator.generateReferenceTypeRef(fieldType);
+ var javaFieldName = this.javaGenerator.generateFieldName(field.name());
+
methods.add(new JavaMethodDeclaration(
- "with" + lowerCamelCaseToUpperCamelCase(field.name()),
+ this.javaGenerator.generateFieldName("with" + lowerCamelCaseToUpperCamelCase(field.name())),
JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
javaMatcherTypeRef,
List.of(
- new JavaParam(matcherRef(JavaTypeArg.superType(javaFieldTypeRef)), field.name())
+ new JavaParam(matcherRef(JavaTypeArg.superType(javaFieldTypeRef)), javaFieldName)
),
new JavaBlock(List.of(
// TODO: avoid using Java streams here
@@ -207,31 +208,31 @@ public class JavaPreciselyMatchersGenerator implements Generator {
new JavaMethodCall(
new JavaStaticMethodCall(
JavaTypeRef.STREAM,
- "concat",
+ JavaIdentifier.of("concat"),
List.of(
new JavaMethodCall(
- new JavaFieldAccess(new JavaRef("this"), "submatchers"),
- "stream",
+ new JavaFieldAccess(JavaRef.THIS, submatchersIdentifier),
+ JavaIdentifier.of("stream"),
List.of()
),
new JavaStaticMethodCall(
JavaTypeRef.STREAM,
- "of",
+ JavaIdentifier.of("of"),
List.of(
new JavaStaticMethodCall(
MATCHERS_REF,
- "has",
+ JavaIdentifier.of("has"),
List.of(
new JavaStringLiteral(field.name()),
- new JavaMethodRef(javaStructTypeRef, field.name()),
- new JavaRef(field.name())
+ new JavaMethodRef(javaStructTypeRef, javaFieldName),
+ new JavaRef(javaFieldName)
)
)
)
)
)
),
- "toList",
+ JavaIdentifier.of("toList"),
List.of()
)
)
@@ -242,20 +243,14 @@ public class JavaPreciselyMatchersGenerator implements Generator {
return new JavaClassDeclaration(
matcherTypeName,
- List.of(
- JavaTypeRef.topLevelGeneric(
- PRECISELY_PACKAGE_NAME,
- "Matcher",
- List.of(JavaTypeArg.invariant(JavaTypeRef.OBJECT))
- )
- ),
+ List.of(matcherRef(JavaTypeArg.invariant(JavaTypeRef.OBJECT))),
methods,
JavaCustomArea.forType(javaMatcherTypeRef, "body"),
DocComment.EMPTY
);
}
- private List<String> namespaceToJavaPackageParts(NamespaceName namespaceName) {
+ private List<JavaIdentifier> namespaceToJavaPackageParts(NamespaceName namespaceName) {
return this.javaGenerator.namespaceToJavaPackageParts(namespaceName);
}
@@ -280,9 +275,10 @@ public class JavaPreciselyMatchersGenerator implements Generator {
}
- private static final List<String> PRECISELY_PACKAGE_NAME = List.of("org", "zwobble", "precisely");
- private static final JavaTypeRef MATCH_RESULT_REF = JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, "MatchResult");
- private static final JavaTypeRef MATCHERS_REF = JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, "Matchers");
+ private static final List<JavaIdentifier> PRECISELY_PACKAGE_NAME = List.of(JavaIdentifier.of("org"), JavaIdentifier.of("zwobble"), JavaIdentifier.of("precisely"));
+ private static final JavaTypeRef MATCH_RESULT_REF = JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, JavaIdentifier.of("MatchResult"));
+ private static final JavaTypeRef MATCHERS_REF = JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, JavaIdentifier.of("Matchers"));
+ private static final JavaTypeRef TEXT_TREE_REF = JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, JavaIdentifier.of("TextTree"));
private static JavaTypeRef matcherRef(JavaTypeRef arg) {
return matcherRef(JavaTypeArg.invariant(arg));
@@ -291,7 +287,7 @@ public class JavaPreciselyMatchersGenerator implements Generator {
private static JavaTypeRef matcherRef(JavaTypeArg arg) {
return JavaTypeRef.topLevelGeneric(
PRECISELY_PACKAGE_NAME,
- "Matcher",
+ JavaIdentifier.of("Matcher"),
List.of(arg)
);
}
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 2456f5c..c85ff5d 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
@@ -10,7 +10,6 @@ import org.zwobble.hobgoblin.compiler.output.generators.java.JavaNativeTypeConfi
import org.zwobble.hobgoblin.compiler.output.lang.java.ast.*;
import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo;
import org.zwobble.hobgoblin.compiler.types.*;
-import org.zwobble.hobgoblin.compiler.util.Casing;
import org.zwobble.json5.reader.Json5ObjectReader;
import java.io.IOException;
@@ -21,7 +20,9 @@ import static org.zwobble.hobgoblin.compiler.util.Casing.lowerCamelCaseToUpperCa
public class JavaTypesGenerator implements Generator {
public static final String NAME = "java-types";
- private static final String BUILDER_TYPE_NAME = "Builder";
+ private static final JavaIdentifier ARBITRARY_METHOD_NAME = new JavaIdentifier("arbitrary");
+ private static final JavaIdentifier BUILDER_TYPE_NAME = new JavaIdentifier("Builder");
+ private static final JavaIdentifier BUILD_METHOD_NAME = new JavaIdentifier("build");
public static OutputConfig parseOutputConfig(Path projectRoot, Json5ObjectReader output) {
return () -> {
@@ -106,7 +107,7 @@ public class JavaTypesGenerator implements Generator {
Context context
) {
return new JavaEnumDeclaration(
- enumDefinition.name(),
+ generateTypeName(enumDefinition.name()),
enumDefinition.variants().stream()
.map(variant -> new JavaEnumConstant(generateEnumConstantName(variant.name())))
.toList(),
@@ -122,7 +123,7 @@ public class JavaTypesGenerator implements Generator {
var components = structDefinition.fields().stream()
.map(field -> new JavaRecordComponent(
generateTypeRef(field.type(), context),
- field.name()
+ generateFieldName(field.name())
))
.toList();
@@ -137,12 +138,12 @@ public class JavaTypesGenerator implements Generator {
.toList();
return new JavaRecordDeclaration(
- structDefinition.name(),
+ generateTypeName(structDefinition.name()),
components,
implementsTypes,
List.of(
new JavaMethodDeclaration(
- "arbitrary",
+ ARBITRARY_METHOD_NAME,
JavaVisibility.PUBLIC,
JavaMethodKind.STATIC,
builderJavaTypeRef,
@@ -174,7 +175,7 @@ public class JavaTypesGenerator implements Generator {
var body = new ArrayList<JavaClassBodyDeclaration>();
body.add(new JavaMethodDeclaration(
- "build",
+ BUILD_METHOD_NAME,
JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
generateTypeRef(structDefinition.type(), context),
@@ -188,7 +189,7 @@ public class JavaTypesGenerator implements Generator {
));
for (var field : structDefinition.fields()) {
- var withMethodName = "with" + lowerCamelCaseToUpperCamelCase(field.name());
+ var withMethodName = generateFieldName("with" + lowerCamelCaseToUpperCamelCase(field.name()));
body.add(new JavaMethodDeclaration(
withMethodName,
@@ -196,7 +197,7 @@ public class JavaTypesGenerator implements Generator {
JavaMethodKind.INSTANCE,
builderJavaTypeRef,
List.of(
- new JavaParam(generateTypeRef(field.type(), context), field.name())
+ new JavaParam(generateTypeRef(field.type(), context), generateFieldName(field.name()))
),
new JavaBlock(List.of(
new JavaReturn(new JavaNewExpression(
@@ -215,14 +216,14 @@ public class JavaTypesGenerator implements Generator {
JavaMethodKind.INSTANCE,
builderJavaTypeRef,
List.of(
- new JavaParam(fieldBuilderTypeRef.get(), field.name())
+ new JavaParam(fieldBuilderTypeRef.get(), generateFieldName(field.name()))
),
new JavaBlock(List.of(
new JavaReturn(new JavaNewExpression(
builderJavaTypeRef,
components.stream().<JavaExpression>map(argComponent -> {
- if (argComponent.name().equals(field.name())) {
- return new JavaMethodCall(new JavaRef(field.name()), "build", List.of());
+ if (argComponent.name().equals(generateFieldName(field.name()))) {
+ return new JavaMethodCall(new JavaRef(generateFieldName(field.name())), BUILD_METHOD_NAME, List.of());
} else {
return new JavaRef(argComponent.name());
}
@@ -252,7 +253,7 @@ public class JavaTypesGenerator implements Generator {
for (var field : sumDefinition.fields()) {
body.add(new JavaMethodDeclaration(
- field.name(),
+ generateFieldName(field.name()),
JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
generateTypeRef(field.type().value(), context),
@@ -262,7 +263,7 @@ public class JavaTypesGenerator implements Generator {
}
return new JavaInterfaceDeclaration(
- sumDefinition.name(),
+ generateTypeName(sumDefinition.name()),
JavaInterfaceOpenness.SEALED,
sumDefinition.variants().stream()
.map(variant -> generateTypeRef(variant.type(), context))
@@ -283,7 +284,7 @@ public class JavaTypesGenerator implements Generator {
List.of(),
List.of(
new JavaMethodDeclaration(
- "build",
+ BUILD_METHOD_NAME,
JavaVisibility.PUBLIC,
JavaMethodKind.INSTANCE,
generateTypeRef(sumDefinition.type(), context),
@@ -296,7 +297,7 @@ public class JavaTypesGenerator implements Generator {
);
}
- private List<String> namespaceToJavaPackageParts(NamespaceName namespaceName) {
+ private List<JavaIdentifier> namespaceToJavaPackageParts(NamespaceName namespaceName) {
return this.javaGenerator.namespaceToJavaPackageParts(namespaceName);
}
@@ -330,7 +331,7 @@ public class JavaTypesGenerator implements Generator {
private JavaTypeRef generateBuilderTypeRef(NamespaceName namespaceName, String name) {
var javaPackage = namespaceToJavaPackageParts(namespaceName);
- return JavaTypeRef.inner(javaPackage, name, BUILDER_TYPE_NAME);
+ return JavaTypeRef.inner(javaPackage, generateTypeName(name), BUILDER_TYPE_NAME);
}
private JavaExpression arbitraryValue(
@@ -358,10 +359,10 @@ public class JavaTypesGenerator implements Generator {
.flatMap(nativeTypeConfig -> nativeTypeConfig.arbitraryValue())
.orElseGet(() -> {
var javaPackageName = namespaceToJavaPackageParts(simpleNativeType.namespaceName());
- var javaClassName = "HobgoblinNative" + lowerCamelCaseToUpperCamelCase(javaPackageName.getLast());
+ var javaClassName = JavaIdentifier.of("HobgoblinNative" + lowerCamelCaseToUpperCamelCase(javaPackageName.getLast().value()));
return new JavaStaticMethodCall(
JavaTypeRef.topLevel(javaPackageName, javaClassName),
- "arbitrary" + simpleNativeType.name(),
+ generateFieldName("arbitrary" + simpleNativeType.name()),
List.of()
);
});
@@ -369,8 +370,8 @@ public class JavaTypesGenerator implements Generator {
case StructType structType -> {
yield new JavaMethodCall(
- new JavaStaticMethodCall(generateTypeRef(structType, context), "arbitrary", List.of()),
- "build",
+ new JavaStaticMethodCall(generateTypeRef(structType, context), ARBITRARY_METHOD_NAME, List.of()),
+ BUILD_METHOD_NAME,
List.of()
);
}
@@ -439,8 +440,16 @@ public class JavaTypesGenerator implements Generator {
};
}
- private static String generateEnumConstantName(String name) {
- return Casing.lowerCamelCaseToUpperCase(name);
+ private JavaIdentifier generateEnumConstantName(String name) {
+ return this.javaGenerator.generateEnumConstantName(name);
+ }
+
+ private JavaIdentifier generateFieldName(String name) {
+ return this.javaGenerator.generateFieldName(name);
+ }
+
+ private JavaIdentifier generateTypeName(String name) {
+ return this.javaGenerator.generateTypeName(name);
}
private Optional<JavaNativeTypeConfig> nativeTypeConfig(SimpleNativeType type) {
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 0e5fd92..5814998 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
@@ -46,7 +46,7 @@ public class JavaWriter implements AutoCloseable {
public void writeCompilationUnit(JavaCompilationUnit compilationUnit) throws IOException {
this.writer.writeHeader();
this.writer.write("package ");
- this.writer.write(String.join(".", compilationUnit.packageName()));
+ this.writePackageName(compilationUnit.packageName());
this.writer.write(";");
this.writer.newLine();
this.writer.newLine();
@@ -107,7 +107,7 @@ public class JavaWriter implements AutoCloseable {
writeDocComment(classDeclaration.docComment());
this.writer.write("public class ");
- this.writer.write(classDeclaration.name());
+ this.writeIdentifier(classDeclaration.name());
this.writer.write(" ");
this.writeImplements(classDeclaration.implementsTypes());
@@ -151,7 +151,7 @@ public class JavaWriter implements AutoCloseable {
void writeConstructorDeclaration(JavaConstructorDeclaration constructor) throws IOException {
writeVisibility(constructor.visibility());
this.writer.write(" ");
- this.writer.write(constructor.typeName());
+ this.writeIdentifier(constructor.typeName());
this.writer.write("(");
writeWithSeparator(
@@ -159,7 +159,7 @@ public class JavaWriter implements AutoCloseable {
param -> {
writeTypeRef(param.type());
writer.write(" ");
- writer.write(param.name());
+ this.writeIdentifier(param.name());
},
() -> writer.write(", ")
);
@@ -188,7 +188,7 @@ public class JavaWriter implements AutoCloseable {
private void writeEnumDeclaration(JavaEnumDeclaration enumDeclaration) throws IOException {
this.writeDocComment(enumDeclaration.docComment());
this.writer.write("public enum ");
- this.writer.write(enumDeclaration.name());
+ this.writeIdentifier(enumDeclaration.name());
this.writer.write(" {");
this.writer.indent();
this.writer.newLine();
@@ -196,7 +196,7 @@ public class JavaWriter implements AutoCloseable {
if (!enumDeclaration.constants().isEmpty()) {
writeWithSeparator(
enumDeclaration.constants(),
- constant -> this.writer.write(constant.name()),
+ constant -> this.writeIdentifier(constant.name()),
() -> {
this.writer.write(",");
this.writer.newLine();
@@ -267,7 +267,7 @@ public class JavaWriter implements AutoCloseable {
private void writeFieldAccess(JavaFieldAccess fieldAccess) throws IOException {
this.writeExpression(fieldAccess.receiver());
this.writer.write(".");
- this.writer.write(fieldAccess.fieldName());
+ this.writeIdentifier(fieldAccess.fieldName());
}
private void writeFieldDeclaration(JavaFieldDeclaration fieldDeclaration) throws IOException {
@@ -275,10 +275,18 @@ public class JavaWriter implements AutoCloseable {
this.writer.write(" final ");
this.writeTypeRef(fieldDeclaration.type());
this.writer.write(" ");
- this.writer.write(fieldDeclaration.name());
+ this.writeIdentifier(fieldDeclaration.name());
this.writer.write(";");
}
+ private void writeIdentifier(JavaIdentifier identifier) throws IOException {
+ this.writer.write(identifier.value());
+ }
+
+ private static void writeIdentifier(JavaIdentifier identifier, WriteString writer) throws IOException {
+ writer.write(identifier.value());
+ }
+
private void writeImplements(List<JavaTypeRef> implementsTypes) throws IOException {
if (!implementsTypes.isEmpty()) {
this.writer.write("implements ");
@@ -307,7 +315,7 @@ public class JavaWriter implements AutoCloseable {
}
}
this.writer.write("interface ");
- this.writer.write(interfaceDeclaration.name());
+ this.writeIdentifier(interfaceDeclaration.name());
this.writer.write(" ");
if (!interfaceDeclaration.permitsTypes().isEmpty()) {
@@ -338,7 +346,7 @@ public class JavaWriter implements AutoCloseable {
private void writeMethodCall(JavaMethodCall call) throws IOException {
this.writeExpression(call.receiver());
this.writer.write(".");
- this.writer.write(call.methodName());
+ this.writeIdentifier(call.methodName());
this.writer.write("(");
this.writeWithSeparator(
call.args(),
@@ -362,7 +370,7 @@ public class JavaWriter implements AutoCloseable {
writeTypeRef(method.returnType());
this.writer.write(" ");
- this.writer.write(method.name());
+ this.writeIdentifier(method.name());
this.writer.write("(");
writeWithSeparator(
@@ -370,7 +378,7 @@ public class JavaWriter implements AutoCloseable {
param -> {
writeTypeRef(param.type());
writer.write(" ");
- writer.write(param.name());
+ this.writeIdentifier(param.name());
},
() -> writer.write(", ")
);
@@ -395,7 +403,7 @@ public class JavaWriter implements AutoCloseable {
private void writeMethodRef(JavaMethodRef methodRef) throws IOException {
this.writeTypeRef(methodRef.type());
this.writer.write("::");
- this.writer.write(methodRef.methodName());
+ this.writeIdentifier(methodRef.methodName());
}
private void writeNewExpression(JavaNewExpression newExpression) throws IOException {
@@ -414,11 +422,19 @@ public class JavaWriter implements AutoCloseable {
this.writer.write("null");
}
+ private void writePackageName(List<JavaIdentifier> packageName) throws IOException {
+ writeWithSeparator(
+ packageName,
+ this::writeIdentifier,
+ () -> this.writer.write(".")
+ );
+ }
+
private void writeRecordDeclaration(JavaRecordDeclaration recordDeclaration) throws IOException {
writeDocComment(recordDeclaration.docComment());
this.writer.write("public record ");
- this.writer.write(recordDeclaration.name());
+ this.writeIdentifier(recordDeclaration.name());
this.writer.write("(");
writeWithSeparator(
@@ -426,7 +442,7 @@ public class JavaWriter implements AutoCloseable {
component -> {
writeTypeRef(component.type());
writer.write(" ");
- writer.write(component.name());
+ this.writeIdentifier(component.name());
},
() -> writer.write(", ")
);
@@ -452,7 +468,7 @@ public class JavaWriter implements AutoCloseable {
}
private void writeRef(JavaRef ref) throws IOException {
- this.writer.write(ref.name());
+ this.writeIdentifier(ref.name());
}
private void writeReturnStatement(JavaReturn returnStatement) throws IOException {
@@ -464,13 +480,13 @@ public class JavaWriter implements AutoCloseable {
private void writeStaticFieldAccess(JavaStaticFieldAccess staticFieldAccess) throws IOException {
this.writeTypeRef(staticFieldAccess.type());
this.writer.write(".");
- this.writer.write(staticFieldAccess.fieldName());
+ this.writeIdentifier(staticFieldAccess.fieldName());
}
private void writeStaticMethodCall(JavaStaticMethodCall call) throws IOException {
this.writeTypeRef(call.type());
this.writer.write(".");
- this.writer.write(call.methodName());
+ this.writeIdentifier(call.methodName());
this.writer.write("(");
this.writeWithSeparator(
call.args(),
@@ -505,13 +521,13 @@ public class JavaWriter implements AutoCloseable {
private static void writeTypeRef(JavaTypeRef type, WriteString writer) throws IOException {
for (var part : type.packageName()) {
- writer.write(part);
+ writeIdentifier(part, writer);
writer.write(".");
}
writeWithSeparator(
type.typeNames(),
- writer::write,
+ typeName -> writeIdentifier(typeName, writer),
() -> writer.write(".")
);
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java
index 434d536..940742e 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java
@@ -2,20 +2,24 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaClassDeclaration(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 record JavaClassDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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.JavaClassDeclaration.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder("", java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
}
- public record Builder(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration(name, implementsTypes, body, customArea, docComment);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name.build(), implementsTypes, body, customArea, docComment);
+ }
+
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withImplementsTypes(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment);
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java
index 252380c..42a58d0 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java
@@ -2,17 +2,17 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaCompilationUnit(java.util.List<String> packageName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) {
+public record JavaCompilationUnit(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier> packageName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder arbitrary() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.arbitrary().build());
}
- public record Builder(java.util.List<String> packageName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) {
+ public record Builder(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier> packageName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit(packageName, typeDeclaration);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withPackageName(java.util.List<String> packageName) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withPackageName(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier> packageName) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(packageName, typeDeclaration);
}
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 c8d1d77..5f474b6 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
@@ -2,20 +2,24 @@
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<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration {
+public record JavaConstructorDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier typeName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> 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.JavaVisibility.PUBLIC, 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.JavaIdentifier.arbitrary().build(), 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<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier typeName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration(typeName, visibility, params, body);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withTypeName(String typeName) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withTypeName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier typeName) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder(typeName, visibility, params, body);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withTypeName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder typeName) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder(typeName.build(), visibility, params, body);
+ }
+
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withVisibility(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder(typeName, visibility, params, body);
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumConstant.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumConstant.java
index 6e7e775..1a6bb83 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumConstant.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumConstant.java
@@ -2,20 +2,24 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaEnumConstant(String name) {
+public record JavaEnumConstant(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder("");
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build());
}
- public record Builder(String name) {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant(name);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder(name);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder(name.build());
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder body
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java
index c46ae99..58d98ca 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java
@@ -2,20 +2,24 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaEnumDeclaration(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants, 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 {
+public record JavaEnumDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants, 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 {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder("", java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
}
- public record Builder(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants, 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 {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants, 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 {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration(name, constants, customArea, docComment);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea, docComment);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name.build(), constants, customArea, docComment);
+ }
+
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withConstants(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea, docComment);
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java
index 3ae942a..6ad4e18 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java
@@ -2,12 +2,12 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaFieldAccess(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, String fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
+public record JavaFieldAccess(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build(), "");
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, String fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess(receiver, fieldName);
}
@@ -20,10 +20,14 @@ public record JavaFieldAccess(org.zwobble.hobgoblin.compiler.output.lang.java.as
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(receiver.build(), fieldName);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder withFieldName(String fieldName) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder withFieldName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier fieldName) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(receiver, fieldName);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder withFieldName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder fieldName) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(receiver, fieldName.build());
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder body
}
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 61a0d27..b87df63 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
@@ -2,12 +2,12 @@
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 record JavaFieldDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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.JavaVisibility.PUBLIC, org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.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.HobgoblinNativeAst.arbitraryJavaTypeRef(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build());
}
- 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 {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration(visibility, type, name);
}
@@ -20,10 +20,14 @@ public record JavaFieldDeclaration(org.zwobble.hobgoblin.compiler.output.lang.ja
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(visibility, type, name);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(visibility, type, name);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(visibility, type, name.build());
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder body
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaIdentifier.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaIdentifier.java
new file mode 100644
index 0000000..b7364f3
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaIdentifier.java
@@ -0,0 +1,28 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
+
+public record JavaIdentifier(String value) {
+ public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder arbitrary() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder("");
+ }
+
+ public record Builder(String value) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier build() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier(value);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder withValue(String value) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder(value);
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier body
+ public static JavaIdentifier of(String value) {
+ return new JavaIdentifier(value);
+ }
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier body
+}
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 cae6525..aefc444 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
@@ -2,20 +2,24 @@
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<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> permitsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 record JavaInterfaceDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> permitsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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.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.HobgoblinNativeAst.arbitraryDocComment());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), 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.HobgoblinNativeAst.arbitraryDocComment());
}
- public record Builder(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> permitsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> permitsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration(name, openness, permitsTypes, body, customArea, docComment);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name.build(), openness, permitsTypes, body, customArea, docComment);
+ }
+
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withOpenness(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment);
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java
index 24841c3..4eb5443 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java
@@ -2,12 +2,12 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaMethodCall(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, String methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
+public record JavaMethodCall(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build(), "", java.util.List.of());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), java.util.List.of());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, String methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall(receiver, methodName, args);
}
@@ -20,10 +20,14 @@ public record JavaMethodCall(org.zwobble.hobgoblin.compiler.output.lang.java.ast
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(receiver.build(), methodName, args);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder withMethodName(String methodName) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder withMethodName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(receiver, methodName, args);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder withMethodName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder methodName) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(receiver, methodName.build(), args);
+ }
+
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder withArgs(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(receiver, methodName, args);
}
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 6665e5e..d4aa351 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
@@ -2,20 +2,24 @@
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<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock> body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration {
+public record JavaMethodDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, java.util.Optional<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.JavaMethodDeclaration.Builder arbitrary() {
- 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.HobgoblinNativeAst.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.JavaIdentifier.arbitrary().build(), 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.HobgoblinNativeAst.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<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock> body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock> body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration(name, visibility, kind, returnType, params, body);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name, visibility, kind, returnType, params, body);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name.build(), visibility, kind, returnType, params, body);
+ }
+
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withVisibility(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name, visibility, kind, returnType, params, body);
}
@@ -42,7 +46,7 @@ public record JavaMethodDeclaration(String name, org.zwobble.hobgoblin.compiler.
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration body
public JavaMethodDeclaration(
- String name,
+ JavaIdentifier name,
JavaVisibility visibility,
JavaMethodKind kind,
JavaTypeRef returnType,
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java
index 98aa682..fb58886 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java
@@ -2,12 +2,12 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaMethodRef(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String methodName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
+public record JavaMethodRef(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), "");
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String methodName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef(type, methodName);
}
@@ -16,10 +16,14 @@ public record JavaMethodRef(org.zwobble.hobgoblin.compiler.output.lang.java.ast.
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder(type, methodName);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder withMethodName(String methodName) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder withMethodName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder(type, methodName);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder withMethodName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder methodName) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder(type, methodName.build());
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder body
}
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
index 15dc074..e7805f4 100644
--- 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
@@ -2,12 +2,12 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaParam(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) {
+public record JavaParam(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), "");
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam(type, name);
}
@@ -16,10 +16,14 @@ public record JavaParam(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Java
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder(type, name);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder(type, name);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder(type, name.build());
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder body
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java
index d3c2fc2..4de5399 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java
@@ -2,12 +2,12 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaRecordComponent(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) {
+public record JavaRecordComponent(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), "");
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent(type, name);
}
@@ -16,10 +16,14 @@ public record JavaRecordComponent(org.zwobble.hobgoblin.compiler.output.lang.jav
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder(type, name);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder(type, name);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder(type, name.build());
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder body
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java
index 0a11410..b7eb1f7 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java
@@ -2,20 +2,24 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaRecordDeclaration(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent> components, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 record JavaRecordDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent> components, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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.JavaRecordDeclaration.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder("", java.util.List.of(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), java.util.List.of(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
}
- public record Builder(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent> components, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent> components, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> 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 {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration(name, components, implementsTypes, body, customArea, docComment);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name.build(), components, implementsTypes, body, customArea, docComment);
+ }
+
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withComponents(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent> components) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment);
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java
index 36c1005..f230e50 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java
@@ -2,24 +2,29 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaRef(String name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
+public record JavaRef(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder("");
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build());
}
- public record Builder(String name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef(name);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder withName(String name) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder(name);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder(name.build());
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder body
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef body
+ public static final JavaRef THIS = new JavaRef(JavaIdentifier.of("this"));
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef body
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java
index d7e1e6f..799e0d1 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java
@@ -2,12 +2,12 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaStaticFieldAccess(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
+public record JavaStaticFieldAccess(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), "");
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess(type, fieldName);
}
@@ -16,10 +16,14 @@ public record JavaStaticFieldAccess(org.zwobble.hobgoblin.compiler.output.lang.j
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder(type, fieldName);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder withFieldName(String fieldName) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder withFieldName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier fieldName) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder(type, fieldName);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder withFieldName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder fieldName) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder(type, fieldName.build());
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder body
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java
index e033efe..5abf733 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java
@@ -2,12 +2,12 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public record JavaStaticMethodCall(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
+public record JavaStaticMethodCall(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), "", java.util.List.of());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), java.util.List.of());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall build() {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall(type, methodName, args);
}
@@ -16,10 +16,14 @@ public record JavaStaticMethodCall(org.zwobble.hobgoblin.compiler.output.lang.ja
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(type, methodName, args);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder withMethodName(String methodName) {
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder withMethodName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier methodName) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(type, methodName, args);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder withMethodName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder methodName) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(type, methodName.build(), args);
+ }
+
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder withArgs(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) {
return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(type, methodName, args);
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java
index 93e3474..67628bb 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java
@@ -10,7 +10,7 @@ public sealed interface JavaTypeDeclaration permits org.zwobble.hobgoblin.compil
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder body
}
- public String name();
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name();
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea();
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 2738098..39edb73 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,43 +3,49 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
import java.util.Arrays;
import java.util.List;
-public record JavaTypeRef(List<String> packageName, List<String> typeNames, List<JavaTypeArg> args) {
+public record JavaTypeRef(List<JavaIdentifier> packageName, List<JavaIdentifier> typeNames, List<JavaTypeArg> args) {
private static JavaTypeRef primitive(String name) {
- return new JavaTypeRef(List.of(), List.of(name), List.of());
+ return new JavaTypeRef(List.of(), List.of(new JavaIdentifier(name)), List.of());
}
- public static JavaTypeRef topLevel(List<String> packageName, String name) {
+ public static JavaTypeRef topLevel(List<JavaIdentifier> packageName, JavaIdentifier name) {
return new JavaTypeRef(packageName, List.of(name), List.of());
}
- public static JavaTypeRef inner(List<String> packageName, String... typeNames) {
+ public static JavaTypeRef inner(List<JavaIdentifier> packageName, JavaIdentifier... typeNames) {
return new JavaTypeRef(packageName, Arrays.asList(typeNames), List.of());
}
public static JavaTypeRef topLevelGeneric(
- List<String> packageName,
- String name,
+ List<JavaIdentifier> packageName,
+ JavaIdentifier name,
List<JavaTypeArg> args
) {
return new JavaTypeRef(packageName, List.of(name), args);
}
public static JavaTypeRef generic(
- List<String> packageName,
- List<String> typeNames,
+ List<JavaIdentifier> packageName,
+ List<JavaIdentifier> typeNames,
List<JavaTypeArg> args
) {
return new JavaTypeRef(packageName, typeNames, args);
}
+ private static class JavaPackages {
+ private static final List<JavaIdentifier> JAVA_LANG = List.of(JavaIdentifier.of("java"), JavaIdentifier.of("lang"));
+ private static final List<JavaIdentifier> JAVA_UTIL = List.of(JavaIdentifier.of("java"), JavaIdentifier.of("util"));
+ private static final List<JavaIdentifier> JAVA_UTIL_STREAM = List.of(JavaIdentifier.of("java"), JavaIdentifier.of("util"), JavaIdentifier.of("stream"));
+ }
+
public static final JavaTypeRef INT = primitive("int");
- public static final JavaTypeRef INT_BOXED = topLevel(List.of("java", "lang"), "Integer");
+ public static final JavaTypeRef INT_BOXED = topLevel(JavaPackages.JAVA_LANG, JavaIdentifier.of("Integer"));
public static final JavaTypeRef LONG = primitive("long");
- public static final JavaTypeRef LONG_BOXED = topLevel(List.of("java", "lang"), "Long");
+ public static final JavaTypeRef LONG_BOXED = topLevel(JavaPackages.JAVA_LANG, JavaIdentifier.of("Long"));
public static final JavaTypeRef STRING = primitive("String");
public static final JavaTypeRef VOID = primitive("void");
- public static final JavaTypeRef LIST = topLevel(List.of("java", "util"), "List");
+ public static final JavaTypeRef LIST = topLevel(JavaPackages.JAVA_UTIL, JavaIdentifier.of("List"));
public static JavaTypeRef list(JavaTypeRef elementType) {
return new JavaTypeRef(
@@ -49,9 +55,9 @@ public record JavaTypeRef(List<String> packageName, List<String> typeNames, List
);
}
- public static final JavaTypeRef OBJECT = topLevel(List.of("java", "lang"), "Object");
+ public static final JavaTypeRef OBJECT = topLevel(JavaPackages.JAVA_LANG, JavaIdentifier.of("Object"));
- public static final JavaTypeRef OPTIONAL = topLevel(List.of("java", "util"), "Optional");
+ public static final JavaTypeRef OPTIONAL = topLevel(JavaPackages.JAVA_UTIL, JavaIdentifier.of("Optional"));
- public static final JavaTypeRef STREAM = topLevel(List.of("java", "util", "stream"), "Stream");
+ public static final JavaTypeRef STREAM = topLevel(JavaPackages.JAVA_UTIL_STREAM, JavaIdentifier.of("Stream"));
}