diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-06-27 18:06:45 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-06-27 18:06:45 +0200 |
commit | e40fbc2ca9fda07332a4da5af1fcaba91bed865b (patch) | |
tree | 66b7aa861de9c07cc5d04c5647f0bee8d61cb19e /src/evalvars.c | |
parent | ab19d495fd880b25a38d58cbeb5b21e4d0ee5835 (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.c | 6 |
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); } |