mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.2.0216: several Vim9 instructions are not tested
Problem: Several Vim9 instructions are not tested. Solution: Add more tests. Fix :disassamble output. Make catch with pattern work.
This commit is contained in:
@@ -4369,13 +4369,33 @@ compile_catch(char_u *arg, cctx_T *cctx UNUSED)
|
||||
}
|
||||
else
|
||||
{
|
||||
char_u *end;
|
||||
char_u *pat;
|
||||
char_u *tofree = NULL;
|
||||
size_t len;
|
||||
|
||||
// Push v:exception, push {expr} and MATCH
|
||||
generate_instr_type(cctx, ISN_PUSHEXC, &t_string);
|
||||
|
||||
if (compile_expr1(&p, cctx) == FAIL)
|
||||
return NULL;
|
||||
end = skip_regexp(p + 1, *p, TRUE, &tofree);
|
||||
if (*end != *p)
|
||||
{
|
||||
semsg(_("E1067: Separator mismatch: %s"), p);
|
||||
vim_free(tofree);
|
||||
return FAIL;
|
||||
}
|
||||
if (tofree == NULL)
|
||||
len = end - (p + 1);
|
||||
else
|
||||
len = end - (tofree + 1);
|
||||
pat = vim_strnsave(p + 1, len);
|
||||
vim_free(tofree);
|
||||
p += len + 2;
|
||||
if (pat == NULL)
|
||||
return FAIL;
|
||||
if (generate_PUSHS(cctx, pat) == FAIL)
|
||||
return FAIL;
|
||||
|
||||
// TODO: check for strings?
|
||||
if (generate_COMPARE(cctx, EXPR_MATCH, FALSE) == FAIL)
|
||||
return NULL;
|
||||
|
||||
|
Reference in New Issue
Block a user