changeset 27569:f40647a2b36a v8.2.4311

patch 8.2.4311: Vim9: changing script variable type not caught compile time Commit: https://github.com/vim/vim/commit/160afdb1850b8cf56dc8e94acee7a04bc2113992 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 6 17:17:02 2022 +0000 patch 8.2.4311: Vim9: changing script variable type not caught compile time Problem: Vim9: changing script variable type not caught at compile time. Solution: Set the declared type.
author Bram Moolenaar <Bram@vim.org>
date Sun, 06 Feb 2022 18:30:04 +0100
parents efccea5925bc
children f73a56e2c61e
files src/testdir/test_vim9_assign.vim src/version.c src/vim9instr.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
@@ -692,6 +692,16 @@ def Test_extend_list()
   END
   v9.CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 4)
   unlet g:myList
+
+  lines =<< trim END
+      vim9script
+      var lds = [1, 2, 3]
+      def Func()
+          echo lds->extend(['x'])
+      enddef
+      defcompile
+  END
+  v9.CheckScriptFailure(lines, 'E1013:')
 enddef
 
 def Test_extend_dict()
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4311,
+/**/
     4310,
 /**/
     4309,
--- a/src/vim9instr.c
+++ b/src/vim9instr.c
@@ -1040,7 +1040,7 @@ generate_VIM9SCRIPT(
 
     RETURN_OK_IF_SKIP(cctx);
     if (isn_type == ISN_LOADSCRIPT)
-	isn = generate_instr_type(cctx, isn_type, type);
+	isn = generate_instr_type2(cctx, isn_type, type, type);
     else
 	isn = generate_instr_drop(cctx, isn_type, 1);
     if (isn == NULL)