patch 8.2.2212: Vim9: lambda with => does not work at the script level
Problem: Vim9: lambda with => does not work at the script level.
Solution: Make it work.
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index d5e1b33..ea344fe 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1027,11 +1027,11 @@
# check if assign a lambda to a variable which type is func or any.
var lines =<< trim END
vim9script
- var FuncRef = {->123}
+ var FuncRef = {-> 123}
assert_equal(123, FuncRef())
- var FuncRef_Func: func = {->123}
+ var FuncRef_Func: func = {-> 123}
assert_equal(123, FuncRef_Func())
- var FuncRef_Any: any = {->123}
+ var FuncRef_Any: any = {-> 123}
assert_equal(123, FuncRef_Any())
END
CheckScriptSuccess(lines)
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index c481729..73fdb98 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1953,15 +1953,25 @@
# Lambda returning a dict
var Lmb = () => ({key: 42})
assert_equal({key: 42}, Lmb())
+
+ var RefOne: func(number): string = (a: number): string => 'x'
+ var RefTwo: func(number): any = (a: number): any => 'x'
+
+ var Fx = (a) => ({k1: 0,
+ k2: 1})
+ var Fy = (a) => [0,
+ 1]
END
- CheckDefSuccess(lines)
+ CheckDefAndScriptSuccess(lines)
CheckDefFailure(["var Ref = (a)=>a + 1"], 'E1001:')
CheckDefFailure(["var Ref = (a)=> a + 1"], 'E1001:')
CheckDefFailure(["var Ref = (a) =>a + 1"], 'E1001:')
- CheckDefSuccess(["var Ref: func(number): string = (a: number): string => 'x'"])
- CheckDefSuccess(["var Ref: func(number): any = (a: number): any => 'x'"])
+ CheckScriptFailure(["vim9script", "var Ref = (a)=>a + 1"], 'E1004:')
+ CheckScriptFailure(["vim9script", "var Ref = (a)=> a + 1"], 'E1004:')
+ CheckScriptFailure(["vim9script", "var Ref = (a) =>a + 1"], 'E1004:')
+
CheckDefFailure(["var Ref: func(number): number = (a: number): string => 'x'"], 'E1012:')
CheckDefFailure(["var Ref: func(number): string = (a: number): string => 99"], 'E1012:')
@@ -1978,11 +1988,9 @@
# 'E1106: 2 arguments too many')
# CheckDefFailure(["echo 'asdf'->{a -> a}(x)"], 'E1001:', 1)
- CheckDefSuccess(['var Fx = (a) => ({k1: 0,', ' k2: 1})'])
CheckDefFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2)
CheckDefFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2)
- CheckDefSuccess(['var Fx = (a) => [0,', ' 1]'])
CheckDefFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2)
enddef