aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/AssignmentNode.java56
-rw-r--r--src/main/java/org/zwobble/couscous/values/StringValue.java4
2 files changed, 55 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/AssignmentNode.java b/src/main/java/org/zwobble/couscous/ast/AssignmentNode.java
index 483d4c2..ead783c 100644
--- a/src/main/java/org/zwobble/couscous/ast/AssignmentNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/AssignmentNode.java
@@ -4,9 +4,6 @@ import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper;
import static org.zwobble.couscous.ast.VariableReferenceNode.reference;
-import lombok.Value;
-
-@Value
public class AssignmentNode implements ExpressionNode {
public static StatementNode assignStatement(AssignableExpressionNode target, ExpressionNode value) {
return new ExpressionStatementNode(assign(target, value));
@@ -24,8 +21,21 @@ public class AssignmentNode implements ExpressionNode {
return new AssignmentNode(reference(target), value);
}
- AssignableExpressionNode target;
- ExpressionNode value;
+ private final AssignableExpressionNode target;
+ private final ExpressionNode value;
+
+ private AssignmentNode(AssignableExpressionNode target, ExpressionNode value) {
+ this.target = target;
+ this.value = value;
+ }
+
+ public AssignableExpressionNode getTarget() {
+ return target;
+ }
+
+ public ExpressionNode getValue() {
+ return value;
+ }
@Override
public <T> T accept(ExpressionNodeMapper<T> visitor) {
@@ -36,4 +46,40 @@ public class AssignmentNode implements ExpressionNode {
public TypeName getType() {
return value.getType();
}
+
+ @Override
+ public String toString() {
+ return "AssignmentNode(target=" + target + ", value=" + value + ")";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((target == null) ? 0 : target.hashCode());
+ result = prime * result + ((value == null) ? 0 : value.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;
+ AssignmentNode other = (AssignmentNode) obj;
+ if (target == null) {
+ if (other.target != null)
+ return false;
+ } else if (!target.equals(other.target))
+ return false;
+ if (value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
}
diff --git a/src/main/java/org/zwobble/couscous/values/StringValue.java b/src/main/java/org/zwobble/couscous/values/StringValue.java
index bd95eb8..b912fd3 100644
--- a/src/main/java/org/zwobble/couscous/values/StringValue.java
+++ b/src/main/java/org/zwobble/couscous/values/StringValue.java
@@ -6,6 +6,10 @@ import lombok.Value;
@Value
public class StringValue implements PrimitiveValue {
+ public static StringValue of(String value) {
+ return new StringValue(value);
+ }
+
public static final TypeName REF = TypeName.of("java.lang.String");
String value;