Mercurial > vim
changeset 19451:b26e96f7c12f v8.2.0283
patch 8.2.0283: Vim9: failing to load script var not tested
Commit: https://github.com/vim/vim/commit/fd1823e0b783c31a5022c7a4d31c34d84ff0a744
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Feb 19 20:23:11 2020 +0100
patch 8.2.0283: Vim9: failing to load script var not tested
Problem: Vim9: failing to load script var not tested.
Solution: Add more tests. Fix using s: in old script.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 19 Feb 2020 20:30:04 +0100 |
parents | 260de9ec24d0 |
children | 6321a1960758 |
files | src/testdir/test_vim9_expr.vim src/testdir/test_vim9_script.vim src/version.c src/vim9compile.c |
diffstat | 4 files changed, 14 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -726,6 +726,9 @@ func Test_expr7_fails() call CheckDefFailure("let x = ¬exist", 'E113:') call CheckDefExecFailure("&grepprg = [343]", 'E1051:') + + call CheckDefExecFailure("echo s:doesnt_exist", 'E121:') + call CheckDefExecFailure("echo g:doesnt_exist", 'E121:') endfunc let g:Funcrefs = [function('add')]
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -61,10 +61,10 @@ def Test_assignment() assert_equal('foobar', $ENVVAR) $ENVVAR = '' - appendToMe ..= 'yyy' - assert_equal('xxxyyy', appendToMe) - addToMe += 222 - assert_equal(333, addToMe) + s:appendToMe ..= 'yyy' + assert_equal('xxxyyy', s:appendToMe) + s:addToMe += 222 + assert_equal(333, s:addToMe) enddef func Test_assignment_failure()
--- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 283, +/**/ 282, /**/ 281,
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -1513,9 +1513,9 @@ compile_load_scriptvar(cctx_T *cctx, cha int idx = get_script_item_idx(current_sctx.sc_sid, name, FALSE); imported_T *import; - if (idx == -1) + if (idx == -1 || si->sn_version != SCRIPT_VERSION_VIM9) { - // variable exists but is not in sn_var_vals: old style script. + // variable is not in sn_var_vals: old style script. return generate_OLDSCRIPT(cctx, ISN_LOADS, name, current_sctx.sc_sid, &t_any); } @@ -1627,7 +1627,9 @@ compile_load(char_u **arg, char_u *end, || (len == 5 && STRNCMP("false", *arg, 5) == 0)) res = generate_PUSHBOOL(cctx, **arg == 't' ? VVAL_TRUE : VVAL_FALSE); - else + else if (SCRIPT_ITEM(current_sctx.sc_sid)->sn_version + == SCRIPT_VERSION_VIM9) + // in Vim9 script "var" can be script-local. res = compile_load_scriptvar(cctx, name); } }