aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 16:02:34 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 16:02:34 +0000
commitaed79752c0f9f7a637b7bee26c992c3834bcc236 (patch)
tree4cbec40fb6e94435171f4f3734694c858f6fb658
parentbf5edcdb86ea8a659e35662902c6f98f9b457c9b (diff)
Add expression statement serialisation to C# backend
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java5
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java7
2 files changed, 11 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 fd7f953..c9df2ac 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -168,7 +168,10 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(ExpressionStatementNode expressionStatement) {
- throw new UnsupportedOperationException();
+ writer.writeStatement(() -> {
+ write(expressionStatement.getExpression());
+ 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 8c3162b..2986234 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
@@ -7,6 +7,7 @@ import org.zwobble.couscous.tests.TestIds;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall;
+import static org.zwobble.couscous.ast.ExpressionStatementNode.expressionStatement;
import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess;
import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg;
import static org.zwobble.couscous.ast.LiteralNode.literal;
@@ -127,6 +128,12 @@ public class CsharpSerializerTests {
}
@Test
+ public void expressionStatementWritesExpression() {
+ String output = serialize(expressionStatement(literal(true)));
+ assertEquals("true;\n", output);
+ }
+
+ @Test
public void methodHasDynamicReturnType() {
String output = serialize(MethodNode.staticMethod("nothing").build());
assertEquals("internal static void nothing() {\n}\n", output);