aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 16:07:47 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 16:07:47 +0000
commite886b0ddb09f1bc247858c3ff5405651c66f0ae8 (patch)
tree30a2a5852543e6f8b77be31bdad51338e153b52d
parente129dc3abbdca3c4532ee888f301f74847b0ceba (diff)
Add serialisation of assignments to C# backend
-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.java10
2 files changed, 15 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 c7d6db1..861caec 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -93,7 +93,11 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(AssignmentNode assignment) {
- throw new UnsupportedOperationException();
+ write(assignment.getTarget());
+ writer.writeSpace();
+ writer.writeSymbol("=");
+ writer.writeSpace();
+ write(assignment.getValue());
}
@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 c617f65..30a6f2b 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
@@ -4,8 +4,10 @@ import org.junit.Test;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.backends.csharp.CsharpSerializer;
import org.zwobble.couscous.tests.TestIds;
+import org.zwobble.couscous.values.BooleanValue;
import static org.junit.Assert.assertEquals;
+import static org.zwobble.couscous.ast.AssignmentNode.assign;
import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall;
import static org.zwobble.couscous.ast.ExpressionStatementNode.expressionStatement;
import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess;
@@ -61,6 +63,14 @@ public class CsharpSerializerTests {
}
@Test
+ public void assignmentSeparatesTargetAndValueWithEqualsSign() {
+ String output = serialize(assign(
+ reference(var(TestIds.ANY_ID, "x", BooleanValue.REF)),
+ literal(true)));
+ assertEquals("x = true", output);
+ }
+
+ @Test
public void ternaryConditionalWritesConditionAndBranches() {
String output = serialize(ternaryConditional(literal(true), literal(1), literal(2)));
assertEquals("true ? 1 : 2", output);