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',