aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 15:59:34 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 15:59:34 +0000
commitbf5edcdb86ea8a659e35662902c6f98f9b457c9b (patch)
treebb89d9a1697aa824af11b299a526c0189348470c /src/main
parent16a0f4c3ef8fdb8cb25c07e7238f17fc9d3e18fa (diff)
Add this and field reference serialization to C# backend
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java24
1 files changed, 17 insertions, 7 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 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<? extends Node> nodes) {
+ for (Node method : nodes) {
+ write(method);
+ }
+ }
+
private void writeTypeReference(TypeName value) {
// TODO: process the nodes before serialization
if (PRIMITIVES.containsKey(value)) {