0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script

Problem:    Vim9: error for an autocmd defined in a :def function in legacy
            Vim script.
Solution:   Don't check the variable type. (closes #6758)
This commit is contained in:
Bram Moolenaar 2020-08-21 21:55:43 +02:00
parent 122616d9c1
commit 81e17fbe00
3 changed files with 23 additions and 0 deletions

View File

@ -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.

View File

@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1503,
/**/
1502,
/**/

View File

@ -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)
{