1
0
forked from aniani/vim

patch 8.2.1066: Lua arrays are zero based

Problem:    Lua arrays are zero based.
Solution:   Make Lua arrays one based. (Prabir Shrestha, closes #6347)
            Note: this is not backwards compatible.
This commit is contained in:
Bram Moolenaar
2020-06-27 12:32:57 +02:00
parent 7147820cb9
commit bd84617d1a
4 changed files with 32 additions and 16 deletions

View File

@@ -327,8 +327,8 @@ func Test_lua_list()
call assert_equal(7, luaeval('#l'))
call assert_match('^list: \%(0x\)\?\x\+$', luaeval('tostring(l)'))
lua l[0] = 124
lua l[5] = nil
lua l[1] = 124
lua l[6] = nil
lua l:insert('first')
lua l:insert('xx', 3)
call assert_equal(['first', 124, 'abc', 'xx', v:true, v:false, v:null, {'a': 1, 'b': 2, 'c': 3}], l)
@@ -367,22 +367,22 @@ func Test_lua_recursive_list()
lua l = vim.list():add(1):add(2)
lua l = l:add(l)
call assert_equal(1, luaeval('l[0]'))
call assert_equal(2, luaeval('l[1]'))
call assert_equal(1, luaeval('l[1]'))
call assert_equal(2, luaeval('l[2]'))
call assert_equal(1, luaeval('l[2][0]'))
call assert_equal(2, luaeval('l[2][1]'))
call assert_equal(1, luaeval('l[3][1]'))
call assert_equal(2, luaeval('l[3][2]'))
call assert_equal(1, luaeval('l[2][2][0]'))
call assert_equal(2, luaeval('l[2][2][1]'))
call assert_equal(1, luaeval('l[3][3][1]'))
call assert_equal(2, luaeval('l[3][3][2]'))
call assert_equal('[1, 2, [...]]', string(luaeval('l')))
call assert_match('^list: \%(0x\)\?\x\+$', luaeval('tostring(l)'))
call assert_equal(luaeval('tostring(l)'), luaeval('tostring(l[2])'))
call assert_equal(luaeval('tostring(l)'), luaeval('tostring(l[3])'))
call assert_equal(luaeval('l'), luaeval('l[2]'))
call assert_equal(luaeval('l'), luaeval('l[2][2]'))
call assert_equal(luaeval('l'), luaeval('l[3]'))
call assert_equal(luaeval('l'), luaeval('l[3][3]'))
lua l = nil
endfunc