Mercurial > vim
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".