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