changeset 32456:d23a137f43c0 v9.0.1559

patch 9.0.1559: function argument types not always checked Commit: https://github.com/vim/vim/commit/2ba51236fb7c27fe16dad4c44242f00e17c19726 Author: Bram Moolenaar <Bram@vim.org> Date: Mon May 15 16:22:38 2023 +0100 patch 9.0.1559: function argument types not always checked Problem: Function argument types not always checked and using v:none may cause an error. Solution: Check argument types once the function type is known. Do not give an error for using v:none as an argument. (closes #12200)
author Bram Moolenaar <Bram@vim.org>
date Mon, 15 May 2023 17:30:05 +0200
parents 09557c2242ab
children 7baa8dbd059e
files src/testdir/test_vim9_func.vim src/userfunc.c src/version.c src/vim9type.c
diffstat 4 files changed, 57 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
index ffb8de48dd0b0645ce7694bfa1782a1f0cef2020..ecdbd5eacaa9980a75d71ad9c3811e73dc2db8ff
GIT binary patch
literal 106125
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
Ui|c1kdg5$4e>M-ZOE}K{55v9Y*#H0l
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3596,6 +3596,34 @@ user_func_error(funcerror_T error, char_
 }
 
 /*
+ * Check the argument types "argvars[argcount]" for "name" using the
+ * information in "funcexe".  When "base_included" then "funcexe->fe_basetv"
+ * is already included in "argvars[]".
+ * Will do nothing if "funcexe->fe_check_type" is NULL or
+ * "funcexe->fe_evaluate" is FALSE;
+ * Returns an FCERR_ value.
+ */
+    static funcerror_T
+may_check_argument_types(
+	funcexe_T   *funcexe,
+	typval_T    *argvars,
+	int	    argcount,
+	int	    base_included,
+	char_u	    *name)
+{
+    if (funcexe->fe_check_type != NULL && funcexe->fe_evaluate)
+    {
+	// Check that the argument types are OK for the types of the funcref.
+	if (check_argument_types(funcexe->fe_check_type,
+			  argvars, argcount,
+			  base_included ? NULL : funcexe->fe_basetv,
+			  name) == FAIL)
+	    return FCERR_OTHER;
+    }
+    return FCERR_NONE;
+}
+
+/*
  * Call a function with its resolved parameters
  *
  * Return FAIL when the function can't be called,  OK otherwise.
@@ -3691,15 +3719,10 @@ call_func(
 	}
     }
 
-    if (error == FCERR_NONE && funcexe->fe_check_type != NULL
-						       && funcexe->fe_evaluate)
-    {
-	// Check that the argument types are OK for the types of the funcref.
-	if (check_argument_types(funcexe->fe_check_type,
-					 argvars, argcount, funcexe->fe_basetv,
-				     (name != NULL) ? name : funcname) == FAIL)
-	    error = FCERR_OTHER;
-    }
+    if (error == FCERR_NONE)
+	// check the argument types if possible
+	error = may_check_argument_types(funcexe, argvars, argcount, FALSE,
+					     (name != NULL) ? name : funcname);
 
     if (error == FCERR_NONE && funcexe->fe_evaluate)
     {
@@ -3761,10 +3784,20 @@ call_func(
 		error = FCERR_DELETED;
 	    else if (fp != NULL)
 	    {
+		int need_arg_check = FALSE;
+		if (funcexe->fe_check_type == NULL)
+		{
+		    funcexe->fe_check_type = fp->uf_func_type;
+		    need_arg_check = TRUE;
+		}
+
 		if (funcexe->fe_argv_func != NULL)
+		{
 		    // postponed filling in the arguments, do it now
 		    argcount = funcexe->fe_argv_func(argcount, argvars,
-					       argv_clear, fp);
+							       argv_clear, fp);
+		    need_arg_check = TRUE;
+		}
 
 		if (funcexe->fe_basetv != NULL)
 		{
@@ -3774,9 +3807,16 @@ call_func(
 		    argcount++;
 		    argvars = argv;
 		    argv_base = 1;
+		    need_arg_check = TRUE;
 		}
 
-		error = call_user_func_check(fp, argcount, argvars, rettv,
+		// Check the argument types now that the function type and all
+		// argument values are known, if not done above.
+		if (need_arg_check)
+		    error = may_check_argument_types(funcexe, argvars, argcount,
+				       TRUE, (name != NULL) ? name : funcname);
+		if (error == FCERR_NONE || error == FCERR_UNKNOWN)
+		    error = call_user_func_check(fp, argcount, argvars, rettv,
 							    funcexe, selfdict);
 	    }
 	}
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1559,
+/**/
     1558,
 /**/
     1557,
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -970,7 +970,10 @@ check_argument_types(
 	}
 	else
 	    expected = type->tt_args[i];
-	if (check_typval_arg_type(expected, tv, NULL, i + 1) == FAIL)
+
+	// check the type, unless the value is v:none
+	if ((tv->v_type != VAR_SPECIAL || tv->vval.v_number != VVAL_NONE)
+		   && check_typval_arg_type(expected, tv, NULL, i + 1) == FAIL)
 	    return FAIL;
     }
     return OK;