aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-17 13:46:20 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-17 13:46:20 +0100
commit4cdaa7ff4bc8a617bde4f3f3753a3e88459612f7 (patch)
tree999e910aca358494bac54a571b1b3b7b3fcda5eb
parent726843973481739adec537ddf7ed5bee06415521 (diff)
Add serialisation of throw nodes in C#
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java7
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java7
2 files changed, 13 insertions, 1 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 d238a5c..64307f4 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -311,7 +311,12 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(ThrowNode throwNode) {
- throw new UnsupportedOperationException();
+ writer.writeStatement(() -> {
+ writer.writeKeyword("throw");
+ writer.writeSpace();
+ write(throwNode.getValue());
+ writer.writeSymbol(";");
+ });
}
@Override
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
index 6b221ff..1286415 100644
--- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
@@ -29,6 +29,7 @@ import static org.zwobble.couscous.ast.Operations.not;
import static org.zwobble.couscous.ast.ReturnNode.returns;
import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional;
import static org.zwobble.couscous.ast.ThisReferenceNode.thisReference;
+import static org.zwobble.couscous.ast.ThrowNode.throwNode;
import static org.zwobble.couscous.ast.VariableDeclaration.var;
import static org.zwobble.couscous.ast.VariableReferenceNode.reference;
import static org.zwobble.couscous.ast.WhileNode.whileLoop;
@@ -229,6 +230,12 @@ public class CsharpSerializerTests {
}
@Test
+ public void throwStatementIncludesValue() {
+ String output = serialize(throwNode(reference(var(TestIds.ANY_ID, "x", ScalarType.of("X")))));
+ assertEquals("throw x;\n", output);
+ }
+
+ @Test
public void expressionStatementWritesExpression() {
String output = serialize(expressionStatement(literal(true)));
assertEquals("true;\n", output);