patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Problem: Vim9: no error when assigning to script var with wrong type.
Solution: Fix off-by-one error. (closes #7028)
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 5d6dec1..cd3ba8c 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -567,6 +567,16 @@
assert_equal(44, t)
END
CheckScriptSuccess(lines)
+
+ lines =<< trim END
+ vim9script
+ var n: number
+ def Func()
+ n = 'string'
+ enddef
+ defcompile
+ END
+ CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got string')
enddef
def Mess(): string
diff --git a/src/version.c b/src/version.c
index 60ab7d1..4b459f2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1764,
+/**/
1763,
/**/
1762,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index e4f3a90..830e8bb 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -4899,7 +4899,7 @@
{
scriptvar_idx = get_script_item_idx(scriptvar_sid,
rawname, TRUE);
- if (scriptvar_idx > 0)
+ if (scriptvar_idx >= 0)
{
scriptitem_T *si = SCRIPT_ITEM(scriptvar_sid);
svar_T *sv =