aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 15:32:34 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 15:32:34 +0000
commit907cca69480959dd76afa3cb039244dd3b9833ca (patch)
treeb59d806dc7bcc73f1123f227bd9d82943b10029c /src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
parent4197fcbcd7a54cc11231d80edd1d17effce9b1e9 (diff)
Support method arguments in C# backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java18
1 files changed, 16 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 f034975..187a44a 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -5,6 +5,8 @@ import org.zwobble.couscous.ast.visitors.NodeVisitor;
import org.zwobble.couscous.backends.SourceCodeWriter;
import org.zwobble.couscous.values.PrimitiveValueVisitor;
+import java.util.List;
+
public class CsharpSerializer implements NodeVisitor {
public static String serialize(Node node, String namespace) {
SourceCodeWriter writer = new SourceCodeWriter(
@@ -103,8 +105,7 @@ public class CsharpSerializer implements NodeVisitor {
write(methodCall.getReceiver());
writer.writeSymbol(".");
writer.writeIdentifier(methodCall.getMethodName());
- writer.writeSymbol("(");
- writer.writeSymbol(")");
+ writeArguments(methodCall.getArguments());
}
@Override
@@ -112,7 +113,12 @@ public class CsharpSerializer implements NodeVisitor {
writer.writeKeyword("new");
writer.writeSpace();
writeTypeReference(call.getType());
+ writeArguments(call.getArguments());
+ }
+
+ private void writeArguments(List<? extends ExpressionNode> arguments) {
writer.writeSymbol("(");
+ writer.writeWithSeparator(arguments, this::write, () -> writer.writeSymbol(", "));
writer.writeSymbol(")");
}
@@ -203,6 +209,14 @@ public class CsharpSerializer implements NodeVisitor {
writer.writeSpace();
writer.writeIdentifier(method.getName());
writer.writeSymbol("(");
+ writer.writeWithSeparator(
+ method.getArguments(),
+ argument -> {
+ writer.writeKeyword("dynamic");
+ writer.writeSpace();
+ writer.writeIdentifier(argument.getName());
+ },
+ () -> writer.writeSymbol(", "));
writer.writeSymbol(")");
writer.startBlock();
for (StatementNode statement : method.getBody()) {