From ca4db433c1e614ddb11bdd3a319b8af00f3dfc1e Mon Sep 17 00:00:00 2001 From: replaceitem <40722305+replaceitem@users.noreply.github.com> Date: Tue, 2 Mar 2021 03:10:49 +0100 Subject: [PATCH] Fixed slice() returning empty string when referring to last character (#751) * Fixed slice() returning empty string when referring to last character --- docs/scarpet/language/Containers.md | 4 ++-- src/main/java/carpet/script/value/ListValue.java | 2 +- src/main/java/carpet/script/value/Value.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/scarpet/language/Containers.md b/docs/scarpet/language/Containers.md index 07d6993a..882f4f7f 100644 --- a/docs/scarpet/language/Containers.md +++ b/docs/scarpet/language/Containers.md @@ -187,10 +187,10 @@ other parts. In that case consecutive calls to `slice` will refer to index `0` t cannot go back nor track where they are in the sequence (see examples).
-slice([0,1,2,3,4,5], 1, 3) => [1, 2, 3]
+slice([0,1,2,3,4,5], 1, 3) => [1, 2]
slice('foobar', 0, 1) => 'f'
slice('foobar', 3) => 'bar'
-slice(range(10), 3, 5) => [3, 4, 5]
+slice(range(10), 3, 5) => [3, 4]
slice(range(10), 5) => [5, 6, 7, 8, 9]
r = range(100); [slice(r, 5, 7), slice(r, 1, 3)] => [[5, 6], [8, 9]]
diff --git a/src/main/java/carpet/script/value/ListValue.java b/src/main/java/carpet/script/value/ListValue.java
index 7fd693eb..de316668 100644
--- a/src/main/java/carpet/script/value/ListValue.java
+++ b/src/main/java/carpet/script/value/ListValue.java
@@ -341,7 +341,7 @@ public class ListValue extends AbstractListValue implements ContainerValueInterf
int from = normalizeIndex(fromDesc, size);
if (toDesc == null)
return new ListValue((Collection extends Value>) getItems().subList(from, size));
- int to = normalizeIndex(toDesc, size);
+ int to = normalizeIndex(toDesc, size+1);
if (from > to)
return ListValue.of();
return new ListValue((Collection extends Value>) getItems().subList(from, to));
diff --git a/src/main/java/carpet/script/value/Value.java b/src/main/java/carpet/script/value/Value.java
index 5f228c7d..5548d83f 100644
--- a/src/main/java/carpet/script/value/Value.java
+++ b/src/main/java/carpet/script/value/Value.java
@@ -186,7 +186,7 @@ public abstract class Value implements Comparable