aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/csharp
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-11 20:52:41 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-11 20:52:41 +0000
commit7df6bc37bfac33770b9758647ab73822d807f0fe (patch)
tree21e3dc99f0c66863fc571f9304158a7638daba2b /src/main/java/org/zwobble/couscous/backends/csharp
parentd403acf6e1266e73a4ed43b63032be04da2c71d8 (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.java19
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(() -> {