Patch 8.2.3261

2 views
Skip to first unread message

Bram Moolenaar

unread,
Jul 31, 2021, 4:04:31 PM7/31/21
to vim...@googlegroups.com

Patch 8.2.3261
Problem: Vim9: when compiling repeat(123, N) return type is number.
Solution: Make return type a string. (closes #8664)
Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim


*** ../vim-8.2.3260/src/evalfunc.c 2021-07-30 21:32:41.444722506 +0200
--- src/evalfunc.c 2021-07-31 22:02:29.732345656 +0200
***************
*** 931,936 ****
--- 931,943 ----
return argtypes[0];
return &t_void;
}
+ static type_T *
+ ret_repeat(int argcount UNUSED, type_T **argtypes)
+ {
+ if (argtypes[0] == &t_number)
+ return &t_string;
+ return argtypes[0];
+ }
// for map(): returns first argument but item type may differ
static type_T *
ret_first_cont(int argcount UNUSED, type_T **argtypes)
***************
*** 1813,1819 ****
{"rename", 2, 2, FEARG_1, arg2_string,
ret_number_bool, f_rename},
{"repeat", 2, 2, FEARG_1, arg2_repeat,
! ret_first_arg, f_repeat},
{"resolve", 1, 1, FEARG_1, arg1_string,
ret_string, f_resolve},
{"reverse", 1, 1, FEARG_1, arg1_list_or_blob,
--- 1820,1826 ----
{"rename", 2, 2, FEARG_1, arg2_string,
ret_number_bool, f_rename},
{"repeat", 2, 2, FEARG_1, arg2_repeat,
! ret_repeat, f_repeat},
{"resolve", 1, 1, FEARG_1, arg1_string,
ret_string, f_resolve},
{"reverse", 1, 1, FEARG_1, arg1_list_or_blob,
*** ../vim-8.2.3260/src/testdir/test_vim9_builtin.vim 2021-07-31 19:12:54.100411000 +0200
--- src/testdir/test_vim9_builtin.vim 2021-07-31 22:02:10.868399546 +0200
***************
*** 2558,2566 ****
def Test_repeat()
CheckDefAndScriptFailure2(['repeat(1.1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1224: String, Number or List required for argument 1')
CheckDefAndScriptFailure2(['repeat({a: 10}, 2)'], 'E1013: Argument 1: type mismatch, expected string but got dict<', 'E1224: String, Number or List required for argument 1')
! assert_equal('aaa', repeat('a', 3))
! assert_equal('111', repeat(1, 3))
! assert_equal([1, 1, 1], repeat([1], 3))
enddef

def Test_resolve()
--- 2558,2572 ----
def Test_repeat()
CheckDefAndScriptFailure2(['repeat(1.1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1224: String, Number or List required for argument 1')
CheckDefAndScriptFailure2(['repeat({a: 10}, 2)'], 'E1013: Argument 1: type mismatch, expected string but got dict<', 'E1224: String, Number or List required for argument 1')
! var lines =<< trim END
! assert_equal('aaa', repeat('a', 3))
! assert_equal('111', repeat(1, 3))
! assert_equal([1, 1, 1], repeat([1], 3))
! var s = '-'
! s ..= repeat(5, 3)
! assert_equal('-555', s)
! END
! CheckDefAndScriptSuccess(lines)
enddef

def Test_resolve()
*** ../vim-8.2.3260/src/version.c 2021-07-31 21:44:31.747825431 +0200
--- src/version.c 2021-07-31 22:03:31.644169572 +0200
***************
*** 757,758 ****
--- 757,760 ----
{ /* Add new patch number below this line */
+ /**/
+ 3261,
/**/

--
GALAHAD: No. Look, I can tackle this lot single-handed!
GIRLS: Yes, yes, let him Tackle us single-handed!
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages