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/dict.c b/src/dict.c
index 768adf0..82397d5 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -1201,6 +1201,9 @@
     dict_T	*d;
     int		todo;
 
+    if (in_vim9script() && check_for_dict_arg(argvars, 0) == FAIL)
+	return;
+
     if (argvars[0].v_type != VAR_DICT)
     {
 	emsg(_(e_dictreq));
@@ -1318,6 +1321,11 @@
     void
 f_has_key(typval_T *argvars, typval_T *rettv)
 {
+    if (in_vim9script()
+	    && (check_for_dict_arg(argvars, 0) == FAIL
+		|| check_for_string_or_number_arg(argvars, 1) == FAIL))
+	return;
+
     if (argvars[0].v_type != VAR_DICT)
     {
 	emsg(_(e_dictreq));