patch 8.2.0823: Vim9: script reload test is disabled

Problem:    Vim9: script reload test is disabled.
Solution:   Compile a function in the context of the script where it was
            defined.  Set execution stack for compiled function.  Add a test
            that an error is reported for the right file/function.
diff --git a/src/scriptfile.c b/src/scriptfile.c
index f42c3d0..746a3d3 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -69,14 +69,31 @@
  * Add a user function to the execution stack.
  */
     void
-estack_push_ufunc(etype_T type, ufunc_T *ufunc, long lnum)
+estack_push_ufunc(ufunc_T *ufunc, long lnum)
 {
-    estack_T *entry = estack_push(type,
+    estack_T *entry = estack_push(ETYPE_UFUNC,
 	    ufunc->uf_name_exp != NULL
 				  ? ufunc->uf_name_exp : ufunc->uf_name, lnum);
     if (entry != NULL)
 	entry->es_info.ufunc = ufunc;
 }
+
+/*
+ * Return TRUE if "ufunc" with "lnum" is already at the top of the exe stack.
+ */
+    int
+estack_top_is_ufunc(ufunc_T *ufunc, long lnum)
+{
+    estack_T *entry;
+
+    if (exestack.ga_len == 0)
+	return FALSE;
+    entry = ((estack_T *)exestack.ga_data) + exestack.ga_len - 1;
+    return entry->es_type == ETYPE_UFUNC
+	&& STRCMP( entry->es_name, ufunc->uf_name_exp != NULL
+				    ? ufunc->uf_name_exp : ufunc->uf_name) == 0
+	&& entry->es_lnum == lnum;
+}
 #endif
 
 /*