From 1352b8d81c5bc7a36f32908ad9c15fcbf081e57e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 6 Oct 2015 16:44:09 +0100 Subject: Simplify builder usage --- src/main/java/org/zwobble/couscous/ast/ClassNode.java | 2 -- src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java | 8 ++++++++ src/main/java/org/zwobble/couscous/ast/MethodNode.java | 4 ---- src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java | 10 ++++------ 4 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNode.java b/src/main/java/org/zwobble/couscous/ast/ClassNode.java index 280b772..674e347 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNode.java @@ -4,7 +4,6 @@ import java.util.List; import org.zwobble.couscous.ast.visitors.NodeVisitor; -import lombok.Singular; import lombok.Value; @Value @@ -15,7 +14,6 @@ public class ClassNode implements Node { TypeName name; ConstructorNode constructor; - @Singular List methods; public String getSimpleName() { diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java index cd324b9..65d2fda 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java @@ -77,10 +77,12 @@ public class ClassNodeBuilder { public class MethodBuilder { private final String methodName; + private final ImmutableList.Builder arguments; private final ImmutableList.Builder statements; public MethodBuilder(String name) { this.methodName = name; + this.arguments = ImmutableList.builder(); this.statements = ImmutableList.builder(); } @@ -88,6 +90,11 @@ public class ClassNodeBuilder { return ThisReferenceNode.thisReference(name); } + public MethodBuilder argument(FormalArgumentNode argument) { + arguments.add(argument); + return this; + } + public MethodBuilder statement(StatementNode statement) { statements.add(statement); return this; @@ -96,6 +103,7 @@ public class ClassNodeBuilder { public MethodNode build() { return MethodNode.builder() .name(methodName) + .arguments(arguments.build()) .body(statements.build()) .build(); } diff --git a/src/main/java/org/zwobble/couscous/ast/MethodNode.java b/src/main/java/org/zwobble/couscous/ast/MethodNode.java index 700e9ec..0bdad59 100644 --- a/src/main/java/org/zwobble/couscous/ast/MethodNode.java +++ b/src/main/java/org/zwobble/couscous/ast/MethodNode.java @@ -15,10 +15,6 @@ public class MethodNode implements CallableNode { return builder().isStatic(true).name(name); } - public static MethodNodeBuilder method(String name) { - return builder().isStatic(false).name(name); - } - boolean isStatic; String name; @Singular diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java index 765be9c..c9b267d 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java @@ -92,9 +92,8 @@ public abstract class BackendEvalTests { @Test public void canCallInstanceMethodWithNoArgumentsOnUserDefinedClass() { val classNode = ClassNode.builder("com.example.Example") - .method(MethodNode.method("main") - .statement(new ReturnNode(literal(42))) - .build()) + .method("main", method -> method + .statement(new ReturnNode(literal(42)))) .build(); val result = evalExpression(asList(classNode), methodCall(constructorCall(classNode.getName(), asList()), "main", asList(), IntegerValue.REF)); @@ -105,10 +104,9 @@ public abstract class BackendEvalTests { public void canCallInstanceMethodWithArgumentsOnUserDefinedClass() { val argument = formalArg(var(42, "x", IntegerValue.REF)); val classNode = ClassNode.builder("com.example.Example") - .method(MethodNode.method("main") + .method("main", method -> method .argument(argument) - .statement(new ReturnNode(reference(argument))) - .build()) + .statement(new ReturnNode(reference(argument)))) .build(); val result = evalExpression( -- cgit v1.2.3