patch 8.2.0818: Vim9: using a discovery phase doesn't work well
Problem: Vim9: using a discovery phase doesn't work well.
Solution: Remove the discovery phase, instead compile a function only when
it is used. Add :defcompile to compile def functions earlier.
diff --git a/src/structs.h b/src/structs.h
index 69233a9..e58e644 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1516,6 +1516,9 @@
#if defined(FEAT_EVAL) || defined(PROTO)
typedef struct funccall_S funccall_T;
+# define UF_NOT_COMPILED -2
+# define UF_TO_BE_COMPILED -1
+
/*
* Structure to hold info for a user function.
*/
@@ -1525,7 +1528,7 @@
int uf_flags; // FC_ flags
int uf_calls; // nr of active calls
int uf_cleared; // func_clear() was already called
- int uf_dfunc_idx; // >= 0 for :def function only
+ int uf_dfunc_idx; // UF_NOT_COMPILED, UF_TO_BE_COMPILED or >= 0
garray_T uf_args; // arguments, including optional arguments
garray_T uf_def_args; // default argument expressions