summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_vim9_cmd.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-01-26 21:01:15 +0000
committerBram Moolenaar <Bram@vim.org>2022-01-26 21:01:15 +0000
commit70c43d84be98ab54d3723155dcc4232dc5a5f081 (patch)
tree31f3a580fe1bbfecc50e822e718696836d9cb95c /src/testdir/test_vim9_cmd.vim
parent1080c48ec8d672d7e9fbefb5a1255c9df09a2884 (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.vim29
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