Mercurial > vim
comparison src/testdir/test_vim9_assign.vim @ 23517:36bf9a6fbd4c v8.2.2301
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Commit: https://github.com/vim/vim/commit/752fc692ace51459cb407ec117c147b3bbebc071
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Jan 4 21:57:11 2021 +0100
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Problem: Vim9: cannot unlet a dict or list item.
Solution: Add ISN_UNLETINDEX. Refactor assignment code to use for unlet.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 04 Jan 2021 22:00:04 +0100 |
parents | 18f3dc6974af |
children | b0a6e7325169 |
comparison
equal
deleted
inserted
replaced
23516:4a8d345c230b | 23517:36bf9a6fbd4c |
---|---|
1347 assert_true(exists('s:somevar')) | 1347 assert_true(exists('s:somevar')) |
1348 unlet s:somevar | 1348 unlet s:somevar |
1349 assert_false(exists('s:somevar')) | 1349 assert_false(exists('s:somevar')) |
1350 unlet! s:somevar | 1350 unlet! s:somevar |
1351 | 1351 |
1352 # dict unlet | |
1353 var dd = {a: 1, b: 2, c: 3} | |
1354 unlet dd['a'] | |
1355 unlet dd.c | |
1356 assert_equal({b: 2}, dd) | |
1357 | |
1358 # list unlet | |
1359 var ll = [1, 2, 3, 4] | |
1360 unlet ll[1] | |
1361 unlet ll[-1] | |
1362 assert_equal([1, 3], ll) | |
1363 | |
1364 # list of dict unlet | |
1365 var dl = [{a: 1, b: 2}, {c: 3}] | |
1366 unlet dl[0]['b'] | |
1367 assert_equal([{a: 1}, {c: 3}], dl) | |
1368 | |
1369 CheckDefExecFailure([ | |
1370 'var ll = test_null_list()', | |
1371 'unlet ll[0]', | |
1372 ], 'E684:') | |
1373 CheckDefExecFailure([ | |
1374 'var ll = [1]', | |
1375 'unlet ll[2]', | |
1376 ], 'E684:') | |
1377 CheckDefExecFailure([ | |
1378 'var dd = test_null_dict()', | |
1379 'unlet dd["a"]', | |
1380 ], 'E716:') | |
1381 CheckDefExecFailure([ | |
1382 'var dd = {a: 1}', | |
1383 'unlet dd["b"]', | |
1384 ], 'E716:') | |
1385 | |
1352 # can compile unlet before variable exists | 1386 # can compile unlet before variable exists |
1353 # This doesn't work yet | 1387 g:someDict = {key: 'val'} |
1354 #g:someDict = {key: 'val'} | 1388 var k = 'key' |
1355 #var k = 'key' | 1389 unlet g:someDict[k] |
1356 #unlet g:someDict[k] | 1390 assert_equal({}, g:someDict) |
1357 #assert_equal({}, g:someDict) | 1391 unlet g:someDict |
1358 #unlet g:someDict | 1392 assert_false(exists('g:someDict')) |
1359 #assert_false(exists('g:someDict')) | |
1360 | 1393 |
1361 CheckScriptFailure([ | 1394 CheckScriptFailure([ |
1362 'vim9script', | 1395 'vim9script', |
1363 'var svar = 123', | 1396 'var svar = 123', |
1364 'unlet svar', | 1397 'unlet svar', |