From c7b7150782766a1ef2929e8a61b7f78f08c92b04 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 25 Oct 2015 18:10:28 +0000 Subject: Remove lombok from FieldAccessNode --- .../org/zwobble/couscous/ast/FieldAccessNode.java | 81 ++++++++++++++++++++-- 1 file changed, 75 insertions(+), 6 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java b/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java index 8de1323..f3c92f9 100644 --- a/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java @@ -3,13 +3,38 @@ package org.zwobble.couscous.ast; import org.zwobble.couscous.ast.visitors.AssignableExpressionNodeVisitor; import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper; -import lombok.Value; - -@Value(staticConstructor="fieldAccess") public class FieldAccessNode implements AssignableExpressionNode { - ExpressionNode left; - String fieldName; - TypeName type; + public static FieldAccessNode fieldAccess( + ExpressionNode left, + String fieldName, + TypeName type) { + return new FieldAccessNode(left, fieldName, type); + } + + private final ExpressionNode left; + private final String fieldName; + private final TypeName type; + + public FieldAccessNode( + ExpressionNode left, + String fieldName, + TypeName type) { + this.left = left; + this.fieldName = fieldName; + this.type = type; + } + + public ExpressionNode getLeft() { + return left; + } + + public String getFieldName() { + return fieldName; + } + + public TypeName getType() { + return type; + } @Override public T accept(ExpressionNodeMapper visitor) { @@ -20,4 +45,48 @@ public class FieldAccessNode implements AssignableExpressionNode { public void accept(AssignableExpressionNodeVisitor mapper) { mapper.visit(this); } + + @Override + public String toString() { + return "FieldAccessNode(left=" + left + ", fieldName=" + fieldName + + ", type=" + type + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((fieldName == null) ? 0 : fieldName.hashCode()); + result = prime * result + ((left == null) ? 0 : left.hashCode()); + result = prime * result + ((type == null) ? 0 : type.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; + FieldAccessNode other = (FieldAccessNode) obj; + if (fieldName == null) { + if (other.fieldName != null) + return false; + } else if (!fieldName.equals(other.fieldName)) + return false; + if (left == null) { + if (other.left != null) + return false; + } else if (!left.equals(other.left)) + return false; + if (type == null) { + if (other.type != null) + return false; + } else if (!type.equals(other.type)) + return false; + return true; + } } -- cgit v1.2.3