1
0
forked from aniani/vim

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.
This commit is contained in:
Bram Moolenaar
2020-05-24 23:00:18 +02:00
parent f7271e8316
commit 822ba24743
19 changed files with 165 additions and 272 deletions

View File

@@ -1516,6 +1516,9 @@ struct blobvar_S
#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 @@ typedef struct
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