Mercurial > vim
comparison src/testdir/test_vim9_script.vim @ 24440:d2f9bdd938fa v8.2.2760
patch 8.2.2760: Vim9: no error for changing a for loop variable
Commit: https://github.com/vim/vim/commit/f6a8d420a8d2924737f713de046947dcb487550c
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Apr 13 21:48:03 2021 +0200
patch 8.2.2760: Vim9: no error for changing a for loop variable
Problem: Vim9: no error for changing a for loop variable.
Solution: Make the loop variable read-only. (issue https://github.com/vim/vim/issues/8102)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 13 Apr 2021 22:00:05 +0200 |
parents | 5c6ccab68d1e |
children | f388a033e568 |
comparison
equal
deleted
inserted
replaced
24439:21feee770b96 | 24440:d2f9bdd938fa |
---|---|
2391 | 2391 |
2392 # wrong type detected at runtime | 2392 # wrong type detected at runtime |
2393 g:adict = {a: 1} | 2393 g:adict = {a: 1} |
2394 CheckDefExecFailure(['for i in g:adict', 'echo 3', 'endfor'], 'E1177: For loop on dict not supported') | 2394 CheckDefExecFailure(['for i in g:adict', 'echo 3', 'endfor'], 'E1177: For loop on dict not supported') |
2395 unlet g:adict | 2395 unlet g:adict |
2396 | |
2397 var lines =<< trim END | |
2398 var d: list<dict<any>> = [{a: 0}] | |
2399 for e in d | |
2400 e = {a: 0, b: ''} | |
2401 endfor | |
2402 END | |
2403 CheckDefAndScriptFailure2(lines, 'E1018:', 'E46:', 3) | |
2396 enddef | 2404 enddef |
2397 | 2405 |
2398 def Test_for_loop_script_var() | 2406 def Test_for_loop_script_var() |
2399 # cannot use s:var in a :def function | 2407 # cannot use s:var in a :def function |
2400 CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E1101:') | 2408 CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E1101:') |