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>
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[]
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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1531,
/**/
1530,
/**/
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;
}