diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-16 16:28:59 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-16 16:28:59 +0000 |
| commit | 8d7bc34b73f2c62d1b9fd50c12b0e0ba6ab0c37a (patch) | |
| tree | dce49b845a8ccc34e9518ccba57e8b8cf583e613 /src | |
| parent | b332717af88b5b613d60ec72af820b696e7e2c7a (diff) | |
Add support for reference equality on C# backend
Diffstat (limited to 'src')
4 files changed, 17 insertions, 12 deletions
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<String> 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<TypeName, String> PRIMITIVES = ImmutableMap.of( - IntegerValue.REF, "int", - StringValue.REF, "string", - BooleanValue.REF, "bool", - ObjectValues.CLASS, "System.Type", - UnitValue.REF, "void"); + private final static Map<TypeName, String> PRIMITIVES = ImmutableMap.<TypeName, String>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 @@ -12,11 +12,6 @@ import java.util.List; public class CsharpCompilerEvalTests extends BackendEvalTests { @Test @Ignore - public void equalityOnReferenceTypesChecksForIdentity() { - } - - @Test - @Ignore public void canEvaluateOperationsOnBooleans() { } |
