Skip to content

Commit

Permalink
patch 9.1.0391: Vim9: could improve testing
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
yegappan authored and chrisbra committed May 3, 2024
1 parent c8330b8 commit 5715a72
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 1 deletion.
5 changes: 4 additions & 1 deletion runtime/doc/testing.txt
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions src/globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
13 changes: 13 additions & 0 deletions src/testdir/test_vim9_func.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
2 changes: 2 additions & 0 deletions src/testing.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 4 additions & 0 deletions src/userfunc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
391,
/**/
390,
/**/
Expand Down

0 comments on commit 5715a72

Please sign in to comment.