aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
index 91a4400..6164d04 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -2,6 +2,8 @@ package org.zwobble.couscous.backends.csharp;
import com.google.common.collect.ImmutableSet;
import org.zwobble.couscous.ast.*;
+import org.zwobble.couscous.ast.sugar.SwitchCaseNode;
+import org.zwobble.couscous.ast.sugar.SwitchNode;
import org.zwobble.couscous.ast.visitors.DynamicNodeMapper;
import org.zwobble.couscous.ast.visitors.DynamicNodeVisitor;
import org.zwobble.couscous.backends.SourceCodeWriter;
@@ -366,6 +368,36 @@ public class CsharpSerializer {
}
}
+ public void visit(SwitchNode switchNode) {
+ writer.writeStatement(() -> {
+ writer.writeKeyword("switch");
+ writer.writeSpace();
+ writer.writeSymbol("(");
+ write(switchNode.getValue());
+ writer.writeSymbol(")");
+ writer.startBlock();
+ switchNode.getCases().forEach(this::visit);
+ writer.endBlock();
+ });
+ }
+
+ private void visit(SwitchCaseNode switchCase) {
+ writer.writeStatement(() -> {
+ if (switchCase.getValue().isPresent()) {
+ writer.writeKeyword("case");
+ writer.writeSpace();
+ write(switchCase.getValue().get());
+ } else {
+ writer.writeKeyword("default");
+ }
+ writer.writeSymbol(":");
+ });
+ writer.indent();
+ writeAll(switchCase.getStatements());
+ writer.dedent();
+
+ }
+
public void visit(WhileNode whileLoop) {
writer.writeStatement(() -> {
writer.writeKeyword("while");