Mercurial > vim
comparison 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 |
comparison
equal
deleted
inserted
replaced
26237:83c695dd5355 | 26238:14b4c778b61e |
---|---|
2863 for [k: job, v: job] in d->items() | 2863 for [k: job, v: job] in d->items() |
2864 echo k v | 2864 echo k v |
2865 endfor | 2865 endfor |
2866 END | 2866 END |
2867 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected job but got string', 2) | 2867 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected job but got string', 2) |
2868 | |
2869 lines =<< trim END | |
2870 var i = 0 | |
2871 for i in [1, 2, 3] | |
2872 echo i | |
2873 endfor | |
2874 END | |
2875 CheckDefExecAndScriptFailure2(lines, 'E1017:', 'E1041:') | |
2876 | |
2877 lines =<< trim END | |
2878 var l = [0] | |
2879 for l[0] in [1, 2, 3] | |
2880 echo l[0] | |
2881 endfor | |
2882 END | |
2883 CheckDefExecAndScriptFailure2(lines, 'E461:', 'E1017:') | |
2884 | |
2885 lines =<< trim END | |
2886 var d = {x: 0} | |
2887 for d.x in [1, 2, 3] | |
2888 echo d.x | |
2889 endfor | |
2890 END | |
2891 CheckDefExecAndScriptFailure2(lines, 'E461:', 'E1017:') | |
2868 enddef | 2892 enddef |
2869 | 2893 |
2870 def Test_for_loop_script_var() | 2894 def Test_for_loop_script_var() |
2871 # cannot use s:var in a :def function | 2895 # cannot use s:var in a :def function |
2872 CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E1101:') | 2896 CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E461:') |
2873 | 2897 |
2874 # can use s:var in Vim9 script, with or without s: | 2898 # can use s:var in Vim9 script, with or without s: |
2875 var lines =<< trim END | 2899 var lines =<< trim END |
2876 vim9script | 2900 vim9script |
2877 var total = 0 | 2901 var total = 0 |