aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 15:14:34 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 15:14:34 +0000
commit1bab211fd6231ed99b84b764e8f78ac2be1272f8 (patch)
treec0dd85756301de537517ceeb7d0576e551a61433
parent5a471db6d2518eaed974f5b9dade1bd3a4df719e (diff)
Implement variable references in C# backend
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java2
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java9
2 files changed, 10 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 5a3da8e..702ad12 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -72,7 +72,7 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(VariableReferenceNode variableReference) {
- throw new UnsupportedOperationException();
+ writer.writeIdentifier(variableReference.getReferent().getName());
}
@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 875bcbf..93456ef 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
@@ -3,11 +3,14 @@ package org.zwobble.couscous.tests.backends.csharp;
import org.junit.Test;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.backends.csharp.CsharpSerializer;
+import org.zwobble.couscous.tests.TestIds;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.LiteralNode.literal;
import static org.zwobble.couscous.ast.ReturnNode.returns;
import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional;
+import static org.zwobble.couscous.ast.VariableDeclaration.var;
+import static org.zwobble.couscous.ast.VariableReferenceNode.reference;
public class CsharpSerializerTests {
@Test
@@ -38,6 +41,12 @@ public class CsharpSerializerTests {
}
@Test
+ public void variableReferenceWritesIdentifier() {
+ String output = serialize(reference(var(TestIds.ANY_ID, "x", TypeName.of("X"))));
+ assertEquals("x", output);
+ }
+
+ @Test
public void ternaryConditionalWritesConditionAndBranches() {
String output = serialize(ternaryConditional(literal(true), literal(1), literal(2)));
assertEquals("true ? 1 : 2", output);