From 8d7bc34b73f2c62d1b9fd50c12b0e0ba6ab0c37a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 16 Jan 2016 16:28:59 +0000 Subject: Add support for reference equality on C# backend --- .../zwobble/couscous/backends/csharp/CsharpBackend.java | 3 ++- .../zwobble/couscous/backends/csharp/CsharpSerializer.java | 14 ++++++++------ src/main/resources/csharp/runtime/_couscous.cs | 7 +++++++ .../tests/backends/csharp/CsharpCompilerEvalTests.java | 5 ----- 4 files changed, 17 insertions(+), 12 deletions(-) create mode 100644 src/main/resources/csharp/runtime/_couscous.cs (limited to 'src') diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java index b92e683..6c2555c 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java @@ -16,7 +16,8 @@ import static com.google.common.collect.Iterables.transform; public class CsharpBackend implements Backend { private static final List RUNTIME_FILES = ImmutableList.of( - "java/lang/String.cs"); + "java/lang/String.cs", + "_couscous.cs"); private final Path directoryPath; private final String namespace; 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 ae898f5..6dc7c34 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -10,12 +10,14 @@ import java.util.List; import java.util.Map; public class CsharpSerializer implements NodeVisitor { - private final static Map PRIMITIVES = ImmutableMap.of( - IntegerValue.REF, "int", - StringValue.REF, "string", - BooleanValue.REF, "bool", - ObjectValues.CLASS, "System.Type", - UnitValue.REF, "void"); + private final static Map PRIMITIVES = ImmutableMap.builder() + .put(IntegerValue.REF, "int") + .put(StringValue.REF, "string") + .put(BooleanValue.REF, "bool") + .put(ObjectValues.OBJECT, "object") + .put(ObjectValues.CLASS, "System.Type") + .put(UnitValue.REF, "void") + .build(); public static String serialize(Node node, String namespace) { SourceCodeWriter writer = new SourceCodeWriter( diff --git a/src/main/resources/csharp/runtime/_couscous.cs b/src/main/resources/csharp/runtime/_couscous.cs new file mode 100644 index 0000000..752b021 --- /dev/null +++ b/src/main/resources/csharp/runtime/_couscous.cs @@ -0,0 +1,7 @@ +namespace Couscous { + internal class _couscous { + internal static bool same(object first, object second) { + return object.ReferenceEquals(first, second); + } + } +} diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java index 79c4a6d..56897e1 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java @@ -10,11 +10,6 @@ import org.zwobble.couscous.values.PrimitiveValue; import java.util.List; public class CsharpCompilerEvalTests extends BackendEvalTests { - @Test - @Ignore - public void equalityOnReferenceTypesChecksForIdentity() { - } - @Test @Ignore public void canEvaluateOperationsOnBooleans() { -- cgit v1.2.3