typval_T argv[MAX_FUNC_ARGS + 1];
fi = find_internal_func(name);
- if (fi < 0 || global_functions[fi].f_argtype == 0)
+ if (fi < 0)
return ERROR_UNKNOWN;
+ if (global_functions[fi].f_argtype == 0)
+ return ERROR_NOTMETHOD;
if (argcount + 1 < global_functions[fi].f_min_argc)
return ERROR_TOOFEW;
if (argcount + 1 > global_functions[fi].f_max_argc)
" todo: lambda accepts more arguments than it consumes
" call assert_fails('eval "text"->{x -> x .. " extended"}("more")', 'E99:')
endfunc
+
+func Test_method_not_supported()
+ call assert_fails('eval 123->changenr()', 'E276:')
+endfunc
case ERROR_UNKNOWN:
emsg_funcname(N_("E117: Unknown function: %s"), name);
break;
+ case ERROR_NOTMETHOD:
+ emsg_funcname(
+ N_("E276: Cannot use function as a method: %s"),
+ name);
+ break;
case ERROR_DELETED:
emsg_funcname(N_("E933: Function was deleted: %s"), name);
break;
emsg_funcname((char *)e_toomanyarg, name);
break;
case ERROR_TOOFEW:
- emsg_funcname(N_("E119: Not enough arguments for function: %s"),
+ emsg_funcname(
+ N_("E119: Not enough arguments for function: %s"),
name);
break;
case ERROR_SCRIPT:
- emsg_funcname(N_("E120: Using <SID> not in a script context: %s"),
+ emsg_funcname(
+ N_("E120: Using <SID> not in a script context: %s"),
name);
break;
case ERROR_DICT:
- emsg_funcname(N_("E725: Calling dict function without Dictionary: %s"),
+ emsg_funcname(
+ N_("E725: Calling dict function without Dictionary: %s"),
name);
break;
}
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1863,
/**/
1862,
/**/
#define ERROR_NONE 5
#define ERROR_OTHER 6
#define ERROR_DELETED 7
+#define ERROR_NOTMETHOD 8 // function cannot be used as a method
/* flags for find_name_end() */
#define FNE_INCL_BR 1 /* include [] in name */