patch 9.1.1531: confusing error with nested legacy function

Problem:  confusing error with nested legacy function
          (lacygoill)
Solution: clarify error message E1117 with :def or :func (Hirohito Higashi)

fixes: #17697
closes: #17702

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Hirohito Higashi
2025-07-08 23:07:21 +02:00
committed by Christian Brabandt
parent 1adada0158
commit 8331310c06
4 changed files with 18 additions and 4 deletions

View File

@ -2885,8 +2885,8 @@ EXTERN char e_assert_fails_fourth_argument[]
INIT(= N_("E1115: \"assert_fails()\" fourth argument must be a number"));
EXTERN char e_assert_fails_fifth_argument[]
INIT(= N_("E1116: \"assert_fails()\" fifth argument must be a string"));
EXTERN char e_cannot_use_bang_with_nested_def[]
INIT(= N_("E1117: Cannot use ! with nested :def"));
EXTERN char e_cannot_use_bang_with_nested_def_str[]
INIT(= N_("E1117: Cannot use ! with nested %s"));
EXTERN char e_cannot_change_locked_list[]
INIT(= N_("E1118: Cannot change locked list"));
EXTERN char e_cannot_change_locked_list_item[]

View File

@ -1001,7 +1001,18 @@ def Test_nested_function()
enddef
enddef
END
v9.CheckDefFailure(lines, 'E1117:')
v9.CheckDefFailure(lines, 'E1117: Cannot use ! with nested :def')
lines =<< trim END
def Outer()
function Inner()
" comment
endfunc
function! Inner()
endfunc
enddef
END
v9.CheckDefFailure(lines, 'E1117: Cannot use ! with nested :function')
lines =<< trim END
vim9script

View File

@ -719,6 +719,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1531,
/**/
1530,
/**/

View File

@ -1035,7 +1035,8 @@ compile_nested_function(exarg_T *eap, cctx_T *cctx, garray_T *lines_to_free)
if (eap->forceit)
{
emsg(_(e_cannot_use_bang_with_nested_def));
semsg(_(e_cannot_use_bang_with_nested_def_str),
eap->cmdidx == CMD_def ? ":def" : ":function");
return NULL;
}