diff --git a/src/filepath.c b/src/filepath.c
index 2f3b90f..75662b4 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -861,7 +861,7 @@
     void
 f_executable(typval_T *argvars, typval_T *rettv)
 {
-    if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
 
     // Check in $PATH and also check directly if there is a directory name.
@@ -876,7 +876,7 @@
 {
     char_u *p = NULL;
 
-    if (in_vim9script() && check_for_nonempty_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_nonempty_string_arg(argvars, 0) == FAIL)
 	return;
     (void)mch_can_exe(tv_get_string(&argvars[0]), &p, TRUE);
     rettv->v_type = VAR_STRING;
@@ -893,7 +893,7 @@
     char_u	*p;
     int		n;
 
-    if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
 #ifndef O_NONBLOCK
 # define O_NONBLOCK 0
@@ -918,7 +918,7 @@
     void
 f_filewritable(typval_T *argvars, typval_T *rettv)
 {
-    if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
     rettv->vval.v_number = filewritable(tv_get_string(&argvars[0]));
 }
@@ -942,7 +942,7 @@
 
     rettv->vval.v_string = NULL;
     rettv->v_type = VAR_STRING;
-    if (in_vim9script() && check_for_nonempty_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_nonempty_string_arg(argvars, 0) == FAIL)
 	return;
 
 #ifdef FEAT_SEARCHPATH
@@ -1023,8 +1023,8 @@
     char_u	*fbuf = NULL;
     char_u	buf[NUMBUFLEN];
 
-    if (in_vim9script() && (check_for_string(&argvars[0], 1) == FAIL
-	    || check_for_string(&argvars[1], 2) == FAIL))
+    if (in_vim9script() && (check_for_string_arg(argvars, 0) == FAIL
+	    || check_for_string_arg(argvars, 1) == FAIL))
 	return;
     fname = tv_get_string_chk(&argvars[0]);
     mods = tv_get_string_buf_chk(&argvars[1], buf);
@@ -1135,7 +1135,7 @@
     char_u	*perm = NULL;
     char_u	permbuf[] = "---------";
 
-    if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
     fname = tv_get_string(&argvars[0]);
 
@@ -1154,7 +1154,7 @@
     char_u	*fname;
     stat_T	st;
 
-    if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
 
     fname = tv_get_string(&argvars[0]);
@@ -1184,7 +1184,7 @@
     char_u	*fname;
     stat_T	st;
 
-    if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
     fname = tv_get_string(&argvars[0]);
     if (mch_stat((char *)fname, &st) >= 0)
@@ -1230,7 +1230,7 @@
     stat_T	st;
     char_u	*type = NULL;
 
-    if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL)
+    if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
     fname = tv_get_string(&argvars[0]);
 
@@ -2411,9 +2411,9 @@
     int		error = FALSE;
 
     if (in_vim9script()
-	    && (check_for_string(&argvars[1], 2) == FAIL
-		|| check_for_string(&argvars[2], 3) == FAIL
-		|| check_for_string(&argvars[3], 4) == FAIL))
+	    && (check_for_string_arg(argvars, 1) == FAIL
+		|| check_for_string_arg(argvars, 2) == FAIL
+		|| check_for_string_arg(argvars, 3) == FAIL))
 	return;
     save = (int)tv_get_number_chk(&argvars[0], &error);
     title = tv_get_string_chk(&argvars[1]);
