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)
diff --git a/src/vim9compile.c b/src/vim9compile.c
index b3d591d..7d653a7 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -3915,14 +3915,19 @@
* Dictionary: {'key': val, 'key': val}
*/
case '{': {
- char_u *start = skipwhite(*arg + 1);
- garray_T ga_arg;
+ char_u *start = skipwhite(*arg + 1);
+ char_u *after = start;
+ garray_T ga_arg;
// Find out what comes after the arguments.
- ret = get_function_args(&start, '-', NULL,
+ ret = get_function_args(&after, '-', NULL,
&ga_arg, 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);
else
ret = compile_dict(arg, cctx, ppconst);