fix: allow empty ranges at the end of a sequence for lists and strings
Previously, empty ranges were only permitted at index zero on an empty sequence. This change extends the `calculateRange` function to allow empty ranges at the end of a non-empty sequence, enabling `list[3...3]` and `list[3..-1]` to return an empty slice. Updated the range validation logic to check `range->from == *length` instead of requiring a zero-length sequence, and added test cases for both lists and strings to verify the new behavior.
This commit is contained in:
@@ -33,6 +33,10 @@ System.print(string[3...-6]) // expect: dcba
|
||||
System.print(""[0...0] == "") // expect: true
|
||||
System.print(""[0..-1] == "") // expect: true
|
||||
|
||||
// An empty range at the end is allowed on a string.
|
||||
System.print("abc"[3...3] == "") // expect: true
|
||||
System.print("abc"[3..-1] == "") // expect: true
|
||||
|
||||
// Indexes by byte, not code point.
|
||||
//
|
||||
// Bytes: 11111
|
||||
|
||||
Reference in New Issue
Block a user