0
0
mirror of https://github.com/vim/vim.git synced 2025-09-26 04:04:07 -04:00

patch 8.2.1644: Vim9: cannot assign 1 and 0 to bool at script level

Problem:    Vim9: cannot assign 1 and 0 to bool at script level.
Solution:   Add the TTFLAG_BOOL_OK flag to the type. Fix name of test
            function.
This commit is contained in:
Bram Moolenaar
2020-09-09 18:54:42 +02:00
parent 96f8f499ce
commit ba7c0d7b4c
5 changed files with 43 additions and 11 deletions

View File

@@ -202,11 +202,23 @@ func_type_add_arg_types(
type_T *
typval2type(typval_T *tv, garray_T *type_gap)
{
type_T *actual;
type_T *type;
type_T *member_type;
if (tv->v_type == VAR_NUMBER)
{
if (tv->vval.v_number == 0 || tv->vval.v_number == 1)
{
// number 0 and 1 can also be used for bool
type = alloc_type(type_gap);
if (type == NULL)
return NULL;
type->tt_type = VAR_NUMBER;
type->tt_flags = TTFLAG_BOOL_OK;
return type;
}
return &t_number;
}
if (tv->v_type == VAR_BOOL)
return &t_bool; // not used
if (tv->v_type == VAR_STRING)
@@ -276,13 +288,13 @@ typval2type(typval_T *tv, garray_T *type_gap)
}
}
actual = alloc_type(type_gap);
if (actual == NULL)
type = alloc_type(type_gap);
if (type == NULL)
return NULL;
actual->tt_type = tv->v_type;
actual->tt_member = &t_any;
type->tt_type = tv->v_type;
type->tt_member = &t_any;
return actual;
return type;
}
/*