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