From bf5edcdb86ea8a659e35662902c6f98f9b457c9b Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 16 Jan 2016 15:59:34 +0000 Subject: Add this and field reference serialization to C# backend --- .../couscous/backends/csharp/CsharpSerializer.java | 24 +++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src/main') 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 e66d114..fd7f953 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -88,7 +88,7 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(ThisReferenceNode reference) { - throw new UnsupportedOperationException(); + writer.writeKeyword("this"); } @Override @@ -231,7 +231,14 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(FieldDeclarationNode declaration) { - throw new UnsupportedOperationException(); + writer.writeStatement(() -> { + writer.writeKeyword("internal"); + writer.writeSpace(); + writeTypeReference(declaration.getType()); + writer.writeSpace(); + writer.writeIdentifier(declaration.getName()); + writer.writeSymbol(";"); + }); } @Override @@ -251,17 +258,20 @@ public class CsharpSerializer implements NodeVisitor { writer.writeSpace(); writer.writeIdentifier(classNode.getSimpleName()); writer.startBlock(); - - for (MethodNode method : classNode.getMethods()) { - write(method); - } - + writeAll(classNode.getFields()); + writeAll(classNode.getMethods()); writer.endBlock(); }); writer.endBlock(); } + private void writeAll(List nodes) { + for (Node method : nodes) { + write(method); + } + } + private void writeTypeReference(TypeName value) { // TODO: process the nodes before serialization if (PRIMITIVES.containsKey(value)) { -- cgit v1.2.3