patch 8.2.1290: Vim9: cannot replace a global function

Problem:    Vim9: cannot replace a global function.
Solution:   Allow for "!" on a global function. (closes #6524)  Also fix that
            :delfunc on a :def function only made it empty.
diff --git a/src/userfunc.c b/src/userfunc.c
index bf026d8..3e566f3 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1148,6 +1148,8 @@
     func_clear(fp, force);
     if (force || fp->uf_dfunc_idx == 0)
 	func_free(fp, force);
+    else
+	fp->uf_flags |= FC_DEAD;
 }
 
 
@@ -2557,12 +2559,6 @@
     char_u	*heredoc_trimmed = NULL;
     int		vim9script = in_vim9script();
 
-    if (vim9script && eap->forceit)
-    {
-	emsg(_(e_nobang));
-	return NULL;
-    }
-
     /*
      * ":function" without argument: list functions.
      */
@@ -2732,6 +2728,13 @@
     }
     p = skipwhite(p + 1);
 
+    // In Vim9 script only global functions can be redefined.
+    if (vim9script && eap->forceit && !is_global)
+    {
+	emsg(_(e_nobang));
+	goto ret_free;
+    }
+
     ga_init2(&newlines, (int)sizeof(char_u *), 3);
 
     if (!eap->skip && name_arg == NULL)