mirror of
https://github.com/neovim/neovim.git
synced 2025-09-11 05:48:17 +00:00
vim-patch:8.1.1863: confusing error when using a builtin function as method
Problem: Confusing error when using a builtin function as method while it
does not support that.
Solution: Add a specific error message.
9174639a82
This commit is contained in:
@@ -199,8 +199,10 @@ int call_internal_method(const char_u *const fname, const int argcount,
|
|||||||
FUNC_ATTR_NONNULL_ALL
|
FUNC_ATTR_NONNULL_ALL
|
||||||
{
|
{
|
||||||
const VimLFuncDef *const fdef = find_internal_func((const char *)fname);
|
const VimLFuncDef *const fdef = find_internal_func((const char *)fname);
|
||||||
if (fdef == NULL || fdef->base_arg == BASE_NONE) {
|
if (fdef == NULL) {
|
||||||
return ERROR_UNKNOWN;
|
return ERROR_UNKNOWN;
|
||||||
|
} else if (fdef->base_arg == BASE_NONE) {
|
||||||
|
return ERROR_NOTMETHOD;
|
||||||
} else if (argcount + 1 < fdef->min_argc) {
|
} else if (argcount + 1 < fdef->min_argc) {
|
||||||
return ERROR_TOOFEW;
|
return ERROR_TOOFEW;
|
||||||
} else if (argcount + 1 > fdef->max_argc) {
|
} else if (argcount + 1 > fdef->max_argc) {
|
||||||
|
@@ -1399,6 +1399,9 @@ static void user_func_error(int error, const char_u *name)
|
|||||||
case ERROR_UNKNOWN:
|
case ERROR_UNKNOWN:
|
||||||
emsg_funcname(N_("E117: Unknown function: %s"), name);
|
emsg_funcname(N_("E117: Unknown function: %s"), name);
|
||||||
break;
|
break;
|
||||||
|
case ERROR_NOTMETHOD:
|
||||||
|
emsg_funcname(N_("E276: Cannot use function as a method: %s"), name);
|
||||||
|
break;
|
||||||
case ERROR_DELETED:
|
case ERROR_DELETED:
|
||||||
emsg_funcname(N_("E933: Function was deleted: %s"), name);
|
emsg_funcname(N_("E933: Function was deleted: %s"), name);
|
||||||
break;
|
break;
|
||||||
|
@@ -28,6 +28,7 @@ typedef enum {
|
|||||||
ERROR_OTHER,
|
ERROR_OTHER,
|
||||||
ERROR_BOTH,
|
ERROR_BOTH,
|
||||||
ERROR_DELETED,
|
ERROR_DELETED,
|
||||||
|
ERROR_NOTMETHOD,
|
||||||
} FnameTransError;
|
} FnameTransError;
|
||||||
|
|
||||||
/// Used in funcexe_T. Returns the new argcount.
|
/// Used in funcexe_T. Returns the new argcount.
|
||||||
|
@@ -140,4 +140,8 @@ func Test_method_lambda()
|
|||||||
" call assert_fails('eval "text"->{x -> x .. " extended"}("more")', 'E99:')
|
" call assert_fails('eval "text"->{x -> x .. " extended"}("more")', 'E99:')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_method_not_supported()
|
||||||
|
call assert_fails('eval 123->changenr()', 'E276:')
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
Reference in New Issue
Block a user