aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 16:28:59 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 16:28:59 +0000
commit8d7bc34b73f2c62d1b9fd50c12b0e0ba6ab0c37a (patch)
treedce49b845a8ccc34e9518ccba57e8b8cf583e613 /src
parentb332717af88b5b613d60ec72af820b696e7e2c7a (diff)
Add support for reference equality on C# backend
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java3
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java14
-rw-r--r--src/main/resources/csharp/runtime/_couscous.cs7
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java5
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() {
}