aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 14:32:43 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 14:32:43 +0000
commit22f9f981f19b6751ea5697f2e81a557cc52d26d9 (patch)
treedfa9f76aefa5ecc4fdeba246a5379abaac8b4d81 /src
parentee11b2bc0f6bf76a483775bc2c825757ea295c85 (diff)
Extract C# serialization of return statements
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java2
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java5
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpWriter.java4
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java7
4 files changed, 16 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
index b588296..d69edf6 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
@@ -65,7 +65,7 @@ public class CsharpBackend implements Backend {
ReturnNode returnNode = (ReturnNode) method.getBody().get(0);
return
"public static dynamic " + method.getName() + "() {" +
- " return " + CsharpSerializer.serialize(returnNode.getValue(), namespace) + ";" +
+ CsharpSerializer.serialize(returnNode, namespace) +
"}";
}
}
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 b8d81ad..31a7b23 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -118,7 +118,10 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(ReturnNode returnNode) {
- throw new UnsupportedOperationException();
+ writer.writeKeyword("return");
+ writer.writeSpace();
+ write(returnNode.getValue());
+ writer.writeSymbol(";");
}
@Override
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpWriter.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpWriter.java
index 7aef7e6..d3cfce2 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpWriter.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpWriter.java
@@ -31,4 +31,8 @@ public class CsharpWriter {
public void writeIdentifier(String identifier) {
builder.append(identifier);
}
+
+ public void writeSpace() {
+ builder.append(" ");
+ }
}
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 39e0e8f..9425d55 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.backends.csharp.CsharpSerializer;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.LiteralNode.literal;
+import static org.zwobble.couscous.ast.ReturnNode.returns;
public class CsharpSerializerTests {
@Test
@@ -36,6 +37,12 @@ public class CsharpSerializerTests {
assertEquals("typeof(Couscous.com.example.Example)", output);
}
+ @Test
+ public void returnStatementUsesReturnStatement() {
+ String output = serialize(returns(literal(true)));
+ assertEquals("return true;", output);
+ }
+
private String serialize(Node node) {
return CsharpSerializer.serialize(node, "Couscous");
}