changeset 22125:602e660d5ccf v8.2.1612

patch 8.2.1612: Vim9: cannot pass "true" to prop_remove() Commit: https://github.com/vim/vim/commit/a5a40c569695a750cace7d29824101ec8ef2b48f Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 5 20:50:49 2020 +0200 patch 8.2.1612: Vim9: cannot pass "true" to prop_remove() Problem: Vim9: cannot pass "true" to prop_remove(). Solution: Use dict_get_bool(). (closes https://github.com/vim/vim/issues/6853)
author Bram Moolenaar <Bram@vim.org>
date Sat, 05 Sep 2020 21:00:03 +0200
parents 895f24234802
children 4d6795e03a8d
files src/testdir/test_textprop.vim src/textprop.c src/version.c
diffstat 3 files changed, 16 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -321,6 +321,15 @@ func Test_prop_remove()
   bwipe!
 endfunc
 
+def Test_prop_remove_vim9()
+  new
+  call AddPropTypes()
+  call SetupPropsInFirstLine()
+  call assert_equal(1, prop_remove({'type': 'three', 'id': 13, 'both': true, 'all': true}))
+  call DeletePropTypes()
+  bwipe!
+enddef
+
 func SetupOneLine()
   call setline(1, 'xonex xtwoxx')
   normal gg0
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -805,11 +805,10 @@ f_prop_remove(typval_T *argvars, typval_
     linenr_T	lnum;
     dict_T	*dict;
     buf_T	*buf = curbuf;
-    dictitem_T	*di;
-    int		do_all = FALSE;
+    int		do_all;
     int		id = -1;
     int		type_id = -1;
-    int		both = FALSE;
+    int		both;
 
     rettv->vval.v_number = 0;
     if (argvars[0].v_type != VAR_DICT || argvars[0].vval.v_dict == NULL)
@@ -837,9 +836,7 @@ f_prop_remove(typval_T *argvars, typval_
     if (buf->b_ml.ml_mfp == NULL)
 	return;
 
-    di = dict_find(dict, (char_u*)"all", -1);
-    if (di != NULL)
-	do_all = dict_get_number(dict, (char_u *)"all");
+    do_all = dict_get_bool(dict, (char_u *)"all", FALSE);
 
     if (dict_find(dict, (char_u *)"id", -1) != NULL)
 	id = dict_get_number(dict, (char_u *)"id");
@@ -852,8 +849,8 @@ f_prop_remove(typval_T *argvars, typval_
 	    return;
 	type_id = type->pt_id;
     }
-    if (dict_find(dict, (char_u *)"both", -1) != NULL)
-	both = dict_get_number(dict, (char_u *)"both");
+    both = dict_get_bool(dict, (char_u *)"both", FALSE);
+
     if (id == -1 && type_id == -1)
     {
 	emsg(_("E968: Need at least one of 'id' or 'type'"));
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1612,
+/**/
     1611,
 /**/
     1610,