Mercurial > vim
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()