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
index 91867f2..5a25147 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -3166,6 +3166,23 @@
&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 62692b8..fe2a7ad 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1503,
+/**/
1502,
/**/
1501,
diff --git a/src/vim9script.c b/src/vim9script.c
index e04c0f0..b9dc5d7 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -564,6 +564,10 @@
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)
{