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)
diff --git a/src/job.c b/src/job.c
index 1f90244..892d237 100644
--- a/src/job.c
+++ b/src/job.c
@@ -1714,6 +1714,9 @@
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 @@
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 @@
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 @@
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".