# HG changeset patch # User Bram Moolenaar # Date 1607277604 -3600 # Node ID 892303d45d2a13f355e29c522b22272d34157a05 # Parent e0c700860400098721662c8c9cff7a732084d104 patch 8.2.2102: Vim9: not all error messages tested Commit: https://github.com/vim/vim/commit/5402175815a9b9b05772f339efa3ec9f73bdae09 Author: Bram Moolenaar Date: Sun Dec 6 18:50:36 2020 +0100 patch 8.2.2102: Vim9: not all error messages tested Problem: Vim9: not all error messages tested. Solution: Add a few test cases. diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -217,22 +217,47 @@ def Test_nested_function() CheckDefFailure(['def s:Nested()', 'enddef'], 'E1075:') CheckDefFailure(['def b:Nested()', 'enddef'], 'E1075:') - CheckDefFailure([ - 'def Outer()', - ' def Inner()', - ' # comment', - ' enddef', - ' def Inner()', - ' enddef', - 'enddef'], 'E1073:') - CheckDefFailure([ - 'def Outer()', - ' def Inner()', - ' # comment', - ' enddef', - ' def! Inner()', - ' enddef', - 'enddef'], 'E1117:') + var lines =<< trim END + def Outer() + def Inner() + # comment + enddef + def Inner() + enddef + enddef + END + CheckDefFailure(lines, 'E1073:') + + lines =<< trim END + def Outer() + def Inner() + # comment + enddef + def! Inner() + enddef + enddef + END + CheckDefFailure(lines, 'E1117:') + + # nested function inside conditional + # TODO: should it work when "thecount" is inside the "if"? + lines =<< trim END + vim9script + var thecount = 0 + if true + def Test(): number + def TheFunc(): number + thecount += 1 + return thecount + enddef + return TheFunc() + enddef + endif + defcompile + assert_equal(1, Test()) + assert_equal(2, Test()) + END + CheckScriptSuccess(lines) enddef func Test_call_default_args_from_func() @@ -315,6 +340,15 @@ def Test_nested_def_list() assert_true(funcs->index('def DefListAll()') >= 0) assert_true(funcs->index('def DefListOne()') >= 0) assert_true(funcs->index('def DefListMatches()') >= 0) + + var lines =<< trim END + vim9script + def Func() + def +Func+ + enddef + defcompile + END + CheckScriptFailure(lines, 'E476:', 1) enddef def Test_global_local_function() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2102, +/**/ 2101, /**/ 2100,