aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java81
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java2
2 files changed, 76 insertions, 7 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;
+ }
}
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
index 2bb82ef..12c9b6e 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
@@ -283,7 +283,7 @@ public class JavaReader {
}
private static ExpressionNode readConditionalExpression(ConditionalExpression expression) {
- return new TernaryConditionalNode(
+ return TernaryConditionalNode.ternaryConditional(
readExpression(expression.getExpression()),
readExpression(expression.getThenExpression()),
readExpression(expression.getElseExpression()));