aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java13
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java5
2 files changed, 13 insertions, 5 deletions
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 2bd39cb..1a956b7 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java
@@ -13,7 +13,9 @@ import java.util.Map;
import java.util.Optional;
import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess;
+import static org.zwobble.couscous.ast.MethodCallNode.methodCall;
import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall;
+import static org.zwobble.couscous.ast.Operations.integerSubtract;
import static org.zwobble.couscous.util.ExtraLists.list;
public class CsharpPrimitiveMethods {
@@ -29,6 +31,17 @@ public class CsharpPrimitiveMethods {
static {
ImmutableMap.Builder<String, PrimitiveMethodGenerator> methods = ImmutableMap.builder();
methods.put("length", (receiver, arguments) -> fieldAccess(receiver, "Length", IntegerValue.REF));
+ methods.put("substring", (receiver, arguments) -> {
+ ExpressionNode startIndex = arguments.get(0);
+ ExpressionNode endIndex = arguments.get(1);
+ ExpressionNode length = integerSubtract(endIndex, startIndex);
+ // TODO: handle length going beyond end-of-string
+ return methodCall(
+ receiver,
+ "Substring",
+ list(startIndex, length),
+ StringValue.REF);
+ });
STRING_METHODS = methods.build();
}
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 03c8734..fff9525 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 canCallMethodWithArgumentsOnBuiltin() {
- }
-
- @Test
- @Ignore
public void canCallStaticMethodFromUserDefinedStaticMethod() {
}