From 65fd63141b5bd76509e005d8bf6878b02a343eef Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 31 Jan 2016 18:48:55 +0000 Subject: Support string.length() in C# backend --- .../couscous/backends/csharp/CsharpPrimitiveMethods.java | 13 ++++++++++++- .../tests/backends/csharp/CsharpCompilerEvalTests.java | 5 ----- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java index e094258..2bd39cb 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java @@ -3,14 +3,16 @@ package org.zwobble.couscous.backends.csharp; import com.google.common.collect.ImmutableMap; import org.zwobble.couscous.ast.ExpressionNode; import org.zwobble.couscous.ast.TypeName; -import org.zwobble.couscous.backends.python.ast.PythonExpressionNode; import org.zwobble.couscous.values.BooleanValue; +import org.zwobble.couscous.values.IntegerValue; import org.zwobble.couscous.values.ObjectValues; +import org.zwobble.couscous.values.StringValue; import java.util.List; import java.util.Map; import java.util.Optional; +import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess; import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall; import static org.zwobble.couscous.util.ExtraLists.list; @@ -22,9 +24,18 @@ public class CsharpPrimitiveMethods { BOOLEAN_METHODS = methods.build(); } + private static final Map STRING_METHODS; + + static { + ImmutableMap.Builder methods = ImmutableMap.builder(); + methods.put("length", (receiver, arguments) -> fieldAccess(receiver, "Length", IntegerValue.REF)); + STRING_METHODS = methods.build(); + } + private static final Map> METHODS = ImmutableMap.>builder() .put(BooleanValue.REF, BOOLEAN_METHODS) + .put(StringValue.REF, STRING_METHODS) .build(); private static final Map STATIC_INT_METHODS = 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 890ed13..03c8734 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 canCallMethodWithNoArgumentsOnBuiltin() { - } - @Test @Ignore public void canCallMethodWithArgumentsOnBuiltin() { -- cgit v1.2.3