patch 8.2.3215: 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. Sort the argument lists.
(Yegappan Lakshmanan, closes #8626)
diff --git a/src/testing.c b/src/testing.c
index 5b2f7af..9f3c294 100644
--- a/src/testing.c
+++ b/src/testing.c
@@ -1193,6 +1193,11 @@
int dragging;
scrollbar_T *sb = NULL;
+ if (check_for_string_arg(argvars, 0) == FAIL
+ || check_for_number_arg(argvars, 1) == FAIL
+ || check_for_number_arg(argvars, 2) == FAIL)
+ return;
+
if (argvars[0].v_type != VAR_STRING
|| (argvars[1].v_type) != VAR_NUMBER
|| (argvars[2].v_type) != VAR_NUMBER)
@@ -1281,14 +1286,11 @@
list_T *l;
listitem_T *li;
- if (argvars[0].v_type != VAR_LIST
- || (argvars[1].v_type) != VAR_NUMBER
- || (argvars[2].v_type) != VAR_NUMBER
- || (argvars[3].v_type) != VAR_NUMBER)
- {
- emsg(_(e_invarg));
+ if (check_for_list_arg(argvars, 0) == FAIL
+ || check_for_number_arg(argvars, 1) == FAIL
+ || check_for_number_arg(argvars, 2) == FAIL
+ || check_for_number_arg(argvars, 3) == FAIL)
return;
- }
row = tv_get_number(&argvars[1]);
col = tv_get_number(&argvars[2]);