mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
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:
@@ -16,7 +16,6 @@ void restore_vimvar(int idx, typval_T *save_tv);
|
||||
list_T *heredoc_get(exarg_T *eap, char_u *cmd, int script_get);
|
||||
void ex_let(exarg_T *eap);
|
||||
void ex_const(exarg_T *eap);
|
||||
void ex_let_const(exarg_T *eap, int redefine);
|
||||
int ex_let_vars(char_u *arg_start, typval_T *tv, int copy, int semicolon, int var_count, int flags, char_u *op);
|
||||
char_u *skip_var_list(char_u *arg, int include_type, int *var_count, int *semicolon);
|
||||
void list_hashtable_vars(hashtab_T *ht, char *prefix, int empty, int *first);
|
||||
|
@@ -23,8 +23,9 @@ void user_func_error(int error, char_u *name);
|
||||
int call_func(char_u *funcname, int len, typval_T *rettv, int argcount_in, typval_T *argvars_in, funcexe_T *funcexe);
|
||||
char_u *trans_function_name(char_u **pp, int *is_global, int skip, int flags, funcdict_T *fdp, partial_T **partial);
|
||||
char_u *untrans_function_name(char_u *name);
|
||||
ufunc_T *def_function(exarg_T *eap, char_u *name_arg, void *context, int compile);
|
||||
ufunc_T *def_function(exarg_T *eap, char_u *name_arg);
|
||||
void ex_function(exarg_T *eap);
|
||||
void ex_defcompile(exarg_T *eap);
|
||||
int eval_fname_script(char_u *p);
|
||||
int translated_function_exists(char_u *name, int is_global);
|
||||
int has_varargs(ufunc_T *ufunc);
|
||||
|
@@ -9,8 +9,7 @@ imported_T *find_imported(char_u *name, size_t len, cctx_T *cctx);
|
||||
char_u *to_name_const_end(char_u *arg);
|
||||
int assignment_len(char_u *p, int *heredoc);
|
||||
int check_vim9_unlet(char_u *name);
|
||||
int add_def_function(ufunc_T *ufunc);
|
||||
void compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx);
|
||||
int compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx);
|
||||
void delete_instr(isn_T *isn);
|
||||
void delete_def_function(ufunc_T *ufunc);
|
||||
void free_def_functions(void);
|
||||
|
Reference in New Issue
Block a user