0
0
mirror of https://github.com/vim/vim.git synced 2025-10-03 05:14:07 -04:00

patch 8.2.3897: Vim9: second argument of map() and filter() not checked

Problem:    Vim9: the second argument of map() and filter() is not checked at
            compile time.
Solution:   Add more specific type check for the second argument.
This commit is contained in:
Bram Moolenaar
2021-12-25 21:43:28 +00:00
parent db8e5c21b9
commit 1802405d71
7 changed files with 80 additions and 12 deletions

View File

@@ -2077,7 +2077,7 @@ def Test_expr7_lambda()
)
assert_equal([111, 222, 111], ll)
var dl = [{key: 0}, {key: 22}]->filter(( _, v) => v['key'] )
var dl = [{key: 0}, {key: 22}]->filter(( _, v) => !!v['key'] )
assert_equal([{key: 22}], dl)
dl = [{key: 12}, {['foo']: 34}]
@@ -2236,7 +2236,7 @@ def Test_expr7_new_lambda()
)
assert_equal([111, 222, 111], ll)
var dl = [{key: 0}, {key: 22}]->filter(( _, v) => v['key'] )
var dl = [{key: 0}, {key: 22}]->filter(( _, v) => !!v['key'] )
assert_equal([{key: 22}], dl)
dl = [{key: 12}, {['foo']: 34}]
@@ -2308,7 +2308,7 @@ def Test_expr7_lambda_vim9script()
lines =<< trim END
search('"', 'cW', 0, 0, () =>
synstack('.', col('.'))
->map((_, v) => synIDattr(v, 'name'))->len())
->mapnew((_, v) => synIDattr(v, 'name'))->len())
END
CheckDefAndScriptSuccess(lines)
enddef