Mercurial > vim
comparison src/testdir/test_vim9_script.vim @ 21188:d73b6ba20053 v8.2.1145
patch 8.2.1145: Vim9: "for" only accepts a list at compile time
Commit: https://github.com/vim/vim/commit/0ad3e894d75236915e67dfbbcc821b6bb3c05d91
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jul 5 21:38:11 2020 +0200
patch 8.2.1145: Vim9: "for" only accepts a list at compile time
Problem: Vim9: "for" only accepts a list at compile time.
Solution: Also accept a list at runtime.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 05 Jul 2020 21:45:04 +0200 |
parents | 951aad18b1af |
children | 1a4e22aa2eb3 |
comparison
equal
deleted
inserted
replaced
21187:bfc9b0a72673 | 21188:d73b6ba20053 |
---|---|
1438 continue | 1438 continue |
1439 endif | 1439 endif |
1440 result ..= cnt .. '_' | 1440 result ..= cnt .. '_' |
1441 endfor | 1441 endfor |
1442 assert_equal('0_1_3_', result) | 1442 assert_equal('0_1_3_', result) |
1443 | |
1444 let concat = '' | |
1445 for str in eval('["one", "two"]') | |
1446 concat ..= str | |
1447 endfor | |
1448 assert_equal('onetwo', concat) | |
1443 enddef | 1449 enddef |
1444 | 1450 |
1445 def Test_for_loop_fails() | 1451 def Test_for_loop_fails() |
1446 CheckDefFailure(['for # in range(5)'], 'E690:') | 1452 CheckDefFailure(['for # in range(5)'], 'E690:') |
1447 CheckDefFailure(['for i In range(5)'], 'E690:') | 1453 CheckDefFailure(['for i In range(5)'], 'E690:') |
1448 CheckDefFailure(['let x = 5', 'for x in range(5)'], 'E1023:') | 1454 CheckDefFailure(['let x = 5', 'for x in range(5)'], 'E1023:') |
1449 CheckScriptFailure(['def Func(arg: any)', 'for arg in range(5)', 'enddef', 'defcompile'], 'E1006:') | 1455 CheckScriptFailure(['def Func(arg: any)', 'for arg in range(5)', 'enddef', 'defcompile'], 'E1006:') |
1450 CheckDefFailure(['for i in "text"'], 'E1024:') | 1456 CheckDefFailure(['for i in "text"'], 'E1013:') |
1451 CheckDefFailure(['for i in xxx'], 'E1001:') | 1457 CheckDefFailure(['for i in xxx'], 'E1001:') |
1452 CheckDefFailure(['endfor'], 'E588:') | 1458 CheckDefFailure(['endfor'], 'E588:') |
1453 CheckDefFailure(['for i in range(3)', 'echo 3'], 'E170:') | 1459 CheckDefFailure(['for i in range(3)', 'echo 3'], 'E170:') |
1454 enddef | 1460 enddef |
1455 | 1461 |