From 8c7eb395fa36321604a2e70b928c099de28deb64 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 25 Oct 2015 18:33:49 +0000 Subject: Remove lombok from VariableReferenceNode --- .../couscous/ast/VariableReferenceNode.java | 48 ++++++++++++++++++++-- .../zwobble/couscous/tests/ValueObjectTests.java | 3 +- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java b/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java index a53d099..e95510f 100644 --- a/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java +++ b/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java @@ -3,16 +3,25 @@ package org.zwobble.couscous.ast; import org.zwobble.couscous.ast.visitors.AssignableExpressionNodeVisitor; import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper; -import lombok.Value; - -@Value(staticConstructor="reference") public class VariableReferenceNode implements AssignableExpressionNode { public static VariableReferenceNode reference(VariableNode variable) { return new VariableReferenceNode(variable.getDeclaration()); } - VariableDeclaration referent; + public static VariableReferenceNode reference(VariableDeclaration referent) { + return new VariableReferenceNode(referent); + } + + private final VariableDeclaration referent; + private VariableReferenceNode(VariableDeclaration referent) { + this.referent = referent; + } + + public VariableDeclaration getReferent() { + return referent; + } + @Override public T accept(ExpressionNodeMapper visitor) { return visitor.visit(this); @@ -31,4 +40,35 @@ public class VariableReferenceNode implements AssignableExpressionNode { public void accept(AssignableExpressionNodeVisitor mapper) { mapper.visit(this); } + + @Override + public String toString() { + return "VariableReferenceNode(referent=" + referent + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((referent == null) ? 0 : referent.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; + VariableReferenceNode other = (VariableReferenceNode) obj; + if (referent == null) { + if (other.referent != null) + return false; + } else if (!referent.equals(other.referent)) + 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 99b7f69..fd63ce0 100644 --- a/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java +++ b/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java @@ -72,7 +72,8 @@ public class ValueObjectTests { {TernaryConditionalNode.class}, {ThisReferenceNode.class}, {TypeName.class}, - {VariableDeclaration.class} + {VariableDeclaration.class}, + {VariableReferenceNode.class} }); } -- cgit v1.2.3