summaryrefslogtreecommitdiffstats
path: root/src/evalvars.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-27 18:06:45 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-27 18:06:45 +0200
commite40fbc2ca9fda07332a4da5af1fcaba91bed865b (patch)
tree66b7aa861de9c07cc5d04c5647f0bee8d61cb19e /src/evalvars.c
parentab19d495fd880b25a38d58cbeb5b21e4d0ee5835 (diff)
patch 8.2.1071: Vim9: no line break allowed inside a lambdav8.2.1071
Problem: Vim9: no line break allowed inside a lambda. Solution: Handle line break inside a lambda in Vim9 script.
Diffstat (limited to 'src/evalvars.c')
-rw-r--r--src/evalvars.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index 7de7c1d1ef..0acbd7bcf1 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -797,12 +797,14 @@ ex_let(exarg_T *eap)
if (eap->skip)
++emsg_skip;
+ CLEAR_FIELD(evalarg);
evalarg.eval_flags = eap->skip ? 0 : EVAL_EVALUATE;
evalarg.eval_cookie = eap->getline == getsourceline
? eap->cookie : NULL;
i = eval0(expr, &rettv, eap, &evalarg);
if (eap->skip)
--emsg_skip;
+ vim_free(evalarg.eval_tofree);
}
if (eap->skip)
{
@@ -1125,7 +1127,7 @@ list_arg_vars(exarg_T *eap, char_u *arg, int *first)
{
// handle d.key, l[idx], f(expr)
arg_subsc = arg;
- if (handle_subscript(&arg, &tv, EVAL_EVALUATE, TRUE)
+ if (handle_subscript(&arg, &tv, &EVALARG_EVALUATE, TRUE)
== FAIL)
error = TRUE;
else
@@ -3341,7 +3343,7 @@ var_exists(char_u *var)
if (n)
{
// handle d.key, l[idx], f(expr)
- n = (handle_subscript(&var, &tv, EVAL_EVALUATE, FALSE) == OK);
+ n = (handle_subscript(&var, &tv, &EVALARG_EVALUATE, FALSE) == OK);
if (n)
clear_tv(&tv);
}