diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-10-12 22:07:13 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-10-12 22:07:13 +0200 |
commit | f4e8cdd3d2156ab52aea1c7a392df66b7210e5eb (patch) | |
tree | dc6d9acee8bb857e78d4e3d097645b3f105389d2 /src | |
parent | fc8aa6d02d85b0df703e0a790137891c91503c9e (diff) | |
download | vim-git-f4e8cdd3d2156ab52aea1c7a392df66b7210e5eb.tar.gz |
patch 8.2.1840: Vim9: error message is not clear about compilation errorv8.2.1840
Problem: Vim9: error message is not clear about compilation error.
Solution: Say "compiling" instead of "processing".
Diffstat (limited to 'src')
-rw-r--r-- | src/globals.h | 3 | ||||
-rw-r--r-- | src/message.c | 7 | ||||
-rw-r--r-- | src/testdir/test_vim9_func.vim | 32 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 3 |
5 files changed, 46 insertions, 1 deletions
diff --git a/src/globals.h b/src/globals.h index 4ca3092e9..5495eac13 100644 --- a/src/globals.h +++ b/src/globals.h @@ -288,6 +288,9 @@ EXTERN garray_T exestack INIT5(0, 0, sizeof(estack_T), 50, NULL); #define SOURCING_LNUM (((estack_T *)exestack.ga_data)[exestack.ga_len - 1].es_lnum) #ifdef FEAT_EVAL +// whether inside compile_def_function() +EXTERN int estack_compiling INIT(= FALSE); + EXTERN int ex_nesting_level INIT(= 0); // nesting level EXTERN int debug_break_level INIT(= -1); // break below this level EXTERN int debug_did_msg INIT(= FALSE); // did "debug mode" message diff --git a/src/message.c b/src/message.c index 059835af0..c52795286 100644 --- a/src/message.c +++ b/src/message.c @@ -467,7 +467,12 @@ get_emsg_source(void) if (sname == NULL) sname = SOURCING_NAME; - p = (char_u *)_("Error detected while processing %s:"); +#ifdef FEAT_EVAL + if (estack_compiling) + p = (char_u *)_("Error detected while compiling %s:"); + else +#endif + p = (char_u *)_("Error detected while processing %s:"); Buf = alloc(STRLEN(sname) + STRLEN(p)); if (Buf != NULL) sprintf((char *)Buf, (char *)p, sname); diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 371b9efbc..4329754c3 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -13,6 +13,38 @@ func Test_def_basic() call SomeFunc()->assert_equal('yes') endfunc +def Test_compiling_error() + # use a terminal to see the whole error message + CheckRunVimInTerminal + + var lines =<< trim END + vim9script + def Fails() + echo nothing + enddef + defcompile + END + call writefile(lines, 'XTest_compile_error') + var buf = RunVimInTerminal('-S XTest_compile_error', + #{rows: 10, wait_for_ruler: 0}) + var text = '' + for loop in range(100) + text = '' + for i in range(1, 9) + text ..= term_getline(buf, i) + endfor + if text =~ 'Error detected' + break + endif + sleep 20m + endfor + assert_match('Error detected while compiling command line.*Fails.*Variable not found: nothing', text) + + # clean up + call StopVimInTerminal(buf) + call delete('XTest_compile_error') +enddef + def ReturnString(): string return 'string' enddef diff --git a/src/version.c b/src/version.c index f972cbd64..2b3657b8f 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1840, +/**/ 1839, /**/ 1838, diff --git a/src/vim9compile.c b/src/vim9compile.c index 74be262a5..1dbea9280 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -6715,6 +6715,7 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx) int called_emsg_before = called_emsg; int ret = FAIL; sctx_T save_current_sctx = current_sctx; + int save_estack_compiling = estack_compiling; int do_estack_push; int emsg_before = called_emsg; int new_def_function = FALSE; @@ -6757,6 +6758,7 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx) do_estack_push = !estack_top_is_ufunc(ufunc, 1); if (do_estack_push) estack_push_ufunc(ufunc, 1); + estack_compiling = TRUE; if (ufunc->uf_def_args.ga_len > 0) { @@ -7303,6 +7305,7 @@ erret: } current_sctx = save_current_sctx; + estack_compiling = save_estack_compiling; if (do_estack_push) estack_pop(); |