diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-03-30 21:28:39 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-03-30 21:28:39 +0200 |
commit | 01b3862956260fdb5fb81b81a28f4749a92699c0 (patch) | |
tree | 729f71d5e03e96e07b75037db2054d34532755b3 | |
parent | 92dba36fc8742fdb51b16d9bb967ef184b4babc1 (diff) |
patch 8.2.0485: Vim9 script test failsv8.2.0485
Problem: Vim9 script test fails.
Solution: Stricter condition for adding new local variable.
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/version.c b/src/version.c index 8a8c45c14f..c5f1a85cbb 100644 --- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 485, +/**/ 484, /**/ 483, diff --git a/src/vim9compile.c b/src/vim9compile.c index 1e8cd03d02..18fb549cc8 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -3446,6 +3446,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) size_t varlen; garray_T *instr = &cctx->ctx_instr; int idx = -1; + int new_local = FALSE; char_u *op; int opt_type; assign_dest_T dest = dest_local; @@ -3660,6 +3661,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) idx = reserve_local(cctx, arg, varlen, cmdidx == CMD_const, type); if (idx < 0) goto theend; + new_local = TRUE; } if (heredoc) @@ -3721,12 +3723,12 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) // Compile the expression. Temporarily hide the new local variable // here, it is not available to this expression. - if (idx >= 0) + if (new_local) --cctx->ctx_locals.ga_len; instr_count = instr->ga_len; p = skipwhite(p + oplen); r = compile_expr1(&p, cctx); - if (idx >= 0) + if (new_local) ++cctx->ctx_locals.ga_len; if (r == FAIL) goto theend; |