]> granicus.if.org Git - vim/commitdiff
patch 8.2.2645: using inline function is not properly tested v8.2.2645
authorBram Moolenaar <Bram@vim.org>
Mon, 22 Mar 2021 19:49:02 +0000 (20:49 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 22 Mar 2021 19:49:02 +0000 (20:49 +0100)
Problem:    Using inline function is not properly tested.
Solution:   Add test cases, esp. for errors.  Minor code improvements.

src/errors.h
src/testdir/test_vim9_expr.vim
src/testdir/test_vim9_func.vim
src/userfunc.c
src/version.c

index 300802034f9d46af7f55ca3b1030925be8952e3c..e610d28ad0ed22a62ee35042b430eb1129e3490b 100644 (file)
@@ -381,3 +381,5 @@ EXTERN char e_missing_end_block[]
        INIT(= N_("E1171: Missing } after inline function"));
 EXTERN char e_cannot_use_default_values_in_lambda[]
        INIT(= N_("E1172: Cannot use default values in a lambda"));
+EXTERN char e_text_found_after_enddef_str[]
+       INIT(= N_("E1173: Text found after enddef: %s"));
index c181b203f75925135798e1f267a9ea64fa37887f..7a9b1e49c816e70db7e09d04ee57d7362d4c075f 100644 (file)
@@ -1961,6 +1961,11 @@ def Test_expr7_lambda_block()
           return 'no'
         })
       assert_equal(['no', 'yes', 'no'], dll)
+
+      sandbox var Safe = (nr: number): number => {
+          return nr + 7
+        }
+      assert_equal(10, Safe(3))
   END
   CheckDefAndScriptSuccess(lines)
 
@@ -1968,6 +1973,34 @@ def Test_expr7_lambda_block()
       map([1, 2], (k, v) => { redrawt })
   END
   CheckDefAndScriptFailure(lines, 'E488')
+
+  lines =<< trim END
+      var Func = (nr: int) => {
+              echo nr
+            }
+  END
+  CheckDefAndScriptFailure(lines, 'E1010', 1)
+
+  lines =<< trim END
+      var Func = (nr: number): int => {
+              return nr
+            }
+  END
+  CheckDefAndScriptFailure(lines, 'E1010', 1)
+
+  lines =<< trim END
+      var Func = (nr: number): int => {
+              return nr
+  END
+  CheckDefAndScriptFailure(lines, 'E1171', 1)  # line nr is function start
+
+  lines =<< trim END
+      vim9script
+      var Func = (nr: number): int => {
+          var ll =<< ENDIT
+             nothing
+  END
+  CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: ENDIT', 2)
 enddef
 
 def NewLambdaWithComments(): func
index 2697c29e44fcb0a5d7cd3e752e3fbc9a26f40a0e..275541294e0261e77802bea2cee34b5125fac482 100644 (file)
@@ -86,6 +86,16 @@ def Test_endfunc_enddef()
     enddef
   END
   CheckScriptFailure(lines, 'E1152:', 4)
+
+  lines =<< trim END
+    def Ok()
+      echo 'hello'
+    enddef | echo 'there'
+    def Bad()
+      echo 'hello'
+    enddef there
+  END
+  CheckScriptFailure(lines, 'E1173: Text found after enddef: there', 6)
 enddef
 
 def Test_missing_endfunc_enddef()
index c9c7bc791165e691901ad1b25c02c5936db7ec2a..57669419d29b81b6c9ef7f4b549111165f6e1534 100644 (file)
@@ -731,13 +731,16 @@ get_function_body(
                    else if (line_arg != NULL && *skipwhite(line_arg) != NUL)
                        nextcmd = line_arg;
                    else if (*p != NUL && *p != (vim9_function ? '#' : '"')
-                                       && p_verbose > 0
-                                       && eap->cmdidx != CMD_block)
-                       give_warning2(eap->cmdidx == CMD_def
-                           ? (char_u *)_("W1001: Text found after :enddef: %s")
-                           : (char_u *)_("W22: Text found after :endfunction: %s"),
-                            p, TRUE);
-                   if (nextcmd != NULL)
+                                          && (vim9_function || p_verbose > 0))
+                   {
+                       if (eap->cmdidx == CMD_def)
+                           semsg(_(e_text_found_after_enddef_str), p);
+                       else
+                           give_warning2((char_u *)
+                                  _("W22: Text found after :endfunction: %s"),
+                                  p, TRUE);
+                   }
+                   if (nextcmd != NULL && *skipwhite(nextcmd) != NUL)
                    {
                        // Another command follows. If the line came from "eap"
                        // we can simply point into it, otherwise we need to
index 6fda8fcda0f2b99ec4139b337fd7a3857948159e..9b21d12c0c8156716bc6b645aa67312953fa8e7c 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2645,
 /**/
     2644,
 /**/