diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 91867f2202..5a251473cd 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -3166,6 +3166,23 @@ def Test_vim9_autoload() &rtp = save_rtp enddef +def Test_script_var_in_autocmd() + # using a script variable from an autocommand, defined in a :def function in a + # legacy Vim script, cannot check the variable type. + let lines =<< trim END + let s:counter = 1 + def s:Func() + au! CursorHold + au CursorHold * s:counter += 1 + enddef + call s:Func() + doau CursorHold + call assert_equal(2, s:counter) + au! CursorHold + END + CheckScriptSuccess(lines) +enddef + def Test_cmdline_win() # if the Vim syntax highlighting uses Vim9 constructs they can be used from # the command line window. diff --git a/src/version.c b/src/version.c index 62692b82fb..fe2a7ad18e 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1503, /**/ 1502, /**/ diff --git a/src/vim9script.c b/src/vim9script.c index e04c0f0c2e..b9dc5d7f2e 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -564,6 +564,10 @@ check_script_var_type(typval_T *dest, typval_T *value, char_u *name) scriptitem_T *si = SCRIPT_ITEM(current_sctx.sc_sid); int idx; + if (si->sn_version != SCRIPT_VERSION_VIM9) + // legacy script doesn't store variable types + return OK; + // Find the svar_T in sn_var_vals. for (idx = 0; idx < si->sn_var_vals.ga_len; ++idx) {