0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

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.
This commit is contained in:
Bram Moolenaar
2020-05-25 22:36:50 +02:00
parent 2eec37926d
commit 25e0f5863e
11 changed files with 125 additions and 41 deletions

View File

@@ -69,14 +69,31 @@ estack_push(etype_T type, char_u *name, long lnum)
* 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
/*