diff options
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java | 48 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java | 2 |
2 files changed, 46 insertions, 4 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java b/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java index d1d521e..80c3273 100644 --- a/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java @@ -1,10 +1,19 @@ package org.zwobble.couscous.ast; -import lombok.Value; - -@Value(staticConstructor="formalArg") public class FormalArgumentNode implements VariableNode { - VariableDeclaration declaration; + public static FormalArgumentNode formalArg(VariableDeclaration declaration) { + return new FormalArgumentNode(declaration); + } + + private final VariableDeclaration declaration; + + private FormalArgumentNode(VariableDeclaration declaration) { + this.declaration = declaration; + } + + public VariableDeclaration getDeclaration() { + return declaration; + } public TypeName getType() { return declaration.getType(); @@ -13,4 +22,35 @@ public class FormalArgumentNode implements VariableNode { public String getName() { return declaration.getName(); } + + @Override + public String toString() { + return "FormalArgumentNode(declaration=" + declaration + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((declaration == null) ? 0 : declaration.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + FormalArgumentNode other = (FormalArgumentNode) obj; + if (declaration == null) { + if (other.declaration != null) + return false; + } else if (!declaration.equals(other.declaration)) + return false; + return true; + } } diff --git a/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java b/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java index 1fa7952..2837b47 100644 --- a/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java +++ b/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java @@ -22,6 +22,7 @@ import org.zwobble.couscous.ast.ExpressionNode; import org.zwobble.couscous.ast.ExpressionStatementNode; import org.zwobble.couscous.ast.FieldAccessNode; import org.zwobble.couscous.ast.FieldDeclarationNode; +import org.zwobble.couscous.ast.FormalArgumentNode; import org.zwobble.couscous.ast.LiteralNode; import org.zwobble.couscous.ast.VariableDeclaration; import org.zwobble.couscous.ast.VariableReferenceNode; @@ -55,6 +56,7 @@ public class ValueObjectTests { {ExpressionStatementNode.class}, {FieldAccessNode.class}, {FieldDeclarationNode.class}, + {FormalArgumentNode.class}, {VariableDeclaration.class} }); } |
