diff src/testdir/test_vim9_assign.vim @ 27728:fdc841530372 v8.2.4390

patch 8.2.4390: Vim9: list from declaration with inferred type not set Commit: https://github.com/vim/vim/commit/e88c6b7a5d8b24f8aa9a3e976b78654bae293ae4 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 15 15:37:11 2022 +0000 patch 8.2.4390: Vim9: list from declaration with inferred type not set Problem: Vim9: list from declaration with inferred type does not set the type on the value. Solution: When inferring the type in a variable declaration also set the type of the list or dictionary. (closes #9705) Do not set the type when the member is "any".
author Bram Moolenaar <Bram@vim.org>
date Tue, 15 Feb 2022 16:45:03 +0100
parents 4097434c7c67
children d754ac2f5ac5
line wrap: on
line diff
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1885,6 +1885,19 @@ def Test_var_declaration_fails()
   v9.CheckDefFailure(['const foo: number'], 'E1021:')
 enddef
 
+def Test_var_declaration_inferred()
+  # check that type is set on the list so that extend() fails
+  var lines =<< trim END
+      vim9script
+      def GetList(): list<number>
+        var l = [1, 2, 3]
+        return l
+      enddef
+      echo GetList()->extend(['x'])
+  END
+  v9.CheckScriptFailure(lines, 'E1013:', 6)
+enddef
+
 def Test_script_local_in_legacy()
   # OK to define script-local later but before compiling
   var lines =<< trim END