Mercurial > vim
comparison src/testdir/test_vim9_assign.vim @ 23662:c761fcb89dfe v8.2.2373
patch 8.2.2373: Vim9: list assignment only accepts a number index
Commit: https://github.com/vim/vim/commit/f30a14db3b26e510f193f50ee0dd8a41303e4740
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 17 21:51:24 2021 +0100
patch 8.2.2373: Vim9: list assignment only accepts a number index
Problem: Vim9: list assignment only accepts a number index.
Solution: Accept "any" and do a runtime type check. (closes https://github.com/vim/vim/issues/7694)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 17 Jan 2021 22:00:04 +0100 |
parents | 5d77a7587927 |
children | e8c379b20765 |
comparison
equal
deleted
inserted
replaced
23661:8c0e9b13694b | 23662:c761fcb89dfe |
---|---|
348 | 348 |
349 lines =<< trim END | 349 lines =<< trim END |
350 var lines: list<string> | 350 var lines: list<string> |
351 lines['a'] = 'asdf' | 351 lines['a'] = 'asdf' |
352 END | 352 END |
353 CheckDefFailure(lines, 'E39:', 2) | 353 CheckDefFailure(lines, 'E1012:', 2) |
354 | 354 |
355 lines =<< trim END | 355 lines =<< trim END |
356 var lines: string | 356 var lines: string |
357 lines[9] = 'asdf' | 357 lines[9] = 'asdf' |
358 END | 358 END |
559 d.dd[0] = 0 | 559 d.dd[0] = 0 |
560 END | 560 END |
561 CheckDefExecFailure(lines, 'E1147:', 2) | 561 CheckDefExecFailure(lines, 'E1147:', 2) |
562 enddef | 562 enddef |
563 | 563 |
564 def Test_assignment_list_any_index() | |
565 var l: list<number> = [1, 2] | |
566 for [x, y, _] | |
567 in [[0, 1, ''], [1, 3, '']] | |
568 l[x] = l[x] + y | |
569 endfor | |
570 assert_equal([2, 5], l) | |
571 enddef | |
572 | |
564 def Test_assignment_list_vim9script() | 573 def Test_assignment_list_vim9script() |
565 var lines =<< trim END | 574 var lines =<< trim END |
566 vim9script | 575 vim9script |
567 var v1: number | 576 var v1: number |
568 var v2: number | 577 var v2: number |
1403 'unlet ll[2]', | 1412 'unlet ll[2]', |
1404 ], 'E684:', 2) | 1413 ], 'E684:', 2) |
1405 CheckDefExecFailure([ | 1414 CheckDefExecFailure([ |
1406 'var ll = [1]', | 1415 'var ll = [1]', |
1407 'unlet ll[g:astring]', | 1416 'unlet ll[g:astring]', |
1408 ], 'E39:', 2) | 1417 ], 'E1012:', 2) |
1409 CheckDefExecFailure([ | 1418 CheckDefExecFailure([ |
1410 'var dd = test_null_dict()', | 1419 'var dd = test_null_dict()', |
1411 'unlet dd["a"]', | 1420 'unlet dd["a"]', |
1412 ], 'E716:', 2) | 1421 ], 'E716:', 2) |
1413 CheckDefExecFailure([ | 1422 CheckDefExecFailure([ |