changeset 21044:dc2ca403a217 v8.2.1073

patch 8.2.1073: Vim9: no line break allowed in () expression Commit: https://github.com/vim/vim/commit/7a4981b93642b5b62018cd8150b3fb0dfa2417d4 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 27 20:46:29 2020 +0200 patch 8.2.1073: Vim9: no line break allowed in () expression Problem: Vim9: no line break allowed in () expression. Solution: Skip a line break.
author Bram Moolenaar <Bram@vim.org>
date Sat, 27 Jun 2020 21:00:03 +0200
parents 94932e8b7716
children e834e0a2a43c
files src/eval.c src/testdir/test_vim9_expr.vim src/version.c
diffstat 3 files changed, 28 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -2453,6 +2453,9 @@ eval5(char_u **arg, typval_T *rettv, eva
 	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)
--- 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)
--- 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,