diff options
-rw-r--r-- | src/eval.c | 4 | ||||
-rw-r--r-- | src/evalfunc.c | 4 | ||||
-rw-r--r-- | src/testdir/test_vim9_builtin.vim | 2 | ||||
-rw-r--r-- | src/testdir/test_vim9_class.vim | 26 | ||||
-rw-r--r-- | src/testdir/test_vim9_script.vim | 28 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9type.c | 2 |
7 files changed, 36 insertions, 32 deletions
diff --git a/src/eval.c b/src/eval.c index 21ba1bcfcd..a91ca2d3e5 100644 --- a/src/eval.c +++ b/src/eval.c @@ -6403,9 +6403,9 @@ echo_string_core( { class_T *cl = tv->vval.v_class; char *s = "class"; - if (cl && IS_INTERFACE(cl)) + if (cl != NULL && IS_INTERFACE(cl)) s = "interface"; - else if (cl && IS_ENUM(cl)) + else if (cl != NULL && IS_ENUM(cl)) s = "enum"; size_t len = STRLEN(s) + 1 + (cl == NULL ? 9 : STRLEN(cl->class_name)) + 1; diff --git a/src/evalfunc.c b/src/evalfunc.c index 742c5f8e79..8ee5cbddd5 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -3958,7 +3958,7 @@ f_empty(typval_T *argvars, typval_T *rettv) || *argvars[0].vval.v_string == NUL; break; case VAR_PARTIAL: - n = FALSE; + n = argvars[0].vval.v_partial == NULL; break; case VAR_NUMBER: n = argvars[0].vval.v_number == 0; @@ -11497,7 +11497,7 @@ f_type(typval_T *argvars, typval_T *rettv) case VAR_CLASS: { class_T *cl = argvars[0].vval.v_class; - if (cl && IS_ENUM(cl)) + if (cl != NULL && IS_ENUM(cl)) n = VAR_TYPE_ENUM; else n = VAR_TYPE_CLASS; diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim index 42d09fe9a5..83153ad085 100644 --- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -4783,8 +4783,6 @@ def Test_typename() if has('channel') assert_equal('channel', test_null_channel()->typename()) endif - assert_equal('class<Unknown>', typename(null_class)) - assert_equal('object<Unknown>', typename(null_object)) var l: list<func(list<number>): number> = [function('min')] assert_equal('list<func(list<number>): number>', typename(l)) enddef diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index 0a48b822df..0754af7dec 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -560,7 +560,7 @@ def Test_using_null_class() END v9.CheckSourceSuccess(lines) - # Test for using a null class with string() + # Test for using a null class with type() and typename() lines =<< trim END vim9script assert_equal(12, type(null_class)) @@ -569,30 +569,6 @@ def Test_using_null_class() v9.CheckSourceSuccess(lines) enddef -def Test_using_null_object() - # Test for using a null object as a value - var lines =<< trim END - vim9script - assert_equal(1, empty(null_object)) - END - v9.CheckSourceSuccess(lines) - - # Test for using a null object with string() - lines =<< trim END - vim9script - assert_equal('object of [unknown]', string(null_object)) - END - v9.CheckSourceSuccess(lines) - - # Test for using a null object with string() - lines =<< trim END - vim9script - assert_equal(13, type(null_object)) - assert_equal('object<Unknown>', typename(null_object)) - END - v9.CheckSourceSuccess(lines) -enddef - def Test_class_interface_wrong_end() var lines =<< trim END vim9script diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index a3f21bed02..9ec92b398d 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -5055,6 +5055,34 @@ def Test_eval_lambda_block() v9.CheckSourceSuccess(lines) enddef +" Test for using various null values +def Test_null_values() + var lines =<< trim END + var nullValues = [ + [null, 1, 'null', 7, 'special'], + [null_blob, 1, '0z', 10, 'blob'], + [null_channel, 1, 'channel fail', 9, 'channel'], + [null_dict, 1, '{}', 4, 'dict<any>'], + [null_function, 1, "function('')", 2, 'func(...): unknown'], + [null_job, 1, 'no process', 8, 'job'], + [null_list, 1, '[]', 3, 'list<any>'], + [null_object, 1, 'object of [unknown]', 13, 'object<Unknown>'], + [null_partial, 1, "function('')", 2, 'func(...): unknown'], + [null_string, 1, "''", 1, 'string'] + ] + + for [Val, emptyExp, stringExp, typeExp, typenameExp] in nullValues + assert_equal(emptyExp, empty(Val)) + assert_equal(stringExp, string(Val)) + assert_equal(typeExp, type(Val)) + assert_equal(typenameExp, typename(Val)) + assert_equal(Val, copy(Val)) + assert_equal(-1, test_refcount(Val)) + endfor + END + v9.CheckSourceDefAndScriptSuccess(lines) +enddef + " Keep this last, it messes up highlighting. def Test_substitute_cmd() new diff --git a/src/version.c b/src/version.c index ee336f82ca..6dbd93a7f6 100644 --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 387, +/**/ 386, /**/ 385, diff --git a/src/vim9type.c b/src/vim9type.c index ab7efce7a0..517dee2805 100644 --- a/src/vim9type.c +++ b/src/vim9type.c @@ -2093,7 +2093,7 @@ check_typval_is_value(typval_T *tv) class_T *cl = tv->vval.v_class; char_u *class_name = (cl == NULL) ? (char_u *)"" : cl->class_name; - if (cl && IS_ENUM(cl)) + if (cl != NULL && IS_ENUM(cl)) semsg(_(e_using_enum_as_value_str), class_name); else semsg(_(e_using_class_as_value_str), class_name); |