0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

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>
This commit is contained in:
Ernie Rael
2023-12-14 20:06:39 +01:00
committed by Christian Brabandt
parent 2a71b54d35
commit fa831102c3
8 changed files with 120 additions and 12 deletions

View File

@@ -1660,17 +1660,16 @@ get_member_type_from_stack(
// Use "unknown" for an empty list or dict.
if (count == 0)
return &t_unknown;
// Use the first value type for the list member type, then find the common
// type from following items.
// Find the common type from following items.
typep = ((type2_T *)stack->ga_data) + stack->ga_len;
result = (typep -(count * skip) + skip - 1)->type_curr;
for (i = 1; i < count; ++i)
result = &t_unknown;
for (i = 0; i < count; ++i)
{
if (result == &t_any)
break; // won't get more common
type = (typep -((count - i) * skip) + skip - 1)->type_curr;
common_type(type, result, &result, type_gap);
if (check_type_is_value(type) == FAIL)
return NULL;
if (result != &t_any)
common_type(type, result, &result, type_gap);
}
return result;