aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java8
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java10
2 files changed, 17 insertions, 1 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 3989cd4..64566b4 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -469,7 +469,13 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(EnumNode enumNode) {
- throw new UnsupportedOperationException();
+ writeType(enumNode, "enum", () -> {
+ writer.writeStatement(() -> {
+ writer.writeCommaSeparated(
+ enumNode.getValues(),
+ value -> writer.writeIdentifier(value));
+ });
+ });
}
private void writeType(TypeNode node, String keyword, Action writeBody) {
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
index 6248aa5..991ec79 100644
--- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
@@ -13,6 +13,7 @@ import static org.zwobble.couscous.ast.ArrayNode.array;
import static org.zwobble.couscous.ast.AssignmentNode.assign;
import static org.zwobble.couscous.ast.CastNode.cast;
import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall;
+import static org.zwobble.couscous.ast.EnumNode.declareEnum;
import static org.zwobble.couscous.ast.ExpressionStatementNode.expressionStatement;
import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess;
import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg;
@@ -490,6 +491,15 @@ public class CsharpSerializerTests {
assertEquals("namespace com.example {\n internal interface Example {\n X get();\n }\n}\n", output);
}
+ @Test
+ public void enumWithSimpleValues() {
+ Node node = declareEnum(ScalarType.of("com.example.Example"), list("ONE", "TWO"));
+
+ String output = serialize(node);
+
+ assertEquals("namespace com.example {\n internal enum Example {\n ONE, TWO\n }\n}\n", output);
+ }
+
private String serialize(Node node) {
return CsharpSerializer.serialize(node);
}