From 16a0f4c3ef8fdb8cb25c07e7238f17fc9d3e18fa Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 16 Jan 2016 15:54:11 +0000 Subject: Implementation C# serialization of field accesses --- .../org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 4 +++- .../couscous/tests/backends/csharp/CsharpSerializerTests.java | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) (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 1d05081..e66d114 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -133,7 +133,9 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(FieldAccessNode fieldAccess) { - throw new UnsupportedOperationException(); + write(fieldAccess.getLeft()); + writer.writeSymbol("."); + writer.writeIdentifier(fieldAccess.getFieldName()); } @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 2ca2917..95696c7 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 @@ -7,6 +7,7 @@ import org.zwobble.couscous.tests.TestIds; import static org.junit.Assert.assertEquals; import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall; +import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess; import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; import static org.zwobble.couscous.ast.LiteralNode.literal; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; @@ -103,6 +104,15 @@ public class CsharpSerializerTests { assertEquals("new Couscous.X(1, 2)", output); } + @Test + public void fieldAccessSeparatesReceiverAndNameWithDot() { + String output = serialize(fieldAccess( + reference(var(TestIds.ANY_ID, "x", TypeName.of("X"))), + "y", + TypeName.of("Y"))); + assertEquals("x.y", output); + } + @Test public void returnStatementUsesReturnStatement() { String output = serialize(returns(literal(true))); -- cgit v1.2.3