0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.3707: Vim9: constant expression of elseif not recognized

Problem:    Vim9: constant expression of elseif not recognized.
Solution:   Set instruction count before generating the expression.
This commit is contained in:
Bram Moolenaar
2021-11-30 20:57:38 +00:00
parent 42eba04522
commit 90770b746e
3 changed files with 37 additions and 7 deletions

View File

@@ -7785,7 +7785,7 @@ compile_elseif(char_u *arg, cctx_T *cctx)
{
char_u *p = arg;
garray_T *instr = &cctx->ctx_instr;
int instr_count = instr->ga_len;
int instr_count;
isn_T *isn;
scope_T *scope = cctx->ctx_scope;
ppconst_T ppconst;
@@ -7871,19 +7871,15 @@ compile_elseif(char_u *arg, cctx_T *cctx)
cctx->ctx_skip = SKIP_UNKNOWN;
#ifdef FEAT_PROFILE
if (cctx->ctx_compile_type == CT_PROFILE)
{
// the previous block was skipped, need to profile this line
generate_instr(cctx, ISN_PROF_START);
instr_count = instr->ga_len;
}
#endif
if (cctx->ctx_compile_type == CT_DEBUG)
{
// the previous block was skipped, may want to debug this line
generate_instr_debug(cctx);
instr_count = instr->ga_len;
}
}
instr_count = instr->ga_len;
if (compile_expr1(&p, cctx, &ppconst) == FAIL)
{
clear_ppconst(&ppconst);