summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-27 20:46:29 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-27 20:46:29 +0200
commit7a4981b93642b5b62018cd8150b3fb0dfa2417d4 (patch)
tree234824ae083f16be5bcccd8d534fc1b3715b1812
parenta0a0c4147fd966e0cd923a2bbfb84b14b15a297e (diff)
patch 8.2.1073: Vim9: no line break allowed in () expressionv8.2.1073
Problem: Vim9: no line break allowed in () expression. Solution: Skip a line break.
-rw-r--r--src/eval.c13
-rw-r--r--src/testdir/test_vim9_expr.vim13
-rw-r--r--src/version.c2
3 files changed, 28 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index e1a33df608..86d81fa09e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2453,6 +2453,9 @@ eval5(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
if (op == '.' && *(*arg + 1) == '.') // .. string concatenation
++*arg;
*arg = skipwhite(*arg + 1);
+ eval_next_non_blank(*arg, evalarg, &getnext);
+ if (getnext)
+ *arg = eval_next_line(evalarg);
if (eval6(arg, &var2, evalarg, op == '.') == FAIL)
{
clear_tv(rettv);
@@ -2890,8 +2893,18 @@ eval7(
* nested expression: (expression).
*/
case '(': {
+ int getnext;
+
*arg = skipwhite(*arg + 1);
+ eval_next_non_blank(*arg, evalarg, &getnext);
+ if (getnext)
+ *arg = eval_next_line(evalarg);
+
ret = eval1(arg, rettv, evalarg); // recursive!
+
+ eval_next_non_blank(*arg, evalarg, &getnext);
+ if (getnext)
+ *arg = eval_next_line(evalarg);
if (**arg == ')')
++*arg;
else if (ret == OK)
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 0a883f9306..0d2a2b0bfb 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1137,6 +1137,19 @@ def Test_expr7_parens()
assert_equal(true, !+-+0)
enddef
+def Test_expr7_parens_vim9script()
+ let lines =<< trim END
+ vim9script
+ let s = (
+ 'one'
+ ..
+ 'two'
+ )
+ assert_equal('onetwo', s)
+ END
+ CheckScriptSuccess(lines)
+enddef
+
def Test_expr7_negate()
assert_equal(-99, -99)
assert_equal(99, --99)
diff --git a/src/version.c b/src/version.c
index 51a93365f1..4184a69f35 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1073,
+/**/
1072,
/**/
1071,