]> granicus.if.org Git - vim/commitdiff
patch 8.2.2102: Vim9: not all error messages tested v8.2.2102
authorBram Moolenaar <Bram@vim.org>
Sun, 6 Dec 2020 17:50:36 +0000 (18:50 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 6 Dec 2020 17:50:36 +0000 (18:50 +0100)
Problem:    Vim9: not all error messages tested.
Solution:   Add a few test cases.

src/testdir/test_vim9_func.vim
src/version.c

index f831c7199ce77d1ec781f76c33f6aff4312b96bc..aabc373333da8076794925cd9d980b0c3f8909ac 100644 (file)
@@ -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()
index 56cea2657d038ef9e87c1af6a62592f3fb22185c..f023d974a75166c7b9691bda141ea801e881e313 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2102,
 /**/
     2101,
 /**/