]> granicus.if.org Git - vim/commitdiff
patch 8.2.1073: Vim9: no line break allowed in () expression v8.2.1073
authorBram Moolenaar <Bram@vim.org>
Sat, 27 Jun 2020 18:46:29 +0000 (20:46 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 27 Jun 2020 18:46:29 +0000 (20:46 +0200)
Problem:    Vim9: no line break allowed in () expression.
Solution:   Skip a line break.

src/eval.c
src/testdir/test_vim9_expr.vim
src/version.c

index e1a33df60802830e39718085f53bac3a226b17cd..86d81fa09e44e382f19d15ae895c918bdc9d77d2 100644 (file)
@@ -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)
index 0a883f930667fcb013b8b42a9ad31f9469b575da..0d2a2b0bfbb0ba76680d41527558b97e3ed3e81b 100644 (file)
@@ -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)
index 51a93365f14805756a8a08f70e5af5b38296c52d..4184a69f3537ff3c0fd1b1c112673b9df7350b5c 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1073,
 /**/
     1072,
 /**/