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.java10
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java11
2 files changed, 20 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 c8b4254..8a92a51 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -313,7 +313,15 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(InterfaceNode interfaceNode) {
writeType(interfaceNode, "interface", () -> {
- writeAll(interfaceNode.getMethods());
+ interfaceNode.getMethods().forEach(method -> {
+ writer.writeStatement(() -> {
+ writeTypeReference(method.getReturnType());
+ writer.writeSpace();
+ writer.writeIdentifier(method.getName());
+ writeFormalArguments(method.getArguments());
+ writer.writeSymbol(";");
+ });
+ });
});
}
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 95df6e4..e766719 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
@@ -5,6 +5,7 @@ import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.backends.csharp.CsharpSerializer;
import org.zwobble.couscous.tests.TestIds;
import org.zwobble.couscous.values.BooleanValue;
+import org.zwobble.couscous.values.IntegerValue;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.AssignmentNode.assign;
@@ -312,6 +313,16 @@ public class CsharpSerializerTests {
assertEquals("namespace com.example {\n internal interface Example {\n }\n}\n", output);
}
+ @Test
+ public void interfaceWithMethod() {
+ MethodNode method = MethodNode.builder("get").isAbstract().returns(IntegerValue.REF).build();
+ Node node = declareInterface(TypeName.of("com.example.Example"), set(), list(method));
+
+ String output = serialize(node);
+
+ assertEquals("namespace com.example {\n internal interface Example {\n int get();\n }\n}\n", output);
+ }
+
private String serialize(Node node) {
return CsharpSerializer.serialize(node);
}