patch 9.0.2164: Vim9: can use type a func arg/return value
Problem: Vim9: can use type a func arg/return value
Solution: Check if using type as function argument or return value
closes: #13675
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/vim9execute.c b/src/vim9execute.c
index d357fc4..882b13c 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -398,6 +398,9 @@
if (argv[i].v_type == VAR_SPECIAL
&& argv[i].vval.v_number == VVAL_NONE)
continue;
+ // only pass values to user functions, never types
+ if (check_typval_is_value(&argv[i]) == FAIL)
+ return FAIL;
if (i < ufunc->uf_args.ga_len && ufunc->uf_arg_types != NULL)
type = ufunc->uf_arg_types[i];
@@ -4462,6 +4465,12 @@
garray_T *trystack = &ectx->ec_trystack;
trycmd_T *trycmd = NULL;
+ ///////////////////////////////////////////////////
+ // TODO: If FAIL, line number in output not correct
+ ///////////////////////////////////////////////////
+ if (check_typval_is_value(STACK_TV_BOT(-1)) == FAIL)
+ goto theend;
+
if (trystack->ga_len > 0)
trycmd = ((trycmd_T *)trystack->ga_data)
+ trystack->ga_len - 1;