# HG changeset patch # User Bram Moolenaar # Date 1601235008 -7200 # Node ID 685909aa564160e129e338a0e30b143963082172 # Parent 80be8e5a6b18556940f38ad839366f9f212827c3 patch 8.2.1764: Vim9: no error when assigning to script var with wrong type Commit: https://github.com/vim/vim/commit/06f9c6940a88d132c85eb2a1b5034fa7653518ce Author: Bram Moolenaar Date: Sun Sep 27 21:27:40 2020 +0200 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 https://github.com/vim/vim/issues/7028) diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim --- 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 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1764, +/**/ 1763, /**/ 1762, diff --git a/src/vim9compile.c b/src/vim9compile.c --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -4899,7 +4899,7 @@ compile_assignment(char_u *arg, exarg_T { 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 =