mirror of
https://github.com/neovim/neovim.git
synced 2025-09-18 01:08:20 +00:00
vim-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.
25e0f5863e
Omit stack_top_is_ufunc(): only used by Vim9 script.
This commit is contained in:
@@ -275,6 +275,11 @@ bool cause_errthrow(const char *mesg, bool severe, bool *ignore)
|
||||
(*msg_list)->throw_msg = tmsg;
|
||||
}
|
||||
}
|
||||
|
||||
// Get the source name and lnum now, it may change before
|
||||
// reaching do_errthrow().
|
||||
elem->sfile = estack_sfile();
|
||||
elem->slnum = SOURCING_LNUM;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -289,6 +294,7 @@ static void free_msglist(msglist_T *l)
|
||||
while (messages != NULL) {
|
||||
next = messages->next;
|
||||
xfree(messages->msg);
|
||||
xfree(messages->sfile);
|
||||
xfree(messages);
|
||||
messages = next;
|
||||
}
|
||||
@@ -478,11 +484,18 @@ static int throw_exception(void *value, except_type_T type, char *cmdname)
|
||||
}
|
||||
|
||||
excp->type = type;
|
||||
excp->throw_name = estack_sfile();
|
||||
if (excp->throw_name == NULL) {
|
||||
excp->throw_name = xstrdup("");
|
||||
if (type == ET_ERROR && ((msglist_T *)value)->sfile != NULL) {
|
||||
msglist_T *entry = (msglist_T *)value;
|
||||
excp->throw_name = entry->sfile;
|
||||
entry->sfile = NULL;
|
||||
excp->throw_lnum = entry->slnum;
|
||||
} else {
|
||||
excp->throw_name = estack_sfile();
|
||||
if (excp->throw_name == NULL) {
|
||||
excp->throw_name = xstrdup("");
|
||||
}
|
||||
excp->throw_lnum = SOURCING_LNUM;
|
||||
}
|
||||
excp->throw_lnum = SOURCING_LNUM;
|
||||
|
||||
if (p_verbose >= 13 || debug_break_level > 0) {
|
||||
int save_msg_silent = msg_silent;
|
||||
|
Reference in New Issue
Block a user