patch 8.2.1079: Vim9: no line break allowed in a while loop
Problem: Vim9: no line break allowed in a while loop.
Solution: Update stored loop lines when finding line breaks.
diff --git a/src/eval.c b/src/eval.c
index 6aaa3a6..8204567 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -170,8 +170,11 @@
CLEAR_FIELD(evalarg);
evalarg.eval_flags = skip ? 0 : EVAL_EVALUATE;
- evalarg.eval_cookie = eap != NULL && eap->getline == getsourceline
- ? eap->cookie : NULL;
+ if (eap != NULL && getline_equal(eap->getline, eap->cookie, getsourceline))
+ {
+ evalarg.eval_getline = eap->getline;
+ evalarg.eval_cookie = eap->cookie;
+ }
if (skip)
++emsg_skip;
@@ -1840,10 +1843,9 @@
&& evalarg != NULL
&& evalarg->eval_cookie != NULL
&& (*arg == NUL || (VIM_ISWHITE(arg[-1])
- && (*arg == '"' || *arg == '#')))
- && source_nextline(evalarg->eval_cookie) != NULL)
+ && (*arg == '"' || *arg == '#'))))
{
- char_u *p = source_nextline(evalarg->eval_cookie);
+ char_u *p = getline_peek(evalarg->eval_getline, evalarg->eval_cookie);
if (p != NULL)
{
@@ -1863,7 +1865,7 @@
garray_T *gap = &evalarg->eval_ga;
char_u *line;
- line = getsourceline(0, evalarg->eval_cookie, 0, TRUE);
+ line = evalarg->eval_getline(0, evalarg->eval_cookie, 0, TRUE);
if (gap->ga_itemsize > 0 && ga_grow(gap, 1) == OK)
{
// Going to concatenate the lines after parsing.
@@ -5206,7 +5208,11 @@
CLEAR_FIELD(evalarg);
evalarg.eval_flags = eap->skip ? 0 : EVAL_EVALUATE;
- evalarg.eval_cookie = eap->getline == getsourceline ? eap->cookie : NULL;
+ if (getline_equal(eap->getline, eap->cookie, getsourceline))
+ {
+ evalarg.eval_getline = eap->getline;
+ evalarg.eval_cookie = eap->cookie;
+ }
if (eap->skip)
++emsg_skip;