aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-02 15:30:40 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-02 15:30:40 +0100
commitd2c63996ece9bb9184a17d5bb24ae03e87eb87f5 (patch)
treed952ca5c32e6f808fb7086de0198d1f220c1e86e
parent53c06909bec4b7c3bfb399b5823b356bd5e6b19b (diff)
C# backend: write casts
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java6
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java9
2 files changed, 14 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 48ca7e0..19c1943 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -270,7 +270,11 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(CastNode cast) {
- throw new UnsupportedOperationException();
+ writer.writeSymbol("(");
+ writeTypeReference(cast.getType());
+ writer.writeSymbol(")");
+ writer.writeSpace();
+ write(cast.getExpression());
}
@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 781d00a..b7894c0 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
@@ -10,6 +10,7 @@ import org.zwobble.couscous.types.Types;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.ArrayNode.array;
import static org.zwobble.couscous.ast.AssignmentNode.assign;
+import static org.zwobble.couscous.ast.CastNode.cast;
import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall;
import static org.zwobble.couscous.ast.ExpressionStatementNode.expressionStatement;
import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess;
@@ -190,6 +191,14 @@ public class CsharpSerializerTests {
}
@Test
+ public void castIsWrittenWithParenthesisedType() {
+ String output = serialize(cast(
+ reference(var(TestIds.ANY_ID, "x", ScalarType.of("X"))),
+ ScalarType.of("Y")));
+ assertEquals("(Y) x", output);
+ }
+
+ @Test
public void returnStatementUsesReturnStatement() {
String output = serialize(returns(literal(true)));
assertEquals("return true;\n", output);