aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java15
1 files changed, 13 insertions, 2 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) {