# HG changeset patch # User Bram Moolenaar # Date 1598040004 -7200 # Node ID f4e21796f47da22171f8b15a723a4f716fe05100 # Parent b81818d441f724b7d17c48879547f53aa4a2789d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script Commit: https://github.com/vim/vim/commit/81e17fbe00fd2ed93b262adc3ba41c86b02e7f46 Author: Bram Moolenaar Date: Fri Aug 21 21:55:43 2020 +0200 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) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim --- 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 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1503, +/**/ 1502, /**/ 1501, diff --git a/src/vim9script.c b/src/vim9script.c --- a/src/vim9script.c +++ b/src/vim9script.c @@ -564,6 +564,10 @@ check_script_var_type(typval_T *dest, ty 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) {