Mercurial > vim
comparison src/testdir/test_vim9_func.vim @ 25344:d1fcd9c14a93 v8.2.3209
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Commit: https://github.com/vim/vim/commit/88421d6dc812a2f3b0eab34740f174c9558cb734
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jul 24 14:14:52 2021 +0200
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Problem: Vim9: lambda doesn't find block-local variable.
Solution: Adjust how a script-local variable is found. (closes https://github.com/vim/vim/issues/8614)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 24 Jul 2021 14:15:04 +0200 |
parents | 0716cc2e4a8b |
children | d52504ef26ed |
comparison
equal
deleted
inserted
replaced
25343:f182fac1243e | 25344:d1fcd9c14a93 |
---|---|
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() | |
2356 var lines =<< trim END | |
2357 vim9script | |
2358 var flist: list<func> | |
2359 for i in range(10) | |
2360 var inloop = i | |
2361 flist[i] = () => inloop | |
2362 endfor | |
2363 END | |
2364 CheckScriptSuccess(lines) | |
2365 | |
2366 lines =<< trim END | |
2367 vim9script | |
2368 if true | |
2369 var outloop = 5 | |
2370 var flist: list<func> | |
2371 for i in range(10) | |
2372 flist[i] = () => outloop | |
2373 endfor | |
2374 endif | |
2375 END | |
2376 CheckScriptSuccess(lines) | |
2377 | |
2378 lines =<< trim END | |
2379 vim9script | |
2380 if true | |
2381 var outloop = 5 | |
2382 endif | |
2383 var flist: list<func> | |
2384 for i in range(10) | |
2385 flist[i] = () => outloop | |
2386 endfor | |
2387 END | |
2388 CheckScriptFailure(lines, 'E1001: Variable not found: outloop', 1) | |
2389 enddef | |
2390 | |
2355 def Test_legacy_lambda() | 2391 def Test_legacy_lambda() |
2356 legacy echo {x -> 'hello ' .. x}('foo') | 2392 legacy echo {x -> 'hello ' .. x}('foo') |
2357 | 2393 |
2358 var lines =<< trim END | 2394 var lines =<< trim END |
2359 echo {x -> 'hello ' .. x}('foo') | 2395 echo {x -> 'hello ' .. x}('foo') |