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:
@@ -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
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user