]> granicus.if.org Git - vim/commitdiff
patch 8.2.1797: Vim9: some parts of the code not tested v8.2.1797
authorBram Moolenaar <Bram@vim.org>
Sun, 4 Oct 2020 12:17:32 +0000 (14:17 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 4 Oct 2020 12:17:32 +0000 (14:17 +0200)
Problem:    Vim9: some parts of the code not tested.
Solution:   Add a few tests.

src/testdir/test_vim9_func.vim
src/version.c

index 4f741bb45d923d7441be7f1e5317376d3c7361e6..f3352453fe9557e6ba781f547a1d3e661d078bb5 100644 (file)
@@ -1056,6 +1056,8 @@ def Test_func_type_part()
   CheckDefFailure(['var RefAny: func(): any', 'RefAny = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func()')
   CheckDefFailure(['var RefAny: func(): any', 'RefAny = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func(number)')
 
+  var RefAnyNoArgs: func: any = RefAny
+
   var RefNr: func: number
   RefNr = FuncNoArgRetNumber
   RefNr = FuncOneArgRetNumber
@@ -1100,6 +1102,22 @@ def Test_func_return_type()
   CheckDefFailure(['var str: string', 'str = FuncNoArgRetNumber()'], 'E1012: Type mismatch; expected string but got number')
 enddef
 
+def Test_func_common_type()
+  def FuncOne(n: number): number
+    return n
+  enddef
+  def FuncTwo(s: string): number
+    return len(s)
+  enddef
+  def FuncThree(n: number, s: string): number
+    return n + len(s)
+  enddef
+  var list = [FuncOne, FuncTwo, FuncThree]
+  assert_equal(8, list[0](8))
+  assert_equal(4, list[1]('word'))
+  assert_equal(7, list[2](3, 'word'))
+enddef
+
 def MultiLine(
     arg1: string,
     arg2 = 1234,
@@ -1948,6 +1966,9 @@ def Test_partial_call()
   Xsetlist = function('setqflist', [[], ' '])
   Xsetlist({'title': 'test'})
   getqflist({'title': 1})->assert_equal({'title': 'test'})
+
+  var Len: func: number = function('len', ['word'])
+  assert_equal(4, Len())
 enddef
 
 def Test_cmd_modifier()
index 09109b045684b972466f45360fd52fe5498f1d93..914e4f0844abf47a614735fb075183ae8271fd41 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1797,
 /**/
     1796,
 /**/