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([