Mercurial > vim
changeset 7862:d4fec9208e7e v7.4.1228
commit https://github.com/vim/vim/commit/155500077c80cdb5d9c63996000c011b66a676bf
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 31 18:45:24 2016 +0100
patch 7.4.1228
Problem: copy() and deepcopy() fail with special variables. (Nikolai
Pavlov)
Solution: Make it work. Add a test. Closes https://github.com/vim/vim/issues/614.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 31 Jan 2016 19:00:04 +0100 |
parents | 868cb0895bdd |
children | e18a688b2e3b |
files | src/eval.c src/testdir/test_viml.vim src/version.c |
diffstat | 3 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -21939,6 +21939,7 @@ item_copy( #endif case VAR_STRING: case VAR_FUNC: + case VAR_SPECIAL: copy_tv(from, to); break; case VAR_LIST:
--- a/src/testdir/test_viml.vim +++ b/src/testdir/test_viml.vim @@ -1001,6 +1001,16 @@ func Test_type() call assert_equal(v:none, eval(string(v:none))) call assert_equal(v:null, eval(string(v:null))) + call assert_equal(v:false, copy(v:false)) + call assert_equal(v:true, copy(v:true)) + call assert_equal(v:none, copy(v:none)) + call assert_equal(v:null, copy(v:null)) + + call assert_equal([v:false], deepcopy([v:false])) + call assert_equal([v:true], deepcopy([v:true])) + call assert_equal([v:none], deepcopy([v:none])) + call assert_equal([v:null], deepcopy([v:null])) + call assert_true(empty(v:false)) call assert_false(empty(v:true)) call assert_true(empty(v:null))