From af752d54aac76cf11cbef4a15b56ed16161ff36a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 16 Jan 2016 15:35:13 +0000 Subject: Support static method calls in C# backend --- .../couscous/backends/csharp/CsharpSerializer.java | 15 ++------------- .../tests/backends/csharp/CsharpSerializerTests.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'src') 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 187a44a..662a018 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -139,23 +139,12 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(InstanceReceiver receiver) { - receiver.accept(new Receiver.Mapper() { - @Override - public Void visit(ExpressionNode receiver) { - write(receiver); - return null; - } - - @Override - public Void visit(TypeName receiver) { - throw new UnsupportedOperationException(); - } - }); + write(receiver.getExpression()); } @Override public void visit(StaticReceiver receiver) { - throw new UnsupportedOperationException(); + writeTypeReference(receiver.getType()); } @Override 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 377712c..4e2bf65 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 @@ -10,6 +10,7 @@ import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall; import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; import static org.zwobble.couscous.ast.LiteralNode.literal; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; +import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall; import static org.zwobble.couscous.ast.ReturnNode.returns; import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional; import static org.zwobble.couscous.ast.VariableDeclaration.var; @@ -56,6 +57,16 @@ public class CsharpSerializerTests { assertEquals("true ? 1 : 2", output); } + @Test + public void staticMethodCallWithNoArgumentsWritesStaticReceiver() { + String output = serialize(staticMethodCall( + TypeName.of("X"), + "y", + list(), + TypeName.of("Y"))); + assertEquals("Couscous.X.y()", output); + } + @Test public void methodCallWithNoArgumentsWritesReceiver() { String output = serialize(methodCall( -- cgit v1.2.3