Mercurial > vim
diff src/evalfunc.c @ 17377:cb008de2a6ec v8.1.1687
patch 8.1.1687: the evalfunc.c file is too big
commit https://github.com/vim/vim/commit/ecaa70ea29c269dd0dabd3cd5acdfa0ce42ccd54
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jul 14 14:55:39 2019 +0200
patch 8.1.1687: the evalfunc.c file is too big
Problem: The evalfunc.c file is too big.
Solution: Move testing support to a separate file.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 14 Jul 2019 15:00:05 +0200 |
parents | 9843fbfa0ee5 |
children | dfd87ef822aa |
line wrap: on
line diff
--- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -41,18 +41,6 @@ static void f_argc(typval_T *argvars, ty static void f_argidx(typval_T *argvars, typval_T *rettv); static void f_arglistid(typval_T *argvars, typval_T *rettv); static void f_argv(typval_T *argvars, typval_T *rettv); -static void f_assert_beeps(typval_T *argvars, typval_T *rettv); -static void f_assert_equal(typval_T *argvars, typval_T *rettv); -static void f_assert_equalfile(typval_T *argvars, typval_T *rettv); -static void f_assert_exception(typval_T *argvars, typval_T *rettv); -static void f_assert_fails(typval_T *argvars, typval_T *rettv); -static void f_assert_false(typval_T *argvars, typval_T *rettv); -static void f_assert_inrange(typval_T *argvars, typval_T *rettv); -static void f_assert_match(typval_T *argvars, typval_T *rettv); -static void f_assert_notequal(typval_T *argvars, typval_T *rettv); -static void f_assert_notmatch(typval_T *argvars, typval_T *rettv); -static void f_assert_report(typval_T *argvars, typval_T *rettv); -static void f_assert_true(typval_T *argvars, typval_T *rettv); #ifdef FEAT_FLOAT static void f_asin(typval_T *argvars, typval_T *rettv); static void f_atan(typval_T *argvars, typval_T *rettv); @@ -396,34 +384,6 @@ static void f_tabpagewinnr(typval_T *arg static void f_taglist(typval_T *argvars, typval_T *rettv); static void f_tagfiles(typval_T *argvars, typval_T *rettv); static void f_tempname(typval_T *argvars, typval_T *rettv); -static void f_test_alloc_fail(typval_T *argvars, typval_T *rettv); -static void f_test_autochdir(typval_T *argvars, typval_T *rettv); -static void f_test_feedinput(typval_T *argvars, typval_T *rettv); -static void f_test_getvalue(typval_T *argvars, typval_T *rettv); -static void f_test_option_not_set(typval_T *argvars, typval_T *rettv); -static void f_test_override(typval_T *argvars, typval_T *rettv); -static void f_test_refcount(typval_T *argvars, typval_T *rettv); -static void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv); -static void f_test_garbagecollect_soon(typval_T *argvars, typval_T *rettv); -static void f_test_ignore_error(typval_T *argvars, typval_T *rettv); -static void f_test_null_blob(typval_T *argvars, typval_T *rettv); -#ifdef FEAT_JOB_CHANNEL -static void f_test_null_channel(typval_T *argvars, typval_T *rettv); -#endif -static void f_test_null_dict(typval_T *argvars, typval_T *rettv); -#ifdef FEAT_JOB_CHANNEL -static void f_test_null_job(typval_T *argvars, typval_T *rettv); -#endif -static void f_test_null_list(typval_T *argvars, typval_T *rettv); -static void f_test_null_partial(typval_T *argvars, typval_T *rettv); -static void f_test_null_string(typval_T *argvars, typval_T *rettv); -#ifdef FEAT_GUI -static void f_test_scrollbar(typval_T *argvars, typval_T *rettv); -#endif -#ifdef FEAT_MOUSE -static void f_test_setmouse(typval_T *argvars, typval_T *rettv); -#endif -static void f_test_settime(typval_T *argvars, typval_T *rettv); #ifdef FEAT_FLOAT static void f_tan(typval_T *argvars, typval_T *rettv); static void f_tanh(typval_T *argvars, typval_T *rettv); @@ -1609,114 +1569,6 @@ f_argv(typval_T *argvars, typval_T *rett get_arglist_as_rettv(ARGLIST, ARGCOUNT, rettv); } -/* - * "assert_beeps(cmd [, error])" function - */ - static void -f_assert_beeps(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_beeps(argvars); -} - -/* - * "assert_equal(expected, actual[, msg])" function - */ - static void -f_assert_equal(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_equal_common(argvars, ASSERT_EQUAL); -} - -/* - * "assert_equalfile(fname-one, fname-two)" function - */ - static void -f_assert_equalfile(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_equalfile(argvars); -} - -/* - * "assert_notequal(expected, actual[, msg])" function - */ - static void -f_assert_notequal(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_equal_common(argvars, ASSERT_NOTEQUAL); -} - -/* - * "assert_exception(string[, msg])" function - */ - static void -f_assert_exception(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_exception(argvars); -} - -/* - * "assert_fails(cmd [, error[, msg]])" function - */ - static void -f_assert_fails(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_fails(argvars); -} - -/* - * "assert_false(actual[, msg])" function - */ - static void -f_assert_false(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_bool(argvars, FALSE); -} - -/* - * "assert_inrange(lower, upper[, msg])" function - */ - static void -f_assert_inrange(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_inrange(argvars); -} - -/* - * "assert_match(pattern, actual[, msg])" function - */ - static void -f_assert_match(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_match_common(argvars, ASSERT_MATCH); -} - -/* - * "assert_notmatch(pattern, actual[, msg])" function - */ - static void -f_assert_notmatch(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_match_common(argvars, ASSERT_NOTMATCH); -} - -/* - * "assert_report(msg)" function - */ - static void -f_assert_report(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_report(argvars); -} - -/* - * "assert_true(actual[, msg])" function - */ - static void -f_assert_true(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = assert_bool(argvars, TRUE); -} - #ifdef FEAT_FLOAT /* * "asin()" function @@ -13547,351 +13399,6 @@ f_tanh(typval_T *argvars, typval_T *rett #endif /* - * "test_alloc_fail(id, countdown, repeat)" function - */ - static void -f_test_alloc_fail(typval_T *argvars, typval_T *rettv UNUSED) -{ - if (argvars[0].v_type != VAR_NUMBER - || argvars[0].vval.v_number <= 0 - || argvars[1].v_type != VAR_NUMBER - || argvars[1].vval.v_number < 0 - || argvars[2].v_type != VAR_NUMBER) - emsg(_(e_invarg)); - else - { - alloc_fail_id = argvars[0].vval.v_number; - if (alloc_fail_id >= aid_last) - emsg(_(e_invarg)); - alloc_fail_countdown = argvars[1].vval.v_number; - alloc_fail_repeat = argvars[2].vval.v_number; - did_outofmem_msg = FALSE; - } -} - -/* - * "test_autochdir()" - */ - static void -f_test_autochdir(typval_T *argvars UNUSED, typval_T *rettv UNUSED) -{ -#if defined(FEAT_AUTOCHDIR) - test_autochdir = TRUE; -#endif -} - -/* - * "test_feedinput()" - */ - static void -f_test_feedinput(typval_T *argvars, typval_T *rettv UNUSED) -{ -#ifdef USE_INPUT_BUF - char_u *val = tv_get_string_chk(&argvars[0]); - - if (val != NULL) - { - trash_input_buf(); - add_to_input_buf_csi(val, (int)STRLEN(val)); - } -#endif -} - -/* - * "test_getvalue({name})" function - */ - static void -f_test_getvalue(typval_T *argvars, typval_T *rettv) -{ - if (argvars[0].v_type != VAR_STRING) - emsg(_(e_invarg)); - else - { - char_u *name = tv_get_string(&argvars[0]); - - if (STRCMP(name, (char_u *)"need_fileinfo") == 0) - rettv->vval.v_number = need_fileinfo; - else - semsg(_(e_invarg2), name); - } -} - -/* - * "test_option_not_set({name})" function - */ - static void -f_test_option_not_set(typval_T *argvars, typval_T *rettv UNUSED) -{ - char_u *name = (char_u *)""; - - if (argvars[0].v_type != VAR_STRING) - emsg(_(e_invarg)); - else - { - name = tv_get_string(&argvars[0]); - if (reset_option_was_set(name) == FAIL) - semsg(_(e_invarg2), name); - } -} - -/* - * "test_override({name}, {val})" function - */ - static void -f_test_override(typval_T *argvars, typval_T *rettv UNUSED) -{ - char_u *name = (char_u *)""; - int val; - static int save_starting = -1; - - if (argvars[0].v_type != VAR_STRING - || (argvars[1].v_type) != VAR_NUMBER) - emsg(_(e_invarg)); - else - { - name = tv_get_string(&argvars[0]); - val = (int)tv_get_number(&argvars[1]); - - if (STRCMP(name, (char_u *)"redraw") == 0) - disable_redraw_for_testing = val; - else if (STRCMP(name, (char_u *)"redraw_flag") == 0) - ignore_redraw_flag_for_testing = val; - else if (STRCMP(name, (char_u *)"char_avail") == 0) - disable_char_avail_for_testing = val; - else if (STRCMP(name, (char_u *)"starting") == 0) - { - if (val) - { - if (save_starting < 0) - save_starting = starting; - starting = 0; - } - else - { - starting = save_starting; - save_starting = -1; - } - } - else if (STRCMP(name, (char_u *)"nfa_fail") == 0) - nfa_fail_for_testing = val; - else if (STRCMP(name, (char_u *)"no_query_mouse") == 0) - no_query_mouse_for_testing = val; - else if (STRCMP(name, (char_u *)"no_wait_return") == 0) - no_wait_return = val; - else if (STRCMP(name, (char_u *)"ALL") == 0) - { - disable_char_avail_for_testing = FALSE; - disable_redraw_for_testing = FALSE; - ignore_redraw_flag_for_testing = FALSE; - nfa_fail_for_testing = FALSE; - no_query_mouse_for_testing = FALSE; - if (save_starting >= 0) - { - starting = save_starting; - save_starting = -1; - } - } - else - semsg(_(e_invarg2), name); - } -} - -/* - * "test_refcount({expr})" function - */ - static void -f_test_refcount(typval_T *argvars, typval_T *rettv) -{ - int retval = -1; - - switch (argvars[0].v_type) - { - case VAR_UNKNOWN: - case VAR_NUMBER: - case VAR_FLOAT: - case VAR_SPECIAL: - case VAR_STRING: - break; - case VAR_JOB: -#ifdef FEAT_JOB_CHANNEL - if (argvars[0].vval.v_job != NULL) - retval = argvars[0].vval.v_job->jv_refcount - 1; -#endif - break; - case VAR_CHANNEL: -#ifdef FEAT_JOB_CHANNEL - if (argvars[0].vval.v_channel != NULL) - retval = argvars[0].vval.v_channel->ch_refcount - 1; -#endif - break; - case VAR_FUNC: - if (argvars[0].vval.v_string != NULL) - { - ufunc_T *fp; - - fp = find_func(argvars[0].vval.v_string); - if (fp != NULL) - retval = fp->uf_refcount; - } - break; - case VAR_PARTIAL: - if (argvars[0].vval.v_partial != NULL) - retval = argvars[0].vval.v_partial->pt_refcount - 1; - break; - case VAR_BLOB: - if (argvars[0].vval.v_blob != NULL) - retval = argvars[0].vval.v_blob->bv_refcount - 1; - break; - case VAR_LIST: - if (argvars[0].vval.v_list != NULL) - retval = argvars[0].vval.v_list->lv_refcount - 1; - break; - case VAR_DICT: - if (argvars[0].vval.v_dict != NULL) - retval = argvars[0].vval.v_dict->dv_refcount - 1; - break; - } - - rettv->v_type = VAR_NUMBER; - rettv->vval.v_number = retval; - -} - -/* - * "test_garbagecollect_now()" function - */ - static void -f_test_garbagecollect_now(typval_T *argvars UNUSED, typval_T *rettv UNUSED) -{ - /* This is dangerous, any Lists and Dicts used internally may be freed - * while still in use. */ - garbage_collect(TRUE); -} - -/* - * "test_garbagecollect_soon()" function - */ - static void -f_test_garbagecollect_soon(typval_T *argvars UNUSED, typval_T *rettv UNUSED) -{ - may_garbage_collect = TRUE; -} - -/* - * "test_ignore_error()" function - */ - static void -f_test_ignore_error(typval_T *argvars, typval_T *rettv UNUSED) -{ - ignore_error_for_testing(tv_get_string(&argvars[0])); -} - - static void -f_test_null_blob(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv->v_type = VAR_BLOB; - rettv->vval.v_blob = NULL; -} - -#ifdef FEAT_JOB_CHANNEL - static void -f_test_null_channel(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv->v_type = VAR_CHANNEL; - rettv->vval.v_channel = NULL; -} -#endif - - static void -f_test_null_dict(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv_dict_set(rettv, NULL); -} - -#ifdef FEAT_JOB_CHANNEL - static void -f_test_null_job(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv->v_type = VAR_JOB; - rettv->vval.v_job = NULL; -} -#endif - - static void -f_test_null_list(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv_list_set(rettv, NULL); -} - - static void -f_test_null_partial(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv->v_type = VAR_PARTIAL; - rettv->vval.v_partial = NULL; -} - - static void -f_test_null_string(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv->v_type = VAR_STRING; - rettv->vval.v_string = NULL; -} - -#ifdef FEAT_GUI - static void -f_test_scrollbar(typval_T *argvars, typval_T *rettv UNUSED) -{ - char_u *which; - long value; - int dragging; - scrollbar_T *sb = NULL; - - if (argvars[0].v_type != VAR_STRING - || (argvars[1].v_type) != VAR_NUMBER - || (argvars[2].v_type) != VAR_NUMBER) - { - emsg(_(e_invarg)); - return; - } - which = tv_get_string(&argvars[0]); - value = tv_get_number(&argvars[1]); - dragging = tv_get_number(&argvars[2]); - - if (STRCMP(which, "left") == 0) - sb = &curwin->w_scrollbars[SBAR_LEFT]; - else if (STRCMP(which, "right") == 0) - sb = &curwin->w_scrollbars[SBAR_RIGHT]; - else if (STRCMP(which, "hor") == 0) - sb = &gui.bottom_sbar; - if (sb == NULL) - { - semsg(_(e_invarg2), which); - return; - } - gui_drag_scrollbar(sb, value, dragging); -# ifndef USE_ON_FLY_SCROLL - // need to loop through normal_cmd() to handle the scroll events - exec_normal(FALSE, TRUE, FALSE); -# endif -} -#endif - -#ifdef FEAT_MOUSE - static void -f_test_setmouse(typval_T *argvars, typval_T *rettv UNUSED) -{ - mouse_row = (time_t)tv_get_number(&argvars[0]) - 1; - mouse_col = (time_t)tv_get_number(&argvars[1]) - 1; -} -#endif - - static void -f_test_settime(typval_T *argvars, typval_T *rettv UNUSED) -{ - time_for_testing = (time_t)tv_get_number(&argvars[0]); -} - -/* * Get a callback from "arg". It can be a Funcref or a function name. * When "arg" is zero return an empty string. * "cb_name" is not allocated.