]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.0391: Vim9: could improve testing v9.1.0391
authorYegappan Lakshmanan <yegappan@yahoo.com>
Fri, 3 May 2024 16:24:07 +0000 (18:24 +0200)
committerChristian Brabandt <cb@256bit.org>
Fri, 3 May 2024 16:27:51 +0000 (18:27 +0200)
Problem:  Vim9: could improve testing
          (Ernie Rael)
Solution: Support defcompile for test_override() to
          improve testing (Yegappan Lakshmanan)

fixes: #14553
closes: #14712

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/doc/testing.txt
src/globals.h
src/testdir/test_vim9_func.vim
src/testing.c
src/userfunc.c
src/version.c

index 9b9f60b667ccb43d978d381d6bc191a2e439b60a..d0f1d46c483b34bca58420156cb93f5d2658c22e 100644 (file)
@@ -1,4 +1,4 @@
-*testing.txt*  For Vim version 9.1.  Last change: 2024 Apr 07
+*testing.txt*  For Vim version 9.1.  Last change: 2024 May 03
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -369,6 +369,9 @@ test_override({name}, {val})                                *test_override()*
                autoload     `import autoload` will load the script right
                             away, not postponed until an item is used
                char_avail   disable the char_avail() function
+               defcompile   all the |:def| functions in a sourced script are
+                            compiled when defined.  This is similar to using
+                            the |:defcompile| command in a script.
                nfa_fail     makes the NFA regexp engine fail to force a
                             fallback to the old engine
                no_query_mouse  do not query the mouse position for "dec"
index 2c00e5f99b6f65a46836452b32cb8365def5b5ff..fb5c7b34a2363e50ce0c3f9968ae8f780680c317 100644 (file)
@@ -1936,6 +1936,7 @@ EXTERN int  reset_term_props_on_termresponse INIT(= FALSE);
 EXTERN int  disable_vterm_title_for_testing INIT(= FALSE);
 EXTERN long override_sysinfo_uptime INIT(= -1);
 EXTERN int  override_autoload INIT(= FALSE);
+EXTERN int  override_defcompile INIT(= FALSE);
 EXTERN int  ml_get_alloc_lines INIT(= FALSE);
 EXTERN int  ignore_unreachable_code_for_testing INIT(= FALSE);
 
index b008929611fd60b0d1eecb866e1c2f6cc65372e3..d07bbfba70705d5d371e25907ebb6f9f3ba4cb69 100644 (file)
@@ -4633,6 +4633,19 @@ def Run_Test_keytyped_in_nested_function()
   g:StopVimInTerminal(buf)
 enddef
 
+" Test for test_override('defcompile')
+def Test_test_override_defcompile()
+  var lines =<< trim END
+    vim9script
+    def Foo()
+      xxx
+    enddef
+  END
+  test_override('defcompile', 1)
+  v9.CheckScriptFailure(lines, 'E476: Invalid command: xxx')
+  test_override('defcompile', 0)
+enddef
+
 " The following messes up syntax highlight, keep near the end.
 if has('python3')
   def Test_python3_command()
index 33de3a5cd836a98d1b9eaf69526299ae1dbcc8a2..3e9e07704b1bedf24156a1b7f0c63a4073bf4b81 100644 (file)
@@ -1051,6 +1051,8 @@ f_test_override(typval_T *argvars, typval_T *rettv UNUSED)
        ml_get_alloc_lines = val;
     else if (STRCMP(name, (char_u *)"autoload") == 0)
        override_autoload = val;
+    else if (STRCMP(name, (char_u *)"defcompile") == 0)
+       override_defcompile = val;
     else if (STRCMP(name, (char_u *)"ALL") == 0)
     {
        disable_char_avail_for_testing = FALSE;
index 71b39837c74ce7e72a27c9278da63abe52d8329c..7536234b829f4f87dc2d1860d55b415dc4209eab 100644 (file)
@@ -5452,6 +5452,10 @@ define_function(
        // :func does not use Vim9 script syntax, even in a Vim9 script file
        fp->uf_script_ctx.sc_version = SCRIPT_VERSION_MAX;
 
+    // If test_override('defcompile' 1) is used, then compile the function now
+    if (eap->cmdidx == CMD_def && override_defcompile)
+       defcompile_function(fp, NULL);
+
     goto ret_free;
 
 erret:
index 46d9c1afe8709568f76e7c5fe6596661234d77c5..a3bc3f982affe81b9e83c6f993788e2351e2ff1f 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    391,
 /**/
     390,
 /**/