patch 8.2.1643: Vim9: :defcompile compiles dead functions
Problem: Vim9: :defcompile compiles dead functions.
Solution: Skip over dead functions.
diff --git a/src/userfunc.c b/src/userfunc.c
index d918903..d5bdadc 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3583,7 +3583,8 @@
}
/*
- * :defcompile - compile all :def functions in the current script.
+ * :defcompile - compile all :def functions in the current script that need to
+ * be compiled. Except dead functions.
*/
void
ex_defcompile(exarg_T *eap UNUSED)
@@ -3600,7 +3601,8 @@
--todo;
ufunc = HI2UF(hi);
if (ufunc->uf_script_ctx.sc_sid == current_sctx.sc_sid
- && ufunc->uf_def_status == UF_TO_BE_COMPILED)
+ && ufunc->uf_def_status == UF_TO_BE_COMPILED
+ && (ufunc->uf_flags & FC_DEAD) == 0)
{
compile_def_function(ufunc, FALSE, NULL);