]> granicus.if.org Git - vim/commitdiff
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type v8.2.1764
authorBram Moolenaar <Bram@vim.org>
Sun, 27 Sep 2020 19:27:40 +0000 (21:27 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 27 Sep 2020 19:27:40 +0000 (21:27 +0200)
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
src/version.c
src/vim9compile.c

index 5d6dec110679ee4315af8e4d8d8ebf0b842e020f..cd3ba8ce6249f68ef83a1ab80fc54a07c0c8ff6f 100644 (file)
@@ -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
index 60ab7d1d6c8c14df1b3f34318616074e94d7a8ae..4b459f2a6e00c98f5ff967b8b088316e09deb749 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1764,
 /**/
     1763,
 /**/
index e4f3a906e3942f451fed4d12b8384d5665589a8a..830e8bb9b6ae5ee5a9c790e22facef73235913c8 100644 (file)
@@ -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 =