]> granicus.if.org Git - vim/commitdiff
patch 8.2.1132: Vim9: return type of repeat() is not specific enough v8.2.1132
authorBram Moolenaar <Bram@vim.org>
Sun, 5 Jul 2020 14:01:56 +0000 (16:01 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 5 Jul 2020 14:01:56 +0000 (16:01 +0200)
Problem:    Vim9: return type of repeat() is not specific enough.
Solution:   Return the type of the first argument. (closes #6395)

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

index 8d81f151236b29296b28c6a6961f46e1e655c9c9..2cdf186be33de780bb65253a76fc118b0a006745 100644 (file)
@@ -815,10 +815,10 @@ static funcentry_T global_functions[] =
     {"remote_peek",    1, 2, FEARG_1,    ret_number,   f_remote_peek},
     {"remote_read",    1, 2, FEARG_1,    ret_string,   f_remote_read},
     {"remote_send",    2, 3, FEARG_1,    ret_string,   f_remote_send},
-    {"remote_startserver", 1, 1, FEARG_1, ret_void,     f_remote_startserver},
+    {"remote_startserver", 1, 1, FEARG_1, ret_void,    f_remote_startserver},
     {"remove",         2, 3, FEARG_1,    ret_any,      f_remove},
     {"rename",         2, 2, FEARG_1,    ret_number,   f_rename},
-    {"repeat",         2, 2, FEARG_1,    ret_any,      f_repeat},
+    {"repeat",         2, 2, FEARG_1,    ret_first_arg, f_repeat},
     {"resolve",                1, 1, FEARG_1,    ret_string,   f_resolve},
     {"reverse",                1, 1, FEARG_1,    ret_any,      f_reverse},
     {"round",          1, 1, FEARG_1,    ret_float,    FLOAT_FUNC(f_round)},
index 583a232287c142fe2faff4665101009e89530b4e..e8d712f0a741706dec6d376ef3d44fbc87321558 100644 (file)
@@ -596,6 +596,14 @@ def Test_func_type()
   assert_equal(13, funcResult)
 enddef
 
+def Test_repeat_return_type()
+  let res = 0
+  for n in repeat([1], 3)
+    res += n
+  endfor
+  assert_equal(3, res)
+enddef
+
 def Test_func_type_part()
   let RefVoid: func: void
   RefVoid = FuncNoArgNoRet
index 8f85bb7bf03aabfaba2975b55a8924d819cf409b..ed3f34ad4dbe603e680cd83cad0c23a6af5b176c 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1132,
 /**/
     1131,
 /**/