diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-11 20:52:41 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-11 20:52:41 +0000 |
| commit | 7df6bc37bfac33770b9758647ab73822d807f0fe (patch) | |
| tree | 21e3dc99f0c66863fc571f9304158a7638daba2b /src/main/java/org/zwobble/couscous/backends/csharp | |
| parent | d403acf6e1266e73a4ed43b63032be04da2c71d8 (diff) | |
Implement static fields and static constructors for C#
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 19 |
1 files changed, 19 insertions, 0 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 a6bcfc9..c63bbbb 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -8,6 +8,8 @@ import org.zwobble.couscous.values.UnitValue; import java.util.List; +import static org.zwobble.couscous.util.ExtraLists.list; + public class CsharpSerializer implements NodeVisitor { public static String serialize(Node node) { SourceCodeWriter writer = new SourceCodeWriter( @@ -286,6 +288,10 @@ public class CsharpSerializer implements NodeVisitor { writer.writeStatement(() -> { writer.writeKeyword("internal"); writer.writeSpace(); + if (declaration.isStatic()) { + writer.writeKeyword("static"); + writer.writeSpace(); + } writeTypeReference(declaration.getType()); writer.writeSpace(); writer.writeIdentifier(declaration.getName()); @@ -308,6 +314,7 @@ public class CsharpSerializer implements NodeVisitor { writer.writeIdentifier(classNode.getSimpleName()); writer.startBlock(); writeAll(classNode.getFields()); + writeStaticConstructor(classNode); writeConstructor(classNode, classNode.getConstructor()); writeAll(classNode.getMethods()); writer.endBlock(); @@ -317,6 +324,18 @@ public class CsharpSerializer implements NodeVisitor { }); } + private void writeStaticConstructor(ClassNode classNode) { + if (!classNode.getStaticConstructor().isEmpty()) { + writer.writeStatement(() -> { + writer.writeKeyword("static"); + writer.writeSpace(); + writer.writeIdentifier(classNode.getSimpleName()); + writeFormalArguments(list()); + writeBlock(classNode.getStaticConstructor()); + }); + } + } + private void writeConstructor(ClassNode classNode, ConstructorNode constructor) { if (!constructor.equals(ConstructorNode.DEFAULT)) { writer.writeStatement(() -> { |
