Patch 8.2.3161
Problem: Vim9: no error when reltime() has invalid arguments.
Solution: Add an error. (closes #8562)
Files: src/time.c, src/testdir/test_vim9_builtin.vim
*** ../vim-8.2.3160/src/time.c 2021-06-02 13:28:11.439120443 +0200
--- src/time.c 2021-07-14 20:50:20.889778521 +0200
***************
*** 178,184 ****
--- 178,188 ----
else if (argvars[1].v_type == VAR_UNKNOWN)
{
if (list2proftime(&argvars[0], &res) == FAIL)
+ {
+ if (in_vim9script())
+ emsg(_(e_invarg));
return;
+ }
profile_end(&res);
}
else
***************
*** 186,192 ****
--- 190,200 ----
// Two arguments: compute the difference.
if (list2proftime(&argvars[0], &start) == FAIL
|| list2proftime(&argvars[1], &res) == FAIL)
+ {
+ if (in_vim9script())
+ emsg(_(e_invarg));
return;
+ }
profile_sub(&res, &start);
}
***************
*** 223,228 ****
--- 231,238 ----
# ifdef FEAT_RELTIME
if (list2proftime(&argvars[0], &tm) == OK)
rettv->vval.v_float = profile_float(&tm);
+ else if (in_vim9script())
+ emsg(_(e_invarg));
# endif
}
# endif
***************
*** 242,247 ****
--- 252,259 ----
# ifdef FEAT_RELTIME
if (list2proftime(&argvars[0], &tm) == OK)
rettv->vval.v_string = vim_strsave((char_u *)profile_msg(&tm));
+ else if (in_vim9script())
+ emsg(_(e_invarg));
# endif
}
*** ../vim-8.2.3160/src/testdir/test_vim9_builtin.vim 2021-07-12
22:15:20.950777281 +0200
--- src/testdir/test_vim9_builtin.vim 2021-07-14 20:49:42.309814504 +0200
***************
*** 1652,1657 ****
--- 1652,1662 ----
enddef
def Test_reltime()
+ CheckFeature reltime
+
+ CheckDefExecAndScriptFailure(['[]->reltime()'], 'E474:')
+ CheckDefExecAndScriptFailure(['[]->reltime([])'], 'E474:')
+
CheckDefFailure(['reltime("x")'], 'E1013: Argument 1: type mismatch,
expected list<number> but got string')
CheckDefFailure(['reltime(["x", "y"])'], 'E1013: Argument 1: type mismatch,
expected list<number> but got list<string>')
CheckDefFailure(['reltime([1, 2], 10)'], 'E1013: Argument 2: type mismatch,
expected list<number> but got number')
***************
*** 1663,1674 ****
--- 1668,1687 ----
enddef
def Test_reltimefloat()
+ CheckFeature reltime
+
+ CheckDefExecAndScriptFailure(['[]->reltimefloat()'], 'E474:')
+
CheckDefFailure(['reltimefloat("x")'], 'E1013: Argument 1: type mismatch,
expected list<number> but got string')
CheckDefFailure(['reltimefloat([1.1])'], 'E1013: Argument 1: type mismatch,
expected list<number> but got list<float>')
assert_true(type(reltimefloat(reltime())) == v:t_float)
enddef
def Test_reltimestr()
+ CheckFeature reltime
+
+ CheckDefExecAndScriptFailure(['[]->reltimestr()'], 'E474:')
+
CheckDefFailure(['reltimestr(true)'], 'E1013: Argument 1: type mismatch,
expected list<number> but got bool')
CheckDefFailure(['reltimestr([true])'], 'E1013: Argument 1: type mismatch,
expected list<number> but got list<bool>')
assert_true(type(reltimestr(reltime())) == v:t_string)
*** ../vim-8.2.3160/src/version.c 2021-07-14 20:00:24.545690127 +0200
--- src/version.c 2021-07-14 21:00:20.221106793 +0200
***************
*** 757,758 ****
--- 757,760 ----
{ /* Add new patch number below this line */
+ /**/
+ 3161,
/**/
--
Amazing but true: If all the salmon caught in Canada in one year were laid
end to end across the Sahara Desert, the smell would be absolutely awful.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202107141915.16EJFkeu1693374%40masaka.moolenaar.net.