patch 8.2.2605: Vim9: string index and slice does not include composing chars
Problem: Vim9: string index and slice does not include composing chars.
Solution: Include composing characters. (issue #6563)
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index a78cf19..9829d88 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2367,6 +2367,35 @@
assert_equal('abcd', g:teststring[: -3])
assert_equal('', g:teststring[: -9])
+ # composing characters are included
+ g:teststring = 'àéû'
+ assert_equal('à', g:teststring[0])
+ assert_equal('é', g:teststring[1])
+ assert_equal('û', g:teststring[2])
+ assert_equal('', g:teststring[3])
+ assert_equal('', g:teststring[4])
+
+ assert_equal('û', g:teststring[-1])
+ assert_equal('é', g:teststring[-2])
+ assert_equal('à', g:teststring[-3])
+ assert_equal('', g:teststring[-4])
+ assert_equal('', g:teststring[-5])
+
+ assert_equal('à', g:teststring[0 : 0])
+ assert_equal('é', g:teststring[1 : 1])
+ assert_equal('àé', g:teststring[0 : 1])
+ assert_equal('àéû', g:teststring[0 : -1])
+ assert_equal('àé', g:teststring[0 : -2])
+ assert_equal('à', g:teststring[0 : -3])
+ assert_equal('', g:teststring[0 : -4])
+ assert_equal('', g:teststring[0 : -5])
+ assert_equal('àéû', g:teststring[ : ])
+ assert_equal('àéû', g:teststring[0 : ])
+ assert_equal('éû', g:teststring[1 : ])
+ assert_equal('û', g:teststring[2 : ])
+ assert_equal('', g:teststring[3 : ])
+ assert_equal('', g:teststring[4 : ])
+
# blob index cannot be out of range
g:testblob = 0z01ab
assert_equal(0x01, g:testblob[0])