0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

patch 8.2.0601: Vim9: :unlet is not compiled

Problem:    Vim9: :unlet is not compiled.
Solution:   Implement :unlet instruction and check for errors.
This commit is contained in:
Bram Moolenaar
2020-04-19 16:28:59 +02:00
parent d3aac2917d
commit d72c1bf0a6
10 changed files with 232 additions and 35 deletions

View File

@@ -213,7 +213,7 @@ def Mess(): string
return 'xxx'
enddef
func Test_assignment_failure()
def Test_assignment_failure()
call CheckDefFailure(['let var=234'], 'E1004:')
call CheckDefFailure(['let var =234'], 'E1004:')
call CheckDefFailure(['let var= 234'], 'E1004:')
@@ -241,9 +241,6 @@ func Test_assignment_failure()
call CheckDefFailure(['let xnr += 4'], 'E1020:')
call CheckScriptFailure(['vim9script', 'def Func()', 'let dummy = s:notfound', 'enddef'], 'E1050:')
" TODO: implement this error
"call CheckScriptFailure(['vim9script', 'let svar = 123', 'unlet svar'], 'E1050:')
"call CheckScriptFailure(['vim9script', 'let svar = 123', 'unlet s:svar'], 'E1050:')
call CheckDefFailure(['let var: list<string> = [123]'], 'expected list<string> but got list<number>')
call CheckDefFailure(['let var: list<number> = ["xx"]'], 'expected list<number> but got list<string>')
@@ -259,7 +256,40 @@ func Test_assignment_failure()
call assert_fails('s/^/\=Mess()/n', 'E794:')
call CheckDefFailure(['let var: dict<number'], 'E1009:')
endfunc
enddef
def Test_unlet()
g:somevar = 'yes'
assert_true(exists('g:somevar'))
unlet g:somevar
assert_false(exists('g:somevar'))
unlet! g:somevar
call CheckScriptFailure([
'vim9script',
'let svar = 123',
'unlet svar',
], 'E1081:')
call CheckScriptFailure([
'vim9script',
'let svar = 123',
'unlet s:svar',
], 'E1081:')
call CheckScriptFailure([
'vim9script',
'let svar = 123',
'def Func()',
' unlet svar',
'enddef',
], 'E1081:')
call CheckScriptFailure([
'vim9script',
'let svar = 123',
'def Func()',
' unlet s:svar',
'enddef',
], 'E1081:')
enddef
func Test_wrong_type()
call CheckDefFailure(['let var: list<nothing>'], 'E1010:')
@@ -1155,6 +1185,24 @@ def Test_vim9_comment_not_compiled()
au! TabEnter
unlet g:entered
CheckScriptSuccess([
'vim9script',
'let g:var = 123',
'let w:var = 777',
'unlet g:var w:var # something',
])
CheckScriptFailure([
'vim9script',
'let g:var = 123',
'unlet g:var# comment',
], 'E108:')
CheckScriptFailure([
'let g:var = 123',
'unlet g:var # something',
], 'E488:')
enddef
" Keep this last, it messes up highlighting.