comparison src/testdir/test_vim9_func.vim @ 25370:d52504ef26ed v8.2.3222

patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument Commit: https://github.com/vim/vim/commit/3c77b6a1ce1d4a06c60bb9fae7eec2775f547d55 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 25 18:07:00 2021 +0200 patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument Problem: Vim9: cannot used loop variable later as lambda argument. Solution: When not in function context check the current block ID. (closes #8637)
author Bram Moolenaar <Bram@vim.org>
date Sun, 25 Jul 2021 18:15:02 +0200
parents d1fcd9c14a93
children b8a6a0007dc3
comparison
equal deleted inserted replaced
25369:1624e9d9a4d9 25370:d52504ef26ed
2350 ->substitute("')", '', '') 2350 ->substitute("')", '', '')
2351 ->substitute('function\zs', ' ', '')) 2351 ->substitute('function\zs', ' ', ''))
2352 assert_match('def <lambda>\d\+(_: any): number\n1 return 0\n enddef', body) 2352 assert_match('def <lambda>\d\+(_: any): number\n1 return 0\n enddef', body)
2353 enddef 2353 enddef
2354 2354
2355 def Test_lamba_block_variable() 2355 def Test_lambda_block_variable()
2356 var lines =<< trim END 2356 var lines =<< trim END
2357 vim9script 2357 vim9script
2358 var flist: list<func> 2358 var flist: list<func>
2359 for i in range(10) 2359 for i in range(10)
2360 var inloop = i 2360 var inloop = i
2384 for i in range(10) 2384 for i in range(10)
2385 flist[i] = () => outloop 2385 flist[i] = () => outloop
2386 endfor 2386 endfor
2387 END 2387 END
2388 CheckScriptFailure(lines, 'E1001: Variable not found: outloop', 1) 2388 CheckScriptFailure(lines, 'E1001: Variable not found: outloop', 1)
2389
2390 lines =<< trim END
2391 vim9script
2392 for i in range(10)
2393 var Ref = () => 0
2394 endfor
2395 assert_equal(0, ((i) => 0)(0))
2396 END
2397 CheckScriptSuccess(lines)
2389 enddef 2398 enddef
2390 2399
2391 def Test_legacy_lambda() 2400 def Test_legacy_lambda()
2392 legacy echo {x -> 'hello ' .. x}('foo') 2401 legacy echo {x -> 'hello ' .. x}('foo')
2393 2402