Mercurial > vim
changeset 4260:d8acfc49d94e v7.3.881
updated for version 7.3.881
Problem: Python list does not work correctly.
Solution: Fix it and add a test. (Yukihiro Nakadaira)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Fri, 05 Apr 2013 19:32:36 +0200 |
parents | d26e3be050b2 |
children | 1659ea021276 |
files | src/if_py_both.h src/testdir/test86.in src/testdir/test86.ok src/version.c |
diffstat | 4 files changed, 39 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -1139,7 +1139,7 @@ ListSlice(PyObject *self, Py_ssize_t fir for (i = 0; i < n; ++i) { - PyObject *item = ListItem(self, i); + PyObject *item = ListItem(self, first + i); if (item == NULL) { Py_DECREF(list);
--- a/src/testdir/test86.in +++ b/src/testdir/test86.in @@ -321,6 +321,31 @@ EOF :py trace_main() :py sys.settrace(None) :$put =string(l) +:" +:" Slice +:py ll = vim.bindeval('[0, 1, 2, 3, 4, 5]') +:py l = ll[:4] +:$put =string(pyeval('l')) +:py l = ll[2:] +:$put =string(pyeval('l')) +:py l = ll[:-4] +:$put =string(pyeval('l')) +:py l = ll[-2:] +:$put =string(pyeval('l')) +:py l = ll[2:4] +:$put =string(pyeval('l')) +:py l = ll[4:2] +:$put =string(pyeval('l')) +:py l = ll[-4:-2] +:$put =string(pyeval('l')) +:py l = ll[-2:-4] +:$put =string(pyeval('l')) +:py l = ll[:] +:$put =string(pyeval('l')) +:py l = ll[0:6] +:$put =string(pyeval('l')) +:py l = ll[-10:10] +:$put =string(pyeval('l')) :endfun :" :call Test()
--- a/src/testdir/test86.ok +++ b/src/testdir/test86.ok @@ -65,3 +65,14 @@ undefined_name: Vim(let):Trace vim: Vim(let):E859: [1] [1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1] +[0, 1, 2, 3] +[2, 3, 4, 5] +[0, 1] +[4, 5] +[2, 3] +[] +[2, 3] +[] +[0, 1, 2, 3, 4, 5] +[0, 1, 2, 3, 4, 5] +[0, 1, 2, 3, 4, 5]