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/primitives/CsharpPrimitiveMethods.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java
index 3208e17..43ca370 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java
@@ -81,14 +81,24 @@ public class CsharpPrimitiveMethods {
methods.put("substring", new PrimitiveInstanceMethod(
(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),
- Types.STRING);
+ if (arguments.size() == 1) {
+ return methodCall(
+ receiver,
+ "Substring",
+ list(startIndex),
+ Types.STRING
+ );
+ } else {
+ 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),
+ Types.STRING
+ );
+ }
},
Types.STRING
));