summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-03-17 21:29:29 +0100
committerBram Moolenaar <Bram@vim.org>2021-03-17 21:29:29 +0100
commit5f91e74bf968c9033474086b2d9cb457281c8aa6 (patch)
tree041be0bd7bf2994d992dc288ef301d719d0daa5d
parent3f32788000258aabe078b426e3d71962bee9d2d1 (diff)
downloadvim-git-5f91e74bf968c9033474086b2d9cb457281c8aa6.tar.gz
patch 8.2.2619: Vim9: no test for return type of lambdav8.2.2619
Problem: Vim9: no test for return type of lambda. Solution: Add a test.
-rw-r--r--src/testdir/test_vim9_func.vim15
-rw-r--r--src/version.c2
2 files changed, 17 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 73d8e37aa..2697c29e4 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -752,11 +752,26 @@ def Test_call_lambda_args()
CheckDefFailure(lines, 'E1167:')
enddef
+def FilterWithCond(x: string, Cond: func(string): bool): bool
+ return Cond(x)
+enddef
+
def Test_lambda_return_type()
var lines =<< trim END
var Ref = (): => 123
END
CheckDefAndScriptFailure(lines, 'E1157:', 1)
+
+ # this works
+ for x in ['foo', 'boo']
+ echo FilterWithCond(x, (v) => v =~ '^b')
+ endfor
+
+ # this fails
+ lines =<< trim END
+ echo FilterWithCond('foo', (v) => v .. '^b')
+ END
+ CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected func(string): bool but got func(any): string', 1)
enddef
def Test_lambda_uses_assigned_var()
diff --git a/src/version.c b/src/version.c
index 6ac96acbd..74eec468a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2619,
+/**/
2618,
/**/
2617,