Mercurial > vim
diff src/testdir/test_vim9_script.vim @ 26238:14b4c778b61e v8.2.3650
patch 8.2.3650: Vim9: for loop variable can be a list member
Commit: https://github.com/vim/vim/commit/3b3755fe19e9ded2a1c45f14b2c6fa065bcaf2c6
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Nov 22 20:10:18 2021 +0000
patch 8.2.3650: Vim9: for loop variable can be a list member
Problem: Vim9: for loop variable can be a list member.
Solution: Check for valid variable name. (closes https://github.com/vim/vim/issues/9179)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 22 Nov 2021 21:15:03 +0100 |
parents | 9e6ddd7b91cd |
children | f5727e2603f0 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -2865,11 +2865,35 @@ def Test_for_loop_fails() endfor END CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected job but got string', 2) + + lines =<< trim END + var i = 0 + for i in [1, 2, 3] + echo i + endfor + END + CheckDefExecAndScriptFailure2(lines, 'E1017:', 'E1041:') + + lines =<< trim END + var l = [0] + for l[0] in [1, 2, 3] + echo l[0] + endfor + END + CheckDefExecAndScriptFailure2(lines, 'E461:', 'E1017:') + + lines =<< trim END + var d = {x: 0} + for d.x in [1, 2, 3] + echo d.x + endfor + END + CheckDefExecAndScriptFailure2(lines, 'E461:', 'E1017:') enddef def Test_for_loop_script_var() # cannot use s:var in a :def function - CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E1101:') + CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E461:') # can use s:var in Vim9 script, with or without s: var lines =<< trim END