summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java180
1 files changed, 91 insertions, 89 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java
index 1a404aa..38cd938 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
@@ -96,104 +96,106 @@ public class JavaPreciselyMatchersGenerator implements Generator {
matcherTypeName
);
- return new JavaClassDeclaration(
- matcherTypeName,
- List.of(
- JavaTypeRef.topLevelGeneric(
- PRECISELY_PACKAGE_NAME,
- "Matcher",
- List.of(JavaTypeArg.invariant(JavaTypeRef.OBJECT))
- )
- ),
- List.of(
- new JavaMethodDeclaration(
- "is" + lowerCamelCaseToUpperCamelCase(structDefinition.name()),
- JavaVisibility.PUBLIC,
- JavaMethodKind.STATIC,
- javaMatcherTypeRef,
- List.of(),
- new JavaBlock(List.of(
- new JavaReturn(new JavaNewExpression(
- javaMatcherTypeRef,
- List.of(
- new JavaStaticMethodCall(JavaTypeRef.LIST, "of", List.of())
- )
- ))
+ var methods = new ArrayList<JavaClassBodyDeclaration>(List.of(
+ new JavaMethodDeclaration(
+ "is" + lowerCamelCaseToUpperCamelCase(structDefinition.name()),
+ JavaVisibility.PUBLIC,
+ JavaMethodKind.STATIC,
+ javaMatcherTypeRef,
+ List.of(),
+ new JavaBlock(List.of(
+ new JavaReturn(new JavaNewExpression(
+ javaMatcherTypeRef,
+ List.of(
+ new JavaStaticMethodCall(JavaTypeRef.LIST, "of", List.of())
+ )
))
+ ))
+ ),
+ new JavaFieldDeclaration(
+ JavaVisibility.PRIVATE,
+ JavaTypeRef.list(matcherRef(JavaTypeArg.superType(javaStructTypeRef))),
+ "submatchers"
+ ),
+ new JavaConstructorDeclaration(
+ matcherTypeName,
+ JavaVisibility.PRIVATE,
+ List.of(
+ new JavaParam(
+ JavaTypeRef.list(matcherRef(JavaTypeArg.superType(javaStructTypeRef))),
+ "submatchers"
+ )
),
- new JavaFieldDeclaration(
- JavaVisibility.PRIVATE,
- JavaTypeRef.list(matcherRef(JavaTypeArg.superType(javaStructTypeRef))),
- "submatchers"
- ),
- new JavaConstructorDeclaration(
- matcherTypeName,
- JavaVisibility.PRIVATE,
- List.of(
- new JavaParam(
- JavaTypeRef.list(matcherRef(JavaTypeArg.superType(javaStructTypeRef))),
- "submatchers"
+ new JavaBlock(List.of(
+ new JavaExpressionStatement(
+ new JavaAssignment(
+ new JavaFieldAccess(new JavaRef("this"), "submatchers"),
+ new JavaRef("submatchers")
)
- ),
- new JavaBlock(List.of(
- new JavaExpressionStatement(
- new JavaAssignment(
- new JavaFieldAccess(new JavaRef("this"), "submatchers"),
- new JavaRef("submatchers")
- )
+ )
+ ))
+ ),
+ new JavaMethodDeclaration(
+ "match",
+ JavaVisibility.PUBLIC,
+ JavaMethodKind.INSTANCE,
+ MATCH_RESULT_REF,
+ List.of(new JavaParam(JavaTypeRef.OBJECT, "actual")),
+ new JavaBlock(List.of(
+ new JavaReturn(
+ new JavaMethodCall(
+ new JavaMethodCall(new JavaRef("this"), "toMatcher", List.of()),
+ "match",
+ List.of(new JavaRef("actual"))
)
- ))
- ),
- new JavaMethodDeclaration(
- "match",
- JavaVisibility.PUBLIC,
- JavaMethodKind.INSTANCE,
- MATCH_RESULT_REF,
- List.of(new JavaParam(JavaTypeRef.OBJECT, "actual")),
- new JavaBlock(List.of(
- new JavaReturn(
- new JavaMethodCall(
- new JavaMethodCall(new JavaRef("this"), "toMatcher", List.of()),
- "match",
- List.of(new JavaRef("actual"))
- )
+ )
+ ))
+ ),
+ new JavaMethodDeclaration(
+ "describe",
+ JavaVisibility.PUBLIC,
+ JavaMethodKind.INSTANCE,
+ JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, "TextTree"),
+ List.of(),
+ new JavaBlock(List.of(
+ new JavaReturn(
+ new JavaMethodCall(
+ new JavaMethodCall(new JavaRef("this"), "toMatcher", List.of()),
+ "describe",
+ List.of()
)
- ))
- ),
- new JavaMethodDeclaration(
- "describe",
- JavaVisibility.PUBLIC,
- JavaMethodKind.INSTANCE,
- JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, "TextTree"),
- List.of(),
- new JavaBlock(List.of(
- new JavaReturn(
- new JavaMethodCall(
- new JavaMethodCall(new JavaRef("this"), "toMatcher", List.of()),
- "describe",
- List.of()
- )
+ )
+ ))
+ ),
+ new JavaMethodDeclaration(
+ "toMatcher",
+ JavaVisibility.PRIVATE,
+ JavaMethodKind.INSTANCE,
+ matcherRef(JavaTypeRef.OBJECT),
+ List.of(),
+ new JavaBlock(List.of(
+ new JavaReturn(new JavaStaticMethodCall(
+ JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, "Matchers"),
+ "instanceOf",
+ List.of(
+ new JavaStaticFieldAccess(javaStructTypeRef, "class"),
+ new JavaFieldAccess(new JavaRef("this"), "submatchers")
)
))
- ),
- new JavaMethodDeclaration(
- "toMatcher",
- JavaVisibility.PRIVATE,
- JavaMethodKind.INSTANCE,
- matcherRef(JavaTypeRef.OBJECT),
- List.of(),
- new JavaBlock(List.of(
- new JavaReturn(new JavaStaticMethodCall(
- JavaTypeRef.topLevel(PRECISELY_PACKAGE_NAME, "Matchers"),
- "instanceOf",
- List.of(
- new JavaStaticFieldAccess(javaStructTypeRef, "class"),
- new JavaFieldAccess(new JavaRef("this"), "submatchers")
- )
- ))
- ))
+ ))
+ )
+ ));
+
+ return new JavaClassDeclaration(
+ matcherTypeName,
+ List.of(
+ JavaTypeRef.topLevelGeneric(
+ PRECISELY_PACKAGE_NAME,
+ "Matcher",
+ List.of(JavaTypeArg.invariant(JavaTypeRef.OBJECT))
)
),
+ methods,
JavaCustomArea.type(javaMatcherTypeRef, "body"),
DocComment.EMPTY
);