summaryrefslogtreecommitdiffstats
path: root/src/proto
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-02-02 20:01:27 +0000
committerBram Moolenaar <Bram@vim.org>2022-02-02 20:01:27 +0000
commit381692b6f1c2ec9b73a139500286ddc9347a1c01 (patch)
tree96145ec58ad29dd86bbc80e557377333c07d059b /src/proto
parenta1c519518050383e7d319514a3ff6c42a9154c48 (diff)
patch 8.2.4286: Vim9: strict type checking after copy() and deepcopy()v8.2.4286
Problem: Vim9: strict type checking after copy() and deepcopy(). Solution: Allow type to change after making a copy. (closes #9644)
Diffstat (limited to 'src/proto')
-rw-r--r--src/proto/dict.pro2
-rw-r--r--src/proto/eval.pro2
-rw-r--r--src/proto/list.pro2
-rw-r--r--src/proto/vim9type.pro1
4 files changed, 4 insertions, 3 deletions
diff --git a/src/proto/dict.pro b/src/proto/dict.pro
index d6cf152263..7db011d210 100644
--- a/src/proto/dict.pro
+++ b/src/proto/dict.pro
@@ -12,7 +12,7 @@ void dict_free_items(int copyID);
dictitem_T *dictitem_alloc(char_u *key);
void dictitem_remove(dict_T *dict, dictitem_T *item);
void dictitem_free(dictitem_T *item);
-dict_T *dict_copy(dict_T *orig, int deep, int copyID);
+dict_T *dict_copy(dict_T *orig, int deep, int top, int copyID);
int dict_wrong_func_name(dict_T *d, typval_T *tv, char_u *name);
int dict_add(dict_T *d, dictitem_T *item);
int dict_add_number(dict_T *d, char *key, varnumber_T nr);
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index abb9c565e2..8be58855d7 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -69,7 +69,7 @@ int eval_isnamec(int c);
int eval_isnamec1(int c);
int eval_isdictc(int c);
int handle_subscript(char_u **arg, char_u *name_start, typval_T *rettv, evalarg_T *evalarg, int verbose);
-int item_copy(typval_T *from, typval_T *to, int deep, int copyID);
+int item_copy(typval_T *from, typval_T *to, int deep, int top, int copyID);
void echo_one(typval_T *rettv, int with_space, int *atstart, int *needclr);
void ex_echo(exarg_T *eap);
void ex_echohl(exarg_T *eap);
diff --git a/src/proto/list.pro b/src/proto/list.pro
index 5b7414bce2..468775e59a 100644
--- a/src/proto/list.pro
+++ b/src/proto/list.pro
@@ -39,7 +39,7 @@ int list_extend(list_T *l1, list_T *l2, listitem_T *bef);
int list_concat(list_T *l1, list_T *l2, typval_T *tv);
list_T *list_slice(list_T *ol, long n1, long n2);
int list_slice_or_index(list_T *list, int range, varnumber_T n1_arg, varnumber_T n2_arg, int exclusive, typval_T *rettv, int verbose);
-list_T *list_copy(list_T *orig, int deep, int copyID);
+list_T *list_copy(list_T *orig, int deep, int top, int copyID);
void vimlist_remove(list_T *l, listitem_T *item, listitem_T *item2);
char_u *list2string(typval_T *tv, int copyID, int restore_copyID);
int list_join(garray_T *gap, list_T *l, char_u *sep, int echo_style, int restore_copyID, int copyID);
diff --git a/src/proto/vim9type.pro b/src/proto/vim9type.pro
index 61e38e0786..fb3cb8d145 100644
--- a/src/proto/vim9type.pro
+++ b/src/proto/vim9type.pro
@@ -2,6 +2,7 @@
void clear_type_list(garray_T *gap);
type_T *alloc_type(type_T *type);
void free_type(type_T *type);
+void set_tv_type(typval_T *tv, type_T *type);
type_T *get_list_type(type_T *member_type, garray_T *type_gap);
type_T *get_dict_type(type_T *member_type, garray_T *type_gap);
type_T *alloc_func_type(type_T *ret_type, int argcount, garray_T *type_gap);