From 06f9c6940a88d132c85eb2a1b5034fa7653518ce Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Sep 2020 21:27:40 +0200 Subject: 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) --- src/testdir/test_vim9_assign.vim | 10 ++++++++++ src/version.c | 2 ++ src/vim9compile.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 5d6dec1106..cd3ba8ce62 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -567,6 +567,16 @@ def Test_assignment_vim9script() 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 60ab7d1d6c..4b459f2a6e 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1764, /**/ 1763, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index e4f3a906e3..830e8bb9b6 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -4899,7 +4899,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) { 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 = -- cgit v1.2.3