From: Bram Moolenaar Date: Tue, 25 Feb 2020 21:58:29 +0000 (+0100) Subject: patch 8.2.0318: Vim9: types not sufficiently tested X-Git-Tag: v8.2.0318 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0c2ca58ef06ac49d40330bbe1ee70c3d8af7a648;p=vim patch 8.2.0318: Vim9: types not sufficiently tested Problem: Vim9: types not sufficiently tested. Solution: Add tests with more types. --- diff --git a/src/globals.h b/src/globals.h index 785b69f6e..6f257484d 100644 --- a/src/globals.h +++ b/src/globals.h @@ -403,10 +403,12 @@ EXTERN type_T t_dict_any INIT4(VAR_DICT, 0, &t_any, NULL); EXTERN type_T t_list_empty INIT4(VAR_LIST, 0, &t_void, NULL); EXTERN type_T t_dict_empty INIT4(VAR_DICT, 0, &t_void, NULL); +EXTERN type_T t_list_bool INIT4(VAR_LIST, 0, &t_bool, NULL); EXTERN type_T t_list_number INIT4(VAR_LIST, 0, &t_number, NULL); EXTERN type_T t_list_string INIT4(VAR_LIST, 0, &t_string, NULL); EXTERN type_T t_list_dict_any INIT4(VAR_LIST, 0, &t_dict_any, NULL); +EXTERN type_T t_dict_bool INIT4(VAR_DICT, 0, &t_bool, NULL); EXTERN type_T t_dict_number INIT4(VAR_DICT, 0, &t_number, NULL); EXTERN type_T t_dict_string INIT4(VAR_DICT, 0, &t_string, NULL); diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index fb7d39f41..5ece65274 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -861,4 +861,8 @@ func Test_expr_fails() call CheckDefExecFailure("CallMe ('yes')", 'E492:') call CheckDefFailure("CallMe2('yes','no')", 'E1069:') call CheckDefFailure("CallMe2('yes' , 'no')", 'E1068:') + + call CheckDefFailure("v:nosuch += 3", 'E1001:') + call CheckDefFailure("let v:version = 3", 'E1064:') + call CheckDefFailure("let asdf = v:nosuch", 'E1001:') endfunc diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index c68d29f88..938dc6340 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -37,14 +37,20 @@ def Test_assignment() let bool2: bool = false assert_equal(v:false, bool2) - let list1: list = ['sdf', 'asdf'] + let list1: list = [false, true, false] let list2: list = [1, 2, 3] + let list3: list = ['sdf', 'asdf'] + let list4: list = ['yes', true, 1234] + let list5: list = [0z01, 0z02] let listS: list = [] let listN: list = [] - let dict1: dict = #{key: 'value'} + let dict1: dict = #{one: false, two: true} let dict2: dict = #{one: 1, two: 2} + let dict3: dict = #{key: 'value'} + let dict4: dict = #{one: 1, two: '2'} + let dict5: dict = #{one: 0z01, tw: 0z02} g:newvar = 'new' assert_equal('new', g:newvar) diff --git a/src/version.c b/src/version.c index 5d76c5ee8..c5dccf4d4 100644 --- a/src/version.c +++ b/src/version.c @@ -738,6 +738,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 318, /**/ 317, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index e21f5cbe7..d62df6ed4 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -213,6 +213,8 @@ get_list_type(type_T *member_type, garray_T *type_list) return &t_list_any; if (member_type->tt_type == VAR_VOID) return &t_list_empty; + if (member_type->tt_type == VAR_BOOL) + return &t_list_bool; if (member_type->tt_type == VAR_NUMBER) return &t_list_number; if (member_type->tt_type == VAR_STRING) @@ -238,6 +240,8 @@ get_dict_type(type_T *member_type, garray_T *type_list) return &t_dict_any; if (member_type->tt_type == VAR_VOID) return &t_dict_empty; + if (member_type->tt_type == VAR_BOOL) + return &t_dict_bool; if (member_type->tt_type == VAR_NUMBER) return &t_dict_number; if (member_type->tt_type == VAR_STRING)