forked from aniani/vim
patch 8.2.3188: Vim9: argument types are not checked at compile time
Problem: Vim9: argument types are not checked at compile time. Solution: Add several more type checks, also at runtime. (Yegappan Lakshmanan, closes #8587)
This commit is contained in:
committed by
Bram Moolenaar
parent
9bb0dad0d8
commit
83494b4ac6
@@ -158,6 +158,12 @@ f_prop_add(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
linenr_T start_lnum;
|
||||
colnr_T start_col;
|
||||
|
||||
if (in_vim9script()
|
||||
&& (check_for_number_arg(argvars, 0) == FAIL
|
||||
|| check_for_number_arg(argvars, 1) == FAIL
|
||||
|| check_for_dict_arg(argvars, 2) == FAIL))
|
||||
return;
|
||||
|
||||
start_lnum = tv_get_number(&argvars[0]);
|
||||
start_col = tv_get_number(&argvars[1]);
|
||||
if (start_col < 1)
|
||||
@@ -532,12 +538,21 @@ text_prop_type_by_id(buf_T *buf, int id)
|
||||
void
|
||||
f_prop_clear(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
{
|
||||
linenr_T start = tv_get_number(&argvars[0]);
|
||||
linenr_T end = start;
|
||||
linenr_T start;
|
||||
linenr_T end;
|
||||
linenr_T lnum;
|
||||
buf_T *buf = curbuf;
|
||||
int did_clear = FALSE;
|
||||
|
||||
if (in_vim9script()
|
||||
&& (check_for_number_arg(argvars, 0) == FAIL
|
||||
|| check_for_opt_number_arg(argvars, 1) == FAIL
|
||||
|| (argvars[1].v_type != VAR_UNKNOWN
|
||||
&& check_for_opt_dict_arg(argvars, 2) == FAIL)))
|
||||
return;
|
||||
|
||||
start = tv_get_number(&argvars[0]);
|
||||
end = start;
|
||||
if (argvars[1].v_type != VAR_UNKNOWN)
|
||||
{
|
||||
end = tv_get_number(&argvars[1]);
|
||||
@@ -774,8 +789,7 @@ f_prop_list(typval_T *argvars, typval_T *rettv)
|
||||
|
||||
if (in_vim9script()
|
||||
&& (check_for_number_arg(argvars, 0) == FAIL
|
||||
|| (argvars[1].v_type != VAR_UNKNOWN &&
|
||||
check_for_dict_arg(argvars, 1) == FAIL)))
|
||||
|| check_for_opt_dict_arg(argvars, 1) == FAIL))
|
||||
return;
|
||||
|
||||
lnum = tv_get_number(&argvars[0]);
|
||||
@@ -832,6 +846,14 @@ f_prop_remove(typval_T *argvars, typval_T *rettv)
|
||||
int both;
|
||||
|
||||
rettv->vval.v_number = 0;
|
||||
|
||||
if (in_vim9script()
|
||||
&& (check_for_dict_arg(argvars, 0) == FAIL
|
||||
|| check_for_opt_number_arg(argvars, 1) == FAIL
|
||||
|| (argvars[1].v_type != VAR_UNKNOWN
|
||||
&& check_for_opt_number_arg(argvars, 2) == FAIL)))
|
||||
return;
|
||||
|
||||
if (argvars[0].v_type != VAR_DICT || argvars[0].vval.v_dict == NULL)
|
||||
{
|
||||
emsg(_(e_invarg));
|
||||
|
Reference in New Issue
Block a user