diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-16 15:32:34 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-16 15:32:34 +0000 |
| commit | 907cca69480959dd76afa3cb039244dd3b9833ca (patch) | |
| tree | b59d806dc7bcc73f1123f227bd9d82943b10029c /src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | |
| parent | 4197fcbcd7a54cc11231d80edd1d17effce9b1e9 (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.java | 18 |
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()) { |
