diff options
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 31 |
1 files changed, 25 insertions, 6 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 861caec..ae898f5 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -219,18 +219,22 @@ public class CsharpSerializer implements NodeVisitor { writeTypeReference(method.getReturnType()); writer.writeSpace(); writer.writeIdentifier(method.getName()); - writer.writeSymbol("("); - writer.writeWithSeparator( - method.getArguments(), - this::write, - () -> writer.writeSymbol(", ")); - writer.writeSymbol(")"); + writeFormalArguments(method.getArguments()); writer.startBlock(); writeAll(method.getBody()); writer.endBlock(); }); } + private void writeFormalArguments(List<FormalArgumentNode> arguments) { + writer.writeSymbol("("); + writer.writeWithSeparator( + arguments, + this::write, + () -> writer.writeSymbol(", ")); + writer.writeSymbol(")"); + } + @Override public void visit(ConstructorNode constructorNode) { throw new UnsupportedOperationException(); @@ -266,6 +270,7 @@ public class CsharpSerializer implements NodeVisitor { writer.writeIdentifier(classNode.getSimpleName()); writer.startBlock(); writeAll(classNode.getFields()); + writeConstructor(classNode, classNode.getConstructor()); writeAll(classNode.getMethods()); writer.endBlock(); }); @@ -273,6 +278,20 @@ public class CsharpSerializer implements NodeVisitor { writer.endBlock(); } + private void writeConstructor(ClassNode classNode, ConstructorNode constructor) { + if (!constructor.equals(ConstructorNode.DEFAULT)) { + writer.writeStatement(() -> { + writer.writeKeyword("internal"); + writer.writeSpace(); + writer.writeIdentifier(classNode.getSimpleName()); + writeFormalArguments(constructor.getArguments()); + writer.startBlock(); + writeAll(constructor.getBody()); + writer.endBlock(); + }); + } + } + private void writeAll(List<? extends Node> nodes) { for (Node method : nodes) { write(method); |
