changeset 23112:892303d45d2a v8.2.2102

patch 8.2.2102: Vim9: not all error messages tested Commit: https://github.com/vim/vim/commit/5402175815a9b9b05772f339efa3ec9f73bdae09 Author: Bram Moolenaar <Bram@vim.org> 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.
author Bram Moolenaar <Bram@vim.org>
date Sun, 06 Dec 2020 19:00:04 +0100
parents e0c700860400
children 5ecace52c756
files src/testdir/test_vim9_func.vim src/version.c
diffstat 2 files changed, 52 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- 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()
--- 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,