changeset 24156:a358fa462560 v8.2.2619

patch 8.2.2619: Vim9: no test for return type of lambda Commit: https://github.com/vim/vim/commit/5f91e74bf968c9033474086b2d9cb457281c8aa6 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Mar 17 21:29:29 2021 +0100 patch 8.2.2619: Vim9: no test for return type of lambda Problem: Vim9: no test for return type of lambda. Solution: Add a test.
author Bram Moolenaar <Bram@vim.org>
date Wed, 17 Mar 2021 21:30:02 +0100
parents 17e994bcd7bb
children 891b499088d1
files src/testdir/test_vim9_func.vim src/version.c
diffstat 2 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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()
--- 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,