patch 9.0.2163: Vim9: type can be assigned to list/dict
Problem: Vim9: type can be assigned to list/dict
Solution: Prevent assigning a `type` to a `list` or `dict`
closes: #13683
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/vim9instr.c b/src/vim9instr.c
index 3547d42..12c83df 100644
--- a/src/vim9instr.c
+++ b/src/vim9instr.c
@@ -1333,7 +1333,8 @@
// Get the member type and the declared member type from all the items on
// the stack.
- member_type = get_member_type_from_stack(count, 1, cctx);
+ if ((member_type = get_member_type_from_stack(count, 1, cctx)) == NULL)
+ return FAIL;
type = get_list_type(member_type, cctx->ctx_type_list);
decl_type = get_list_type(&t_any, cctx->ctx_type_list);
@@ -1361,7 +1362,8 @@
return FAIL;
isn->isn_arg.number = use_null ? -1 : count;
- member_type = get_member_type_from_stack(count, 2, cctx);
+ if ((member_type = get_member_type_from_stack(count, 2, cctx)) == NULL)
+ return FAIL;
type = get_dict_type(member_type, cctx->ctx_type_list);
decl_type = get_dict_type(&t_any, cctx->ctx_type_list);