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