From 4cdaa7ff4bc8a617bde4f3f3753a3e88459612f7 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 17 Apr 2016 13:46:20 +0100 Subject: Add serialisation of throw nodes in C# --- .../org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 7 ++++++- .../couscous/tests/backends/csharp/CsharpSerializerTests.java | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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; @@ -228,6 +229,12 @@ public class CsharpSerializerTests { assertEquals("return;\n", output); } + @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))); -- cgit v1.2.3