diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-16 15:41:07 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-16 15:41:07 +0000 |
| commit | d2c8f4478ad23e7a2a01773bdd5a6333f8d56c7d (patch) | |
| tree | 6b124a80b6dd0ab42d3b2661c1e216b634e1a21c /src/main/java/org/zwobble | |
| parent | a32c8fc5f4b32c766f3a25321b17ee73753b994d (diff) | |
Use concrete types for arguments in C# backend
Diffstat (limited to 'src/main/java/org/zwobble')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 15 |
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) { |
