changeset 22431:685909aa5641 v8.2.1764

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 <Bram@vim.org> 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)
author Bram Moolenaar <Bram@vim.org>
date Sun, 27 Sep 2020 21:30:08 +0200
parents 80be8e5a6b18
children 3e2826aeca3b
files src/testdir/test_vim9_assign.vim src/version.c src/vim9compile.c
diffstat 3 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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,
--- 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 =