aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java1
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java1
-rw-r--r--src/main/resources/csharp/runtime/java/lang/Integer.cs13
-rw-r--r--src/main/resources/csharp/runtime/java/lang/Object.cs11
4 files changed, 24 insertions, 2 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 6032da4..4ae7704 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
@@ -17,6 +17,7 @@ import static com.google.common.collect.Iterables.transform;
public class CsharpBackend implements Backend {
private static final List<String> RUNTIME_FILES = ImmutableList.of(
"java/lang/Integer.cs",
+ "java/lang/Object.cs",
"java/lang/String.cs",
"_couscous.cs");
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
index 5260797..3ac7363 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
@@ -16,7 +16,6 @@ public class CsharpCodeGenerator {
.put(IntegerValue.REF, TypeName.of("int"))
.put(StringValue.REF, TypeName.of("string"))
.put(BooleanValue.REF, TypeName.of("bool"))
- .put(ObjectValues.OBJECT, TypeName.of("object"))
.put(ObjectValues.CLASS, TypeName.of("System.Type"))
.put(UnitValue.REF, TypeName.of("void"))
.build();
diff --git a/src/main/resources/csharp/runtime/java/lang/Integer.cs b/src/main/resources/csharp/runtime/java/lang/Integer.cs
index 9a9f8f5..9e6ee08 100644
--- a/src/main/resources/csharp/runtime/java/lang/Integer.cs
+++ b/src/main/resources/csharp/runtime/java/lang/Integer.cs
@@ -1,7 +1,18 @@
namespace Couscous.java.lang {
- internal class Integer {
+ internal class Integer : Object {
internal static int valueOf__int(int value) {
return value;
}
+
+ private readonly int _value;
+
+ internal Integer(int value) {
+ _value = value;
+ }
+
+ internal override bool equals__java_lang_Object(Object other) {
+ var integer = other as Integer;
+ return integer != null && integer._value == _value;
+ }
}
}
diff --git a/src/main/resources/csharp/runtime/java/lang/Object.cs b/src/main/resources/csharp/runtime/java/lang/Object.cs
new file mode 100644
index 0000000..be76f7a
--- /dev/null
+++ b/src/main/resources/csharp/runtime/java/lang/Object.cs
@@ -0,0 +1,11 @@
+namespace Couscous.java.lang {
+ internal class Object {
+ internal virtual bool equals__java_lang_Object(Object other) {
+ return System.Object.ReferenceEquals(this, other);
+ }
+
+ public static implicit operator Object(int value) {
+ return new Integer(value);
+ }
+ }
+}