patch 8.2.3333: Vim9: not enough tests run with Vim9

Problem:    Vim9: not enough tests run with Vim9.
Solution:   Run a few more tests in Vim9 script and :def function.
This commit is contained in:
Bram Moolenaar
2021-08-12 10:39:10 +02:00
parent 4f0884d6e2
commit 3e9c0b9608
3 changed files with 41 additions and 6 deletions

View File

@ -457,6 +457,19 @@ func Test_dict_func_remove_in_use()
endfunc
let expected = 'a:' . string(get(d, 'func'))
call assert_equal(expected, d.func(string(remove(d, 'func'))))
" similar, in a way it also works in Vim9
let lines =<< trim END
VAR d = {1: 1, 2: 'x'}
func GetArg(a)
return "a:" .. a:a
endfunc
LET d.func = function('GetArg')
VAR expected = 'a:' .. string(get(d, 'func'))
call assert_equal(expected, d.func(string(remove(d, 'func'))))
END
call CheckTransLegacySuccess(lines)
call CheckTransVim9Success(lines)
endfunc
func Test_dict_literal_keys()

View File

@ -107,7 +107,7 @@ def CheckDefAndScriptFailure(lines: list<string>, error: string, lnum = -3)
CheckScriptFailure(['vim9script'] + lines, error, lnum + 1)
enddef
" As CheckDefAndScriptFailure() but with two different exepected errors.
" As CheckDefAndScriptFailure() but with two different expected errors.
def CheckDefAndScriptFailure2(
lines: list<string>,
errorDef: string,
@ -166,24 +166,44 @@ func CheckLegacyFailure(lines, error)
endtry
endfunc
" Execute "lines" in a legacy function, :def function and Vim9 script.
" Use 'VAR' for a declaration.
" Use 'LET' for an assignment
" Use ' #"' for a comment
def CheckLegacyAndVim9Success(lines: list<string>)
" Execute "lines" in a legacy function, translated as in
" CheckLegacyAndVim9Success()
def CheckTransLegacySuccess(lines: list<string>)
var legacylines = lines->mapnew((_, v) =>
v->substitute('\<VAR\>', 'let', 'g')
->substitute('\<LET\>', 'let', 'g')
->substitute('#"', ' "', 'g'))
CheckLegacySuccess(legacylines)
enddef
" Execute "lines" in a :def function, translated as in
" CheckLegacyAndVim9Success()
def CheckTransDefSuccess(lines: list<string>)
var vim9lines = lines->mapnew((_, v) =>
v->substitute('\<VAR\>', 'var', 'g')
->substitute('\<LET ', '', 'g'))
CheckDefSuccess(vim9lines)
enddef
" Execute "lines" in a Vim9 script, translated as in
" CheckLegacyAndVim9Success()
def CheckTransVim9Success(lines: list<string>)
var vim9lines = lines->mapnew((_, v) =>
v->substitute('\<VAR\>', 'var', 'g')
->substitute('\<LET ', '', 'g'))
CheckScriptSuccess(['vim9script'] + vim9lines)
enddef
" Execute "lines" in a legacy function, :def function and Vim9 script.
" Use 'VAR' for a declaration.
" Use 'LET' for an assignment
" Use ' #"' for a comment
def CheckLegacyAndVim9Success(lines: list<string>)
CheckTransLegacySuccess(lines)
CheckTransDefSuccess(lines)
CheckTransVim9Success(lines)
enddef
" Execute "lines" in a legacy function, :def function and Vim9 script.
" Use 'VAR' for a declaration.
" Use 'LET' for an assignment

View File

@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3333,
/**/
3332,
/**/