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

patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work

Problem:    Vim9: outdated TODO items, disabled tests that work.
Solution:   Remove TODO items, run tests that work now.  Check that a dict
            item isn't locked.
This commit is contained in:
Bram Moolenaar
2021-12-17 20:15:38 +00:00
parent ddc80aff57
commit 71b7685092
7 changed files with 93 additions and 35 deletions

View File

@@ -915,7 +915,6 @@ call_ufunc(
// The function has been compiled, can call it quickly. For a function
// that was defined later: we can call it directly next time.
// TODO: what if the function was deleted and then defined again?
if (iptr != NULL)
{
delete_instr(iptr);
@@ -933,7 +932,6 @@ call_ufunc(
funcexe.fe_selfdict = selfdict != NULL ? selfdict : dict_stack_get_dict();
// Call the user function. Result goes in last position on the stack.
// TODO: add selfdict if there is one
error = call_user_func_check(ufunc, argcount, argvars,
STACK_TV_BOT(-1), &funcexe, funcexe.fe_selfdict);
@@ -2862,21 +2860,29 @@ exec_instructions(ectx_T *ectx)
char_u *key = tv_idx->vval.v_string;
dictitem_T *di = NULL;
if (key == NULL)
key = (char_u *)"";
if (d != NULL)
di = dict_find(d, key, (int)STRLEN(key));
if (di == NULL)
{
// NULL dict is equivalent to empty dict
SOURCING_LNUM = iptr->isn_lnum;
semsg(_(e_dictkey), key);
if (d != NULL && value_check_lock(
d->dv_lock, NULL, FALSE))
status = FAIL;
}
else
{
// TODO: check for dict or item locked
dictitem_remove(d, di);
SOURCING_LNUM = iptr->isn_lnum;
if (key == NULL)
key = (char_u *)"";
if (d != NULL)
di = dict_find(d, key, (int)STRLEN(key));
if (di == NULL)
{
// NULL dict is equivalent to empty dict
semsg(_(e_dictkey), key);
status = FAIL;
}
else if (var_check_fixed(di->di_flags,
NULL, FALSE)
|| var_check_ro(di->di_flags,
NULL, FALSE))
status = FAIL;
else
dictitem_remove(d, di);
}
}
}