From e886b0ddb09f1bc247858c3ff5405651c66f0ae8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 16 Jan 2016 16:07:47 +0000 Subject: Add serialisation of assignments to C# backend --- .../org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 6 +++++- .../couscous/tests/backends/csharp/CsharpSerializerTests.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') 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; @@ -60,6 +62,14 @@ public class CsharpSerializerTests { assertEquals("this", output); } + @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))); -- cgit v1.2.3