summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-02-19 20:23:11 +0100
committerBram Moolenaar <Bram@vim.org>2020-02-19 20:23:11 +0100
commitfd1823e0b783c31a5022c7a4d31c34d84ff0a744 (patch)
treefa080e914deb8d16eb6596f457c7c90fc187b76b
parent401d9ffb5a8a40102c000c2d2614aa043f541f90 (diff)
patch 8.2.0283: Vim9: failing to load script var not testedv8.2.0283
Problem: Vim9: failing to load script var not tested. Solution: Add more tests. Fix using s: in old script.
-rw-r--r--src/testdir/test_vim9_expr.vim3
-rw-r--r--src/testdir/test_vim9_script.vim8
-rw-r--r--src/version.c2
-rw-r--r--src/vim9compile.c8
4 files changed, 14 insertions, 7 deletions
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 235aee2105..1b04d02781 100644
--- 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 = &notexist", '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')]
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 0e18e4a1b6..1fb08ab7e8 100644
--- 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()
diff --git a/src/version.c b/src/version.c
index f964607cda..f97c50595b 100644
--- 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,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 8614943fd4..7fe27642af 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -1513,9 +1513,9 @@ compile_load_scriptvar(cctx_T *cctx, char_u *name)
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, cctx_T *cctx, int error)
|| (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);
}
}