diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-06-26 13:28:35 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-06-26 13:28:35 +0200 |
commit | 13e45d14ba7f590fb243c041bc45e6d4d47c8432 (patch) | |
tree | 6b877e3d3731885affc8b39f4fc1a58140cae745 | |
parent | ce024c3e20839465dc8c8f79dcccc5414dd8c506 (diff) | |
download | vim-git-13e45d14ba7f590fb243c041bc45e6d4d47c8432.tar.gz |
patch 8.2.3053: Vim9: cannot assign to @@ in :def functionv8.2.3053
Problem: Vim9: cannot assign to @@ in :def function
Solution: Handle '@' like '"'.
-rw-r--r-- | src/testdir/test_vim9_assign.vim | 25 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 3 |
3 files changed, 19 insertions, 11 deletions
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index cba79729c..55b850a4b 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -228,16 +228,6 @@ def Test_assignment() CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:') CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:') - lines =<< trim END - @c = 'areg' - @c ..= 'add' - assert_equal('aregadd', @c) - END - CheckDefAndScriptSuccess(lines) - - CheckDefFailure(['@a += "more"'], 'E1051:') - CheckDefFailure(['@a += 123'], 'E1012:') - v:errmsg = 'none' v:errmsg ..= 'again' assert_equal('noneagain', v:errmsg) @@ -249,6 +239,21 @@ def Test_assignment() END enddef +def Test_assign_register() + var lines =<< trim END + @c = 'areg' + @c ..= 'add' + assert_equal('aregadd', @c) + + @@ = 'some text' + assert_equal('some text', getreg('"')) + END + CheckDefAndScriptSuccess(lines) + + CheckDefFailure(['@a += "more"'], 'E1051:') + CheckDefFailure(['@a += 123'], 'E1012:') +enddef + def Test_reserved_name() for name in ['true', 'false', 'null'] CheckDefExecAndScriptFailure(['var ' .. name .. ' = 0'], 'E1034:') diff --git a/src/version.c b/src/version.c index 2b320471b..429fb69d5 100644 --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3053, +/**/ 3052, /**/ 3051, diff --git a/src/vim9compile.c b/src/vim9compile.c index bb5ea9726..b8a879440 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -5854,7 +5854,8 @@ get_var_dest( } else if (*name == '@') { - if (!valid_yank_reg(name[1], FALSE) || name[1] == '.') + if (name[1] != '@' + && (!valid_yank_reg(name[1], FALSE) || name[1] == '.')) { emsg_invreg(name[1]); return FAIL; |