patch 8.2.1062: Vim9: no line break allowed inside "cond ? val1 : val2"
Problem: Vim9: no line break allowed inside "cond ? val1 : val2".
Solution: Check for operator after line break.
diff --git a/src/eval.c b/src/eval.c
index 0402b36..fe53632 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1892,13 +1892,17 @@
int
eval1(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
{
+ char_u *p;
+ int getnext;
+
/*
* Get the first variable.
*/
if (eval2(arg, rettv, evalarg) == FAIL)
return FAIL;
- if ((*arg)[0] == '?')
+ p = eval_next_non_blank(*arg, evalarg, &getnext);
+ if (*p == '?')
{
int result;
typval_T var2;
@@ -1906,6 +1910,9 @@
int orig_flags;
int evaluate;
+ if (getnext)
+ *arg = eval_next_line(evalarg);
+
if (evalarg == NULL)
{
CLEAR_FIELD(nested_evalarg);
@@ -1942,13 +1949,16 @@
/*
* Check for the ":".
*/
- if ((*arg)[0] != ':')
+ p = eval_next_non_blank(*arg, evalarg, &getnext);
+ if (*p != ':')
{
emsg(_(e_missing_colon));
if (evaluate && result)
clear_tv(rettv);
return FAIL;
}
+ if (getnext)
+ *arg = eval_next_line(evalarg);
/*
* Get the third variable. Recursive!