diff options
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java | 81 |
1 files changed, 75 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java b/src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java index a6ffad3..e9d3f6c 100644 --- a/src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java +++ b/src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java @@ -2,13 +2,38 @@ package org.zwobble.couscous.ast; import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper; -import lombok.Value; - -@Value public class TernaryConditionalNode implements ExpressionNode { - ExpressionNode condition; - ExpressionNode ifTrue; - ExpressionNode ifFalse; + public static TernaryConditionalNode ternaryConditional( + ExpressionNode condition, + ExpressionNode ifTrue, + ExpressionNode ifFalse) { + return new TernaryConditionalNode(condition, ifTrue, ifFalse); + } + + private final ExpressionNode condition; + private final ExpressionNode ifTrue; + private final ExpressionNode ifFalse; + + private TernaryConditionalNode( + ExpressionNode condition, + ExpressionNode ifTrue, + ExpressionNode ifFalse) { + this.condition = condition; + this.ifTrue = ifTrue; + this.ifFalse = ifFalse; + } + + public ExpressionNode getCondition() { + return condition; + } + + public ExpressionNode getIfTrue() { + return ifTrue; + } + + public ExpressionNode getIfFalse() { + return ifFalse; + } @Override public <T> T accept(ExpressionNodeMapper<T> visitor) { @@ -19,4 +44,48 @@ public class TernaryConditionalNode implements ExpressionNode { public TypeName getType() { return ifTrue.getType(); } + + @Override + public String toString() { + return "TernaryConditionalNode(condition=" + condition + ", ifTrue=" + + ifTrue + ", ifFalse=" + ifFalse + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((condition == null) ? 0 : condition.hashCode()); + result = prime * result + ((ifFalse == null) ? 0 : ifFalse.hashCode()); + result = prime * result + ((ifTrue == null) ? 0 : ifTrue.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; + TernaryConditionalNode other = (TernaryConditionalNode) obj; + if (condition == null) { + if (other.condition != null) + return false; + } else if (!condition.equals(other.condition)) + return false; + if (ifFalse == null) { + if (other.ifFalse != null) + return false; + } else if (!ifFalse.equals(other.ifFalse)) + return false; + if (ifTrue == null) { + if (other.ifTrue != null) + return false; + } else if (!ifTrue.equals(other.ifTrue)) + return false; + return true; + } } |
