aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/ThrowNode.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-17 13:44:07 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-17 13:44:07 +0100
commit726843973481739adec537ddf7ed5bee06415521 (patch)
tree6de2d277fc3b09e3598dcd7f63b8a60ea417a864 /src/main/java/org/zwobble/couscous/ast/ThrowNode.java
parent0217b88e7214d32b9cf625e877d70f505928d7cc (diff)
Add throw node
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/ThrowNode.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ThrowNode.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ThrowNode.java b/src/main/java/org/zwobble/couscous/ast/ThrowNode.java
new file mode 100644
index 0000000..ee6d7a5
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/ast/ThrowNode.java
@@ -0,0 +1,53 @@
+package org.zwobble.couscous.ast;
+
+import org.zwobble.couscous.ast.visitors.NodeTransformer;
+import org.zwobble.couscous.ast.visitors.StatementNodeMapper;
+
+public class ThrowNode implements StatementNode {
+ public static ThrowNode throwNode(ExpressionNode value) {
+ return new ThrowNode(value);
+ }
+
+ private final ExpressionNode value;
+
+ public ThrowNode(ExpressionNode value) {
+ this.value = value;
+ }
+
+ public ExpressionNode getValue() {
+ return value;
+ }
+
+ @Override
+ public <T> T accept(StatementNodeMapper<T> visitor) {
+ return visitor.visit(this);
+ }
+
+ @Override
+ public StatementNode transform(NodeTransformer transformer) {
+ return new ThrowNode(transformer.transformExpression(value));
+ }
+
+ @Override
+ public String toString() {
+ return "ThrowNode(" +
+ "value=" + value +
+ ')';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ ThrowNode throwNode = (ThrowNode) o;
+
+ return value.equals(throwNode.value);
+
+ }
+
+ @Override
+ public int hashCode() {
+ return value.hashCode();
+ }
+}