Merge #15680 fix(eval): add the vimscript-1 feature to has()

This commit is contained in:
Justin M. Keyes 2021-09-16 13:25:26 -07:00 committed by GitHub
commit 2d81f19279
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 69 additions and 43 deletions

View File

@ -4403,6 +4403,7 @@ static void f_has(typval_T *argvars, typval_T *rettv, FunPtr fptr)
"user_commands", "user_commands",
"vartabs", "vartabs",
"vertsplit", "vertsplit",
"vimscript-1",
"virtualedit", "virtualedit",
"visual", "visual",
"visualextra", "visualextra",

View File

@ -12,6 +12,48 @@ func Test_catch_return_with_error()
call assert_equal(1, s:foo()) call assert_equal(1, s:foo())
endfunc endfunc
func Test_nocatch_restore_silent_emsg()
silent! try
throw 1
catch
endtry
echoerr 'wrong'
let c1 = nr2char(screenchar(&lines, 1))
let c2 = nr2char(screenchar(&lines, 2))
let c3 = nr2char(screenchar(&lines, 3))
let c4 = nr2char(screenchar(&lines, 4))
let c5 = nr2char(screenchar(&lines, 5))
call assert_equal('wrong', c1 . c2 . c3 . c4 . c5)
endfunc
func Test_mkdir_p()
call mkdir('Xmkdir/nested', 'p')
call assert_true(isdirectory('Xmkdir/nested'))
try
" Trying to make existing directories doesn't error
call mkdir('Xmkdir', 'p')
call mkdir('Xmkdir/nested', 'p')
catch /E739:/
call assert_report('mkdir(..., "p") failed for an existing directory')
endtry
" 'p' doesn't suppress real errors
call writefile([], 'Xfile')
call assert_fails('call mkdir("Xfile", "p")', 'E739')
call delete('Xfile')
call delete('Xmkdir', 'rf')
endfunc
func Test_line_continuation()
let array = [5,
"\ ignore this
\ 6,
"\ more to ignore
"\ more moreto ignore
\ ]
"\ and some more
call assert_equal([5, 6], array)
endfunc
func Test_E963() func Test_E963()
" These commands used to cause an internal error prior to vim 8.1.0563 " These commands used to cause an internal error prior to vim 8.1.0563
let v_e = v:errors let v_e = v:errors
@ -51,32 +93,11 @@ func Test_readfile_binary()
call delete('XReadfile') call delete('XReadfile')
endfunc endfunc
func Test_mkdir_p() func Test_let_errmsg()
call mkdir('Xmkdir/nested', 'p') call assert_fails('let v:errmsg = []', 'E730:')
call assert_true(isdirectory('Xmkdir/nested')) let v:errmsg = ''
try call assert_fails('let v:errmsg = []', 'E730:')
" Trying to make existing directories doesn't error let v:errmsg = ''
call mkdir('Xmkdir', 'p')
call mkdir('Xmkdir/nested', 'p')
catch /E739:/
call assert_report('mkdir(..., "p") failed for an existing directory')
endtry
" 'p' doesn't suppress real errors
call writefile([], 'Xfile')
call assert_fails('call mkdir("Xfile", "p")', 'E739')
call delete('Xfile')
call delete('Xmkdir', 'rf')
endfunc
func Test_line_continuation()
let array = [5,
"\ ignore this
\ 6,
"\ more to ignore
"\ more moreto ignore
\ ]
"\ and some more
call assert_equal([5, 6], array)
endfunc endfunc
func Test_string_concatenation() func Test_string_concatenation()
@ -117,25 +138,29 @@ func Test_skip_after_throw()
endtry endtry
endfunc endfunc
func Test_nocatch_restore_silent_emsg() " scriptversion 1
silent! try func Test_string_concat_scriptversion1()
throw 1 call assert_true(has('vimscript-1'))
catch let a = 'a'
endtry let b = 'b'
echoerr 'wrong'
let c1 = nr2char(screenchar(&lines, 1)) echo a . b
let c2 = nr2char(screenchar(&lines, 2)) let a .= b
let c3 = nr2char(screenchar(&lines, 3)) let vers = 1.2.3
let c4 = nr2char(screenchar(&lines, 4)) call assert_equal('123', vers)
let c5 = nr2char(screenchar(&lines, 5))
call assert_equal('wrong', c1 . c2 . c3 . c4 . c5) if has('float')
call assert_fails('let f = .5', 'E15:')
endif
endfunc endfunc
func Test_let_errmsg() " scriptversion 1
call assert_fails('let v:errmsg = []', 'E730:') func Test_vvar_scriptversion1()
let v:errmsg = '' call assert_equal(15, 017)
call assert_fails('let v:errmsg = []', 'E730:') call assert_equal(15, 0o17)
let v:errmsg = '' call assert_equal(15, 0O17)
call assert_equal(18, 018)
call assert_equal(511, 0o777)
endfunc endfunc
func Test_number_max_min_size() func Test_number_max_min_size()