0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.1073: Vim9: no line break allowed in () expression

Problem:    Vim9: no line break allowed in () expression.
Solution:   Skip a line break.
This commit is contained in:
Bram Moolenaar
2020-06-27 20:46:29 +02:00
parent a0a0c4147f
commit 7a4981b936
3 changed files with 28 additions and 0 deletions

View File

@@ -2453,6 +2453,9 @@ eval5(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
if (op == '.' && *(*arg + 1) == '.') // .. string concatenation if (op == '.' && *(*arg + 1) == '.') // .. string concatenation
++*arg; ++*arg;
*arg = skipwhite(*arg + 1); *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) if (eval6(arg, &var2, evalarg, op == '.') == FAIL)
{ {
clear_tv(rettv); clear_tv(rettv);
@@ -2890,8 +2893,18 @@ eval7(
* nested expression: (expression). * nested expression: (expression).
*/ */
case '(': { case '(': {
int getnext;
*arg = skipwhite(*arg + 1); *arg = skipwhite(*arg + 1);
eval_next_non_blank(*arg, evalarg, &getnext);
if (getnext)
*arg = eval_next_line(evalarg);
ret = eval1(arg, rettv, evalarg); // recursive! ret = eval1(arg, rettv, evalarg); // recursive!
eval_next_non_blank(*arg, evalarg, &getnext);
if (getnext)
*arg = eval_next_line(evalarg);
if (**arg == ')') if (**arg == ')')
++*arg; ++*arg;
else if (ret == OK) else if (ret == OK)

View File

@@ -1137,6 +1137,19 @@ def Test_expr7_parens()
assert_equal(true, !+-+0) assert_equal(true, !+-+0)
enddef 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() def Test_expr7_negate()
assert_equal(-99, -99) assert_equal(-99, -99)
assert_equal(99, --99) assert_equal(99, --99)

View File

@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1073,
/**/ /**/
1072, 1072,
/**/ /**/