patch 9.1.0391: Vim9: could improve testing

Commit: 
https://github.com/vim/vim/commit/5715a726282018e708cff7dd930c9f8f7c37fa7e
Author: Yegappan Lakshmanan <yegap...@yahoo.com>
Date:   Fri May 3 18:24:07 2024 +0200

    patch 9.1.0391: Vim9: could improve testing
    
    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 <yegap...@yahoo.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 9b9f60b66..d0f1d46c4 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -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"
diff --git a/src/globals.h b/src/globals.h
index 2c00e5f99..fb5c7b34a 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -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);
 
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index b00892961..d07bbfba7 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -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()
diff --git a/src/testing.c b/src/testing.c
index 33de3a5cd..3e9e07704 100644
--- a/src/testing.c
+++ b/src/testing.c
@@ -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;
diff --git a/src/userfunc.c b/src/userfunc.c
index 71b39837c..7536234b8 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -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:
diff --git a/src/version.c b/src/version.c
index 46d9c1afe..a3bc3f982 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    391,
 /**/
     390,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1s2vnc-00DDLb-7n%40256bit.org.

Raspunde prin e-mail lui