diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-01-26 21:01:15 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-01-26 21:01:15 +0000 |
commit | 70c43d84be98ab54d3723155dcc4232dc5a5f081 (patch) | |
tree | 31f3a580fe1bbfecc50e822e718696836d9cb95c /src/testdir/test_vim9_cmd.vim | |
parent | 1080c48ec8d672d7e9fbefb5a1255c9df09a2884 (diff) |
patch 8.2.4225: Vim9: depth argument of :lockvar not parsed in :def functionv8.2.4225
Problem: Vim9: depth argument of :lockvar not parsed in :def function.
Solution: Parse the optional depth argument. (closes #9629)
Fix that locking doesn't work for a non-materialize list.
Diffstat (limited to 'src/testdir/test_vim9_cmd.vim')
-rw-r--r-- | src/testdir/test_vim9_cmd.vim | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index 6347a282a6..7b2edfd1b1 100644 --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -1396,6 +1396,35 @@ def Test_lockvar() lockvar whatever endif + g:lockme = [1, 2, 3] + lockvar 1 g:lockme + g:lockme[1] = 77 + assert_equal([1, 77, 3], g:lockme) + + lockvar 2 g:lockme + var caught = false + try + g:lockme[1] = 99 + catch /E1119:/ + caught = true + endtry + assert_true(caught) + assert_equal([1, 77, 3], g:lockme) + unlet g:lockme + + # also for non-materialized list + g:therange = range(3) + lockvar 2 g:therange + caught = false + try + g:therange[1] = 99 + catch /E1119:/ + caught = true + endtry + assert_true(caught) + assert_equal([0, 1, 2], g:therange) + unlet g:therange + var d = {a: 1, b: 2} d.a = 3 d.b = 4 |