aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-25 18:33:49 +0000
committerMichael Williamson <mike@zwobble.org>2015-10-25 18:33:49 +0000
commit8c7eb395fa36321604a2e70b928c099de28deb64 (patch)
tree222ce4759ac50084fbb7da24d2f45fd81f695ad1
parent237265a40f6a581eeefaec66cbfac3b7a807cd32 (diff)
Remove lombok from VariableReferenceNode
-rw-r--r--src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java48
-rw-r--r--src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java3
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> T accept(ExpressionNodeMapper<T> 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}
});
}