Mercurial > vim
diff src/evalfunc.c @ 11418:162bcd0debd7 v8.0.0593
patch 8.0.0593: duplication of code for adding a list or dict return value
commit https://github.com/vim/vim/commit/45cf6e910c6d162775ca9d470fac4b6db844001f
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 30 20:25:19 2017 +0200
patch 8.0.0593: duplication of code for adding a list or dict return value
Problem: Duplication of code for adding a list or dict return value.
Solution: Add rettv_dict_set() and rettv_list_set(). (Yegappan Lakshmanan)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 30 Apr 2017 20:30:04 +0200 |
parents | 98abcd1227dc |
children | 5be73ebf6a15 |
line wrap: on
line diff
--- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -3005,8 +3005,7 @@ f_expand(typval_T *argvars, typval_T *re && get_tv_number_chk(&argvars[2], &error) && !error) { - rettv->v_type = VAR_LIST; - rettv->vval.v_list = NULL; + rettv_list_set(rettv, NULL); } s = get_tv_string(&argvars[0]); @@ -3909,12 +3908,7 @@ f_get(typval_T *argvars, typval_T *rettv } } else if (STRCMP(what, "dict") == 0) - { - rettv->v_type = VAR_DICT; - rettv->vval.v_dict = pt->pt_dict; - if (pt->pt_dict != NULL) - ++pt->pt_dict->dv_refcount; - } + rettv_dict_set(rettv, pt->pt_dict); else if (STRCMP(what, "args") == 0) { rettv->v_type = VAR_LIST; @@ -4214,9 +4208,7 @@ f_getbufvar(typval_T *argvars, typval_T if (opts != NULL) { - rettv->v_type = VAR_DICT; - rettv->vval.v_dict = opts; - ++opts->dv_refcount; + rettv_dict_set(rettv, opts); done = TRUE; } } @@ -5372,8 +5364,7 @@ f_glob(typval_T *argvars, typval_T *rett { if (get_tv_number_chk(&argvars[2], &error)) { - rettv->v_type = VAR_LIST; - rettv->vval.v_list = NULL; + rettv_list_set(rettv, NULL); } if (argvars[3].v_type != VAR_UNKNOWN && get_tv_number_chk(&argvars[3], &error)) @@ -5429,8 +5420,7 @@ f_globpath(typval_T *argvars, typval_T * { if (get_tv_number_chk(&argvars[3], &error)) { - rettv->v_type = VAR_LIST; - rettv->vval.v_list = NULL; + rettv_list_set(rettv, NULL); } if (argvars[4].v_type != VAR_UNKNOWN && get_tv_number_chk(&argvars[4], &error)) @@ -9152,9 +9142,7 @@ f_reverse(typval_T *argvars, typval_T *r list_append(l, li); li = ni; } - rettv->vval.v_list = l; - rettv->v_type = VAR_LIST; - ++l->lv_refcount; + rettv_list_set(rettv, l); l->lv_idx = l->lv_len - l->lv_idx - 1; } } @@ -10742,9 +10730,7 @@ do_sort_uniq(typval_T *argvars, typval_T (char_u *)(sort ? N_("sort() argument") : N_("uniq() argument")), TRUE)) goto theend; - rettv->vval.v_list = l; - rettv->v_type = VAR_LIST; - ++l->lv_refcount; + rettv_list_set(rettv, l); len = list_len(l); if (len <= 1) @@ -11832,8 +11818,7 @@ f_synconcealed(typval_T *argvars UNUSED, char_u str[NUMBUFLEN]; #endif - rettv->v_type = VAR_LIST; - rettv->vval.v_list = NULL; + rettv_list_set(rettv, NULL); #if defined(FEAT_SYN_HL) && defined(FEAT_CONCEAL) lnum = get_tv_lnum(argvars); /* -1 on type error */ @@ -11890,8 +11875,7 @@ f_synstack(typval_T *argvars UNUSED, typ int id; #endif - rettv->v_type = VAR_LIST; - rettv->vval.v_list = NULL; + rettv_list_set(rettv, NULL); #ifdef FEAT_SYN_HL lnum = get_tv_lnum(argvars); /* -1 on type error */ @@ -12057,9 +12041,7 @@ get_cmd_output_as_rettv( list_append(list, li); } - ++list->lv_refcount; - rettv->v_type = VAR_LIST; - rettv->vval.v_list = list; + rettv_list_set(rettv, list); list = NULL; } else @@ -12465,8 +12447,7 @@ f_test_null_channel(typval_T *argvars UN static void f_test_null_dict(typval_T *argvars UNUSED, typval_T *rettv) { - rettv->v_type = VAR_DICT; - rettv->vval.v_dict = NULL; + rettv_dict_set(rettv, NULL); } #ifdef FEAT_JOB_CHANNEL @@ -12481,8 +12462,7 @@ f_test_null_job(typval_T *argvars UNUSED static void f_test_null_list(typval_T *argvars UNUSED, typval_T *rettv) { - rettv->v_type = VAR_LIST; - rettv->vval.v_list = NULL; + rettv_list_set(rettv, NULL); } static void