summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-03-30 21:28:39 +0200
committerBram Moolenaar <Bram@vim.org>2020-03-30 21:28:39 +0200
commit01b3862956260fdb5fb81b81a28f4749a92699c0 (patch)
tree729f71d5e03e96e07b75037db2054d34532755b3
parent92dba36fc8742fdb51b16d9bb967ef184b4babc1 (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.c2
-rw-r--r--src/vim9compile.c6
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;