changeset 25593:c6277019b8c1 v8.2.3333

patch 8.2.3333: Vim9: not enough tests run with Vim9 Commit: https://github.com/vim/vim/commit/3e9c0b9608736e7d888f3141443f8754143364d7 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 12 10:39:10 2021 +0200 patch 8.2.3333: Vim9: not enough tests run with Vim9 Problem: Vim9: not enough tests run with Vim9. Solution: Run a few more tests in Vim9 script and :def function.
author Bram Moolenaar <Bram@vim.org>
date Thu, 12 Aug 2021 10:45:02 +0200
parents 9d0e0092096b
children 174cf06af294
files src/testdir/test_listdict.vim src/testdir/vim9.vim src/version.c
diffstat 3 files changed, 47 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -457,6 +457,19 @@ func Test_dict_func_remove_in_use()
   endfunc
   let expected = 'a:' . string(get(d, 'func'))
   call assert_equal(expected, d.func(string(remove(d, 'func'))))
+
+  " similar, in a way it also works in Vim9
+  let lines =<< trim END
+      VAR d = {1: 1, 2: 'x'}
+      func GetArg(a)
+        return "a:" .. a:a
+      endfunc
+      LET d.func = function('GetArg')
+      VAR expected = 'a:' .. string(get(d, 'func'))
+      call assert_equal(expected, d.func(string(remove(d, 'func'))))
+  END
+  call CheckTransLegacySuccess(lines)
+  call CheckTransVim9Success(lines)
 endfunc
 
 func Test_dict_literal_keys()
--- a/src/testdir/vim9.vim
+++ b/src/testdir/vim9.vim
@@ -107,7 +107,7 @@ def CheckDefAndScriptFailure(lines: list
   CheckScriptFailure(['vim9script'] + lines, error, lnum + 1)
 enddef
 
-" As CheckDefAndScriptFailure() but with two different exepected errors.
+" As CheckDefAndScriptFailure() but with two different expected errors.
 def CheckDefAndScriptFailure2(
   	lines: list<string>,
 	errorDef: string,
@@ -166,22 +166,42 @@ func CheckLegacyFailure(lines, error)
   endtry
 endfunc
 
+" Execute "lines" in a legacy function, translated as in
+" CheckLegacyAndVim9Success()
+def CheckTransLegacySuccess(lines: list<string>)
+  var legacylines = lines->mapnew((_, v) =>
+  				v->substitute('\<VAR\>', 'let', 'g')
+		           	 ->substitute('\<LET\>', 'let', 'g')
+		           	 ->substitute('#"', ' "', 'g'))
+  CheckLegacySuccess(legacylines)
+enddef
+
+" Execute "lines" in a :def function, translated as in
+" CheckLegacyAndVim9Success()
+def CheckTransDefSuccess(lines: list<string>)
+  var vim9lines = lines->mapnew((_, v) =>
+  				v->substitute('\<VAR\>', 'var', 'g')
+		           	 ->substitute('\<LET ', '', 'g'))
+  CheckDefSuccess(vim9lines)
+enddef
+
+" Execute "lines" in a Vim9 script, translated as in
+" CheckLegacyAndVim9Success()
+def CheckTransVim9Success(lines: list<string>)
+  var vim9lines = lines->mapnew((_, v) =>
+  				v->substitute('\<VAR\>', 'var', 'g')
+		           	 ->substitute('\<LET ', '', 'g'))
+  CheckScriptSuccess(['vim9script'] + vim9lines)
+enddef
+
 " Execute "lines" in a legacy function, :def function and Vim9 script.
 " Use 'VAR' for a declaration.
 " Use 'LET' for an assignment
 " Use ' #"' for a comment
 def CheckLegacyAndVim9Success(lines: list<string>)
-  var legacylines = lines->mapnew((_, v) =>
-  				v->substitute('\<VAR\>', 'let', 'g')
-		           	 ->substitute('\<LET\>', 'let', 'g')
-		           	 ->substitute('#"', ' "', 'g'))
-  CheckLegacySuccess(legacylines)
-
-  var vim9lines = lines->mapnew((_, v) =>
-  				v->substitute('\<VAR\>', 'var', 'g')
-		           	 ->substitute('\<LET ', '', 'g'))
-  CheckDefSuccess(vim9lines)
-  CheckScriptSuccess(['vim9script'] + vim9lines)
+  CheckTransLegacySuccess(lines)
+  CheckTransDefSuccess(lines)
+  CheckTransVim9Success(lines)
 enddef
 
 " Execute "lines" in a legacy function, :def function and Vim9 script.
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3333,
+/**/
     3332,
 /**/
     3331,