# HG changeset patch # User Bram Moolenaar # Date 1628757902 -7200 # Node ID c6277019b8c1c12c80913683e65c13b4721bae5e # Parent 9d0e0092096b756e7513d1740917fb6b18035f1d patch 8.2.3333: Vim9: not enough tests run with Vim9 Commit: https://github.com/vim/vim/commit/3e9c0b9608736e7d888f3141443f8754143364d7 Author: Bram Moolenaar Date: Thu Aug 12 10:39:10 2021 +0200 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. diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim --- a/src/testdir/test_listdict.vim +++ b/src/testdir/test_listdict.vim @@ -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() diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim --- a/src/testdir/vim9.vim +++ b/src/testdir/vim9.vim @@ -107,7 +107,7 @@ def CheckDefAndScriptFailure(lines: list 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, errorDef: string, @@ -166,22 +166,42 @@ func CheckLegacyFailure(lines, error) endtry endfunc +" Execute "lines" in a legacy function, translated as in +" CheckLegacyAndVim9Success() +def CheckTransLegacySuccess(lines: list) + var legacylines = lines->mapnew((_, v) => + v->substitute('\', 'let', 'g') + ->substitute('\', 'let', 'g') + ->substitute('#"', ' "', 'g')) + CheckLegacySuccess(legacylines) +enddef + +" Execute "lines" in a :def function, translated as in +" CheckLegacyAndVim9Success() +def CheckTransDefSuccess(lines: list) + var vim9lines = lines->mapnew((_, v) => + v->substitute('\', 'var', 'g') + ->substitute('\) + var vim9lines = lines->mapnew((_, v) => + v->substitute('\', 'var', 'g') + ->substitute('\) - var legacylines = lines->mapnew((_, v) => - v->substitute('\', 'let', 'g') - ->substitute('\', 'let', 'g') - ->substitute('#"', ' "', 'g')) - CheckLegacySuccess(legacylines) - - var vim9lines = lines->mapnew((_, v) => - v->substitute('\', 'var', 'g') - ->substitute('\