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/LocalVariableDeclarationNode.java67
1 files changed, 62 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java b/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java
index 61fd9a3..bb272fc 100644
--- a/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java
@@ -4,9 +4,6 @@ import org.zwobble.couscous.ast.visitors.StatementNodeMapper;
import static org.zwobble.couscous.ast.VariableDeclaration.var;
-import lombok.Value;
-
-@Value(staticConstructor="localVariableDeclaration")
public class LocalVariableDeclarationNode implements VariableNode, StatementNode {
public static LocalVariableDeclarationNode localVariableDeclaration(
String id,
@@ -16,9 +13,30 @@ public class LocalVariableDeclarationNode implements VariableNode, StatementNode
return localVariableDeclaration(var(id, name, type), initialValue);
}
- VariableDeclaration declaration;
- ExpressionNode initialValue;
+ public static LocalVariableDeclarationNode localVariableDeclaration(
+ VariableDeclaration declaration,
+ ExpressionNode initialValue) {
+ return new LocalVariableDeclarationNode(declaration, initialValue);
+ }
+
+ private final VariableDeclaration declaration;
+ private final ExpressionNode initialValue;
+ private LocalVariableDeclarationNode(
+ VariableDeclaration declaration,
+ ExpressionNode initialValue) {
+ this.declaration = declaration;
+ this.initialValue = initialValue;
+ }
+
+ public VariableDeclaration getDeclaration() {
+ return declaration;
+ }
+
+ public ExpressionNode getInitialValue() {
+ return initialValue;
+ }
+
public String getName() {
return declaration.getName();
}
@@ -31,4 +49,43 @@ public class LocalVariableDeclarationNode implements VariableNode, StatementNode
public <T> T accept(StatementNodeMapper<T> visitor) {
return visitor.visit(this);
}
+
+ @Override
+ public String toString() {
+ return "LocalVariableDeclarationNode(declaration=" + declaration
+ + ", initialValue=" + initialValue + ")";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((declaration == null) ? 0 : declaration.hashCode());
+ result = prime * result
+ + ((initialValue == null) ? 0 : initialValue.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;
+ LocalVariableDeclarationNode other = (LocalVariableDeclarationNode) obj;
+ if (declaration == null) {
+ if (other.declaration != null)
+ return false;
+ } else if (!declaration.equals(other.declaration))
+ return false;
+ if (initialValue == null) {
+ if (other.initialValue != null)
+ return false;
+ } else if (!initialValue.equals(other.initialValue))
+ return false;
+ return true;
+ }
}