From: Bram Moolenaar Date: Sat, 5 Sep 2020 18:50:49 +0000 (+0200) Subject: patch 8.2.1612: Vim9: cannot pass "true" to prop_remove() X-Git-Tag: v8.2.1612 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a5a40c569695a750cace7d29824101ec8ef2b48f;p=vim 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 #6853) --- diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim index 012b3ebf8..f7718124b 100644 --- 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 diff --git a/src/textprop.c b/src/textprop.c index beb9a273d..c291a295f 100644 --- a/src/textprop.c +++ b/src/textprop.c @@ -805,11 +805,10 @@ f_prop_remove(typval_T *argvars, typval_T *rettv) 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_T *rettv) 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_T *rettv) 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'")); diff --git a/src/version.c b/src/version.c index bcece94d5..34516ac76 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1612, /**/ 1611, /**/