diff src/job.c @ 25384:e8e2c4d33b9b v8.2.3229

patch 8.2.3229: Vim9: runtime and compile time type checks are not the same Commit: https://github.com/vim/vim/commit/4490ec4e839e45a2e6923c265c7e9e64c240b805 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Tue Jul 27 22:00:44 2021 +0200 patch 8.2.3229: Vim9: runtime and compile time type checks are not the same Problem: Vim9: runtime and compile time type checks are not the same. Solution: Add more runtime type checks for builtin functions. (Yegappan Lakshmanan, closes #8646)
author Bram Moolenaar <Bram@vim.org>
date Tue, 27 Jul 2021 22:15:06 +0200
parents 75031a22be39
children 0082503ff2ff
line wrap: on
line diff
--- a/src/job.c
+++ b/src/job.c
@@ -1714,6 +1714,9 @@ f_prompt_getprompt(typval_T *argvars, ty
     rettv->v_type = VAR_STRING;
     rettv->vval.v_string = NULL;
 
+    if (in_vim9script() && check_for_buffer_arg(argvars, 0) == FAIL)
+	return;
+
     buf = tv_get_buf_from_arg(&argvars[0]);
     if (buf == NULL)
 	return;
@@ -1776,8 +1779,12 @@ get_job_arg(typval_T *tv)
     void
 f_job_getchannel(typval_T *argvars, typval_T *rettv)
 {
-    job_T	*job = get_job_arg(&argvars[0]);
+    job_T	*job;
 
+    if (in_vim9script() && check_for_job_arg(argvars, 0) == FAIL)
+	return;
+
+    job = get_job_arg(&argvars[0]);
     if (job != NULL)
     {
 	rettv->v_type = VAR_CHANNEL;
@@ -1864,10 +1871,14 @@ job_info_all(list_T *l)
     void
 f_job_info(typval_T *argvars, typval_T *rettv)
 {
+    if (in_vim9script() && check_for_opt_job_arg(argvars, 0) == FAIL)
+	return;
+
     if (argvars[0].v_type != VAR_UNKNOWN)
     {
-	job_T	*job = get_job_arg(&argvars[0]);
+	job_T	*job;
 
+	job = get_job_arg(&argvars[0]);
 	if (job != NULL && rettv_dict_alloc(rettv) != FAIL)
 	    job_info(job, rettv->vval.v_dict);
     }
@@ -1922,6 +1933,9 @@ f_job_start(typval_T *argvars, typval_T 
     void
 f_job_status(typval_T *argvars, typval_T *rettv)
 {
+    if (in_vim9script() && check_for_job_arg(argvars, 0) == FAIL)
+	return;
+
     if (argvars[0].v_type == VAR_JOB && argvars[0].vval.v_job == NULL)
     {
 	// A job that never started returns "fail".