diff options
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/sugar/SwitchCaseNode.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/sugar/SwitchCaseNode.java | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/sugar/SwitchCaseNode.java b/src/main/java/org/zwobble/couscous/ast/sugar/SwitchCaseNode.java index 534f244..3aa9bdc 100644 --- a/src/main/java/org/zwobble/couscous/ast/sugar/SwitchCaseNode.java +++ b/src/main/java/org/zwobble/couscous/ast/sugar/SwitchCaseNode.java @@ -1,12 +1,25 @@ package org.zwobble.couscous.ast.sugar; +import com.google.common.collect.Iterables; import org.zwobble.couscous.ast.ExpressionNode; +import org.zwobble.couscous.ast.Node; +import org.zwobble.couscous.ast.NodeTypes; import org.zwobble.couscous.ast.StatementNode; +import org.zwobble.couscous.ast.visitors.NodeTransformer; +import org.zwobble.couscous.util.ExtraIterables; import java.util.List; import java.util.Optional; -public class SwitchCaseNode { +public class SwitchCaseNode implements Node { + public static SwitchCaseNode switchCase(ExpressionNode value, List<StatementNode> statements) { + return switchCase(Optional.of(value), statements); + } + + public static SwitchCaseNode switchCase(List<StatementNode> statements) { + return switchCase(Optional.empty(), statements); + } + public static SwitchCaseNode switchCase(Optional<ExpressionNode> value, List<StatementNode> statements) { return new SwitchCaseNode(value, statements); } @@ -30,4 +43,25 @@ public class SwitchCaseNode { public List<StatementNode> getStatements() { return statements; } + + @Override + public int type() { + return NodeTypes.SWITCH_CASE; + } + + @Override + public Iterable<? extends Node> childNodes() { + return Iterables.concat( + ExtraIterables.iterable(value), + statements + ); + } + + @Override + public SwitchCaseNode transform(NodeTransformer transformer) { + return new SwitchCaseNode( + value.map(transformer::transformExpression), + transformer.transformStatements(statements) + ); + } } |
