patch 8.2.4489: failing test for comparing v:null with number v8.2.4489
authorBram Moolenaar <Bram@vim.org>
Wed, 2 Mar 2022 13:13:30 +0000 (13:13 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 2 Mar 2022 13:13:30 +0000 (13:13 +0000)
Problem:    Failing test for comparing v:null with number.
Solution:   Allow comparing v:null with number in legacy script.
            (Ken Takata, closes #9873)  Also do this for float.

src/testdir/test_vimscript.vim
src/typval.c
src/version.c

index f497498ba930daa8a201a0ad7daf1d17ab1c78b0..24dfd1b23fc306a52f33e7817d455f95f8d9e516 100644 (file)
@@ -6546,9 +6546,16 @@ func Test_type()
     call assert_true(v:true != v:false)
 
     call assert_true(v:null == 0)
+    call assert_false(v:null == 1)
     call assert_false(v:null != 0)
     call assert_true(v:none == 0)
+    call assert_false(v:none == 1)
     call assert_false(v:none != 0)
+    if has('float')
+      call assert_true(v:null == 0.0)
+      call assert_false(v:null == 0.1)
+      call assert_false(v:null != 0.0)
+    endif
 
     call assert_true(v:false is v:false)
     call assert_true(v:true is v:true)
index 38b81e88486f3d4cf853663371a5c20e1b879355..e89ba9e7609c10288a2455e96011801fe8e5573a 100644 (file)
@@ -1405,6 +1405,15 @@ typval_compare_null(typval_T *tv1, typval_T *tv2)
            case VAR_LIST: return tv->vval.v_list == NULL;
            case VAR_PARTIAL: return tv->vval.v_partial == NULL;
            case VAR_STRING: return tv->vval.v_string == NULL;
+
+           case VAR_NUMBER: if (!in_vim9script())
+                                return tv->vval.v_number == 0;
+                            break;
+#ifdef FEAT_FLOAT
+           case VAR_FLOAT: if (!in_vim9script())
+                                return tv->vval.v_float == 0.0;
+                            break;
+#endif
            default: break;
        }
     }
index 3918e7439de9c1f72f9060ce237d60f70f837037..b212379ce9e10a974a2949aef7f5a8c8f178acf0 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4489,
 /**/
     4488,
 /**/