aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java15
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java2
2 files changed, 14 insertions, 3 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 3a50e18..ef13854 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -1,13 +1,19 @@
package org.zwobble.couscous.backends.csharp;
+import com.google.common.collect.ImmutableMap;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.visitors.NodeVisitor;
import org.zwobble.couscous.backends.SourceCodeWriter;
+import org.zwobble.couscous.values.IntegerValue;
import org.zwobble.couscous.values.PrimitiveValueVisitor;
import java.util.List;
+import java.util.Map;
public class CsharpSerializer implements NodeVisitor {
+ private final static Map<TypeName, String> PRIMITIVES = ImmutableMap.of(
+ IntegerValue.REF, "int");
+
public static String serialize(Node node, String namespace) {
SourceCodeWriter writer = new SourceCodeWriter(
(writer2) -> {
@@ -177,7 +183,7 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(FormalArgumentNode argument) {
- writer.writeKeyword("dynamic");
+ writeTypeReference(argument.getType());
writer.writeSpace();
writer.writeIdentifier(argument.getName());
}
@@ -252,7 +258,12 @@ public class CsharpSerializer implements NodeVisitor {
}
private void writeTypeReference(TypeName value) {
- writer.writeIdentifier(typeReference(value));
+ // TODO: process the nodes before serialization
+ if (PRIMITIVES.containsKey(value)) {
+ writer.writeIdentifier(PRIMITIVES.get(value));
+ } else {
+ writer.writeIdentifier(typeReference(value));
+ }
}
private String typeReference(TypeName value) {
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 4e2bf65..22eeac0 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
@@ -130,7 +130,7 @@ public class CsharpSerializerTests {
String output = serialize(methodNode);
- assertEquals("internal static dynamic nothing(dynamic x, dynamic y) {\n}\n", output);
+ assertEquals("internal static dynamic nothing(Couscous.X x, Couscous.Y y) {\n}\n", output);
}
@Test