mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 8.2.2200: Vim9: lambda without white space around -> is confusing
Problem: Vim9: lambda without white space around -> is confusing. Solution: Require white space in a :def funtion. (issue #7503)
This commit is contained in:
@@ -1541,10 +1541,10 @@ def Test_disassemble_compare()
|
|||||||
['{a: 1} is aDict', 'COMPAREDICT is'],
|
['{a: 1} is aDict', 'COMPAREDICT is'],
|
||||||
['{a: 1} isnot aDict', 'COMPAREDICT isnot'],
|
['{a: 1} isnot aDict', 'COMPAREDICT isnot'],
|
||||||
|
|
||||||
['{->33} == {->44}', 'COMPAREFUNC =='],
|
['{-> 33} == {-> 44}', 'COMPAREFUNC =='],
|
||||||
['{->33} != {->44}', 'COMPAREFUNC !='],
|
['{-> 33} != {-> 44}', 'COMPAREFUNC !='],
|
||||||
['{->33} is {->44}', 'COMPAREFUNC is'],
|
['{-> 33} is {-> 44}', 'COMPAREFUNC is'],
|
||||||
['{->33} isnot {->44}', 'COMPAREFUNC isnot'],
|
['{-> 33} isnot {-> 44}', 'COMPAREFUNC isnot'],
|
||||||
|
|
||||||
['77 == g:xx', 'COMPAREANY =='],
|
['77 == g:xx', 'COMPAREANY =='],
|
||||||
['77 != g:xx', 'COMPAREANY !='],
|
['77 != g:xx', 'COMPAREANY !='],
|
||||||
|
@@ -1863,6 +1863,10 @@ def Test_expr7_lambda()
|
|||||||
END
|
END
|
||||||
CheckDefAndScriptSuccess(lines)
|
CheckDefAndScriptSuccess(lines)
|
||||||
|
|
||||||
|
CheckDefFailure(["var Ref = {a->a + 1}"], 'E720:')
|
||||||
|
CheckDefFailure(["var Ref = {a-> a + 1}"], 'E720:')
|
||||||
|
CheckDefFailure(["var Ref = {a ->a + 1}"], 'E720:')
|
||||||
|
|
||||||
CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1)
|
CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1)
|
||||||
# error is in first line of the lambda
|
# error is in first line of the lambda
|
||||||
CheckDefFailure(["var L = {a -> a + b}"], 'E1001:', 0)
|
CheckDefFailure(["var L = {a -> a + b}"], 'E1001:', 0)
|
||||||
@@ -2538,7 +2542,7 @@ func Test_expr7_fails()
|
|||||||
call CheckDefFailure(["'yes'->", "Echo()"], 'E488: Trailing characters: ->', 1)
|
call CheckDefFailure(["'yes'->", "Echo()"], 'E488: Trailing characters: ->', 1)
|
||||||
|
|
||||||
call CheckDefExecFailure(["[1, 2->len()"], 'E697:', 2)
|
call CheckDefExecFailure(["[1, 2->len()"], 'E697:', 2)
|
||||||
call CheckDefExecFailure(["{a: 1->len()"], 'E451:', 1)
|
call CheckDefExecFailure(["{a: 1->len()"], 'E723:', 2)
|
||||||
call CheckDefExecFailure(["{['a']: 1->len()"], 'E723:', 2)
|
call CheckDefExecFailure(["{['a']: 1->len()"], 'E723:', 2)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
2200,
|
||||||
/**/
|
/**/
|
||||||
2199,
|
2199,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -3916,13 +3916,18 @@ compile_expr7(
|
|||||||
*/
|
*/
|
||||||
case '{': {
|
case '{': {
|
||||||
char_u *start = skipwhite(*arg + 1);
|
char_u *start = skipwhite(*arg + 1);
|
||||||
|
char_u *after = start;
|
||||||
garray_T ga_arg;
|
garray_T ga_arg;
|
||||||
|
|
||||||
// Find out what comes after the arguments.
|
// Find out what comes after the arguments.
|
||||||
ret = get_function_args(&start, '-', NULL,
|
ret = get_function_args(&after, '-', NULL,
|
||||||
&ga_arg, TRUE, NULL, NULL,
|
&ga_arg, TRUE, NULL, NULL,
|
||||||
TRUE, NULL, NULL);
|
TRUE, NULL, NULL);
|
||||||
if (ret != FAIL && *start == '>')
|
if (ret != FAIL && after[0] == '>'
|
||||||
|
&& ((after > start + 2
|
||||||
|
&& VIM_ISWHITE(after[-2]))
|
||||||
|
|| after == start + 1)
|
||||||
|
&& IS_WHITE_OR_NUL(after[1]))
|
||||||
ret = compile_lambda(arg, cctx);
|
ret = compile_lambda(arg, cctx);
|
||||||
else
|
else
|
||||||
ret = compile_dict(arg, cctx, ppconst);
|
ret = compile_dict(arg, cctx, ppconst);
|
||||||
|
Reference in New Issue
Block a user