aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java7
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java10
2 files changed, 16 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
index 3908f72..393cdc2 100644
--- a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
+++ b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
@@ -93,6 +93,13 @@ public class SourceCodeWriter {
action.run(this);
}
+ public <T> void writeCommaSeparated(Iterable<T> values, Consumer<T> writeValue) {
+ writeWithSeparator(values, writeValue, () -> {
+ writeSymbol(",");
+ writeSpace();
+ });
+ }
+
public <T> void writeWithSeparator(Iterable<T> values, Consumer<T> writeValue, Action separator) {
Iterator<T> iterator = values.iterator();
if (iterator.hasNext()) {
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 e7ac3d7..499121c 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,15 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(ArrayNode array) {
- throw new UnsupportedOperationException();
+ writer.writeKeyword("new");
+ writer.writeSpace();
+ writeTypeReference(array.getElementType());
+ writer.writeSymbol("[");
+ writer.writeSymbol("]");
+ writer.writeSpace();
+ writer.writeSymbol("{");
+ writer.writeCommaSeparated(array.getElements(), this::write);
+ writer.writeSymbol("}");
}
@Override