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
index f831c71..aabc373 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -217,22 +217,47 @@
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 @@
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
index 56cea26..f023d97 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2102,
+/**/
2101,
/**/
2100,