From 1825bb87182562003d223c0c74f110406eea36cc Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 16 Jan 2016 14:38:01 +0000 Subject: Extract C# serialization of methods --- .../couscous/backends/csharp/CsharpBackend.java | 7 +------ .../couscous/backends/csharp/CsharpSerializer.java | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 8 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java index d69edf6..3b69341 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java @@ -6,7 +6,6 @@ import com.google.common.io.Resources; import org.zwobble.couscous.Backend; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.MethodNode; -import org.zwobble.couscous.ast.ReturnNode; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -62,10 +61,6 @@ public class CsharpBackend implements Backend { } private String compileMethod(MethodNode method) { - ReturnNode returnNode = (ReturnNode) method.getBody().get(0); - return - "public static dynamic " + method.getName() + "() {" + - CsharpSerializer.serialize(returnNode, namespace) + - "}"; + return CsharpSerializer.serialize(method, namespace); } } 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 31a7b23..8f7e137 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -155,8 +155,24 @@ public class CsharpSerializer implements NodeVisitor { } @Override - public void visit(MethodNode methodNode) { - throw new UnsupportedOperationException(); + public void visit(MethodNode method) { + writer.writeKeyword("internal"); + writer.writeSpace(); + writer.writeKeyword("static"); + writer.writeSpace(); + writer.writeKeyword("dynamic"); + writer.writeSpace(); + writer.writeIdentifier(method.getName()); + writer.writeSymbol("("); + writer.writeSymbol(")"); + writer.writeSpace(); + writer.writeSymbol("{"); + for (StatementNode statement : method.getBody()) { + writer.writeSymbol("\n "); + write(statement); + } + writer.writeSymbol("\n"); + writer.writeSymbol("}"); } @Override -- cgit v1.2.3