Mercurial > vim
comparison src/proto/userfunc.pro @ 23527:27ca5534a408 v8.2.2306
patch 8.2.2306: Vim9: when using function reference type is not checked
Commit: https://github.com/vim/vim/commit/32b3f820107139d7edf0c592bb06f090c3eb6c51
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jan 6 21:59:39 2021 +0100
patch 8.2.2306: Vim9: when using function reference type is not checked
Problem: Vim9: when using function reference type is not checked.
Solution: When using a function reference lookup the type and check the
argument types. (issue #7629)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 06 Jan 2021 22:00:06 +0100 |
parents | 7e8703464f01 |
children | bf1a7ce3f14a |
comparison
equal
deleted
inserted
replaced
23526:22fd43db29c8 | 23527:27ca5534a408 |
---|---|
2 void func_init(void); | 2 void func_init(void); |
3 hashtab_T *func_tbl_get(void); | 3 hashtab_T *func_tbl_get(void); |
4 char_u *get_lambda_name(void); | 4 char_u *get_lambda_name(void); |
5 char_u *register_cfunc(cfunc_T cb, cfunc_free_T cb_free, void *state); | 5 char_u *register_cfunc(cfunc_T cb, cfunc_free_T cb_free, void *state); |
6 int get_lambda_tv(char_u **arg, typval_T *rettv, int types_optional, evalarg_T *evalarg); | 6 int get_lambda_tv(char_u **arg, typval_T *rettv, int types_optional, evalarg_T *evalarg); |
7 char_u *deref_func_name(char_u *name, int *lenp, partial_T **partialp, int no_autoload); | 7 char_u *deref_func_name(char_u *name, int *lenp, partial_T **partialp, type_T **type, int no_autoload); |
8 void emsg_funcname(char *ermsg, char_u *name); | 8 void emsg_funcname(char *ermsg, char_u *name); |
9 int get_func_tv(char_u *name, int len, typval_T *rettv, char_u **arg, evalarg_T *evalarg, funcexe_T *funcexe); | 9 int get_func_tv(char_u *name, int len, typval_T *rettv, char_u **arg, evalarg_T *evalarg, funcexe_T *funcexe); |
10 char_u *fname_trans_sid(char_u *name, char_u *fname_buf, char_u **tofree, int *error); | 10 char_u *fname_trans_sid(char_u *name, char_u *fname_buf, char_u **tofree, int *error); |
11 ufunc_T *find_func_even_dead(char_u *name, int is_global, cctx_T *cctx); | 11 ufunc_T *find_func_even_dead(char_u *name, int is_global, cctx_T *cctx); |
12 ufunc_T *find_func(char_u *name, int is_global, cctx_T *cctx); | 12 ufunc_T *find_func(char_u *name, int is_global, cctx_T *cctx); |
29 int get_callback_depth(void); | 29 int get_callback_depth(void); |
30 int call_callback(callback_T *callback, int len, typval_T *rettv, int argcount, typval_T *argvars); | 30 int call_callback(callback_T *callback, int len, typval_T *rettv, int argcount, typval_T *argvars); |
31 void user_func_error(int error, char_u *name); | 31 void user_func_error(int error, char_u *name); |
32 int call_func(char_u *funcname, int len, typval_T *rettv, int argcount_in, typval_T *argvars_in, funcexe_T *funcexe); | 32 int call_func(char_u *funcname, int len, typval_T *rettv, int argcount_in, typval_T *argvars_in, funcexe_T *funcexe); |
33 char_u *printable_func_name(ufunc_T *fp); | 33 char_u *printable_func_name(ufunc_T *fp); |
34 char_u *trans_function_name(char_u **pp, int *is_global, int skip, int flags, funcdict_T *fdp, partial_T **partial); | 34 char_u *trans_function_name(char_u **pp, int *is_global, int skip, int flags, funcdict_T *fdp, partial_T **partial, type_T **type); |
35 char_u *untrans_function_name(char_u *name); | 35 char_u *untrans_function_name(char_u *name); |
36 void list_functions(regmatch_T *regmatch); | 36 void list_functions(regmatch_T *regmatch); |
37 ufunc_T *define_function(exarg_T *eap, char_u *name_arg); | 37 ufunc_T *define_function(exarg_T *eap, char_u *name_arg); |
38 void ex_function(exarg_T *eap); | 38 void ex_function(exarg_T *eap); |
39 void ex_defcompile(exarg_T *eap); | 39 void ex_defcompile(exarg_T *eap); |