1
0
forked from aniani/vim

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:
Bram Moolenaar
2020-02-05 22:10:05 +01:00
parent a78e9c61a0
commit ff80cb6807
4 changed files with 78 additions and 7 deletions

View File

@@ -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;