diff options
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/ConstructorNode.java | 66 |
1 files changed, 61 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java b/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java index 468ef9e..c94554b 100644 --- a/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java @@ -4,15 +4,71 @@ import java.util.List; import org.zwobble.couscous.ast.visitors.NodeVisitor; -import lombok.Value; - -@Value(staticConstructor="constructor") public class ConstructorNode implements CallableNode { - List<FormalArgumentNode> arguments; - List<StatementNode> body; + public static ConstructorNode constructor( + List<FormalArgumentNode> arguments, + List<StatementNode> body) { + return new ConstructorNode(arguments, body); + } + + private final List<FormalArgumentNode> arguments; + private final List<StatementNode> body; + + public ConstructorNode( + List<FormalArgumentNode> arguments, + List<StatementNode> body) { + this.arguments = arguments; + this.body = body; + } + + public List<FormalArgumentNode> getArguments() { + return arguments; + } + + public List<StatementNode> getBody() { + return body; + } @Override public void accept(NodeVisitor visitor) { visitor.visit(this); } + + @Override + public String toString() { + return "ConstructorNode(arguments=" + arguments + ", body=" + body + + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((arguments == null) ? 0 : arguments.hashCode()); + result = prime * result + ((body == null) ? 0 : body.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; + ConstructorNode other = (ConstructorNode) obj; + if (arguments == null) { + if (other.arguments != null) + return false; + } else if (!arguments.equals(other.arguments)) + return false; + if (body == null) { + if (other.body != null) + return false; + } else if (!body.equals(other.body)) + return false; + return true; + } } |
