# HG changeset patch # User Christian Brabandt # Date 1448981104 -3600 # Node ID 2a4593702d5c4b936bd51ebfe33e9c021cf1723f # Parent e3c1878936668afac6f102d4bc538fd545113ead commit https://github.com/vim/vim/commit/bbfbaf9741deebb9f1ed790885bd571c4cbce17a Author: Bram Moolenaar Date: Tue Dec 1 15:32:56 2015 +0100 patch 7.4.946 Problem: Missing changes in source file. Solution: Include changes to the eval.c file. diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -473,9 +473,9 @@ static void f_argc __ARGS((typval_T *arg static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv)); static void f_arglistid __ARGS((typval_T *argvars, typval_T *rettv)); static void f_argv __ARGS((typval_T *argvars, typval_T *rettv)); -static void f_assertEqual __ARGS((typval_T *argvars, typval_T *rettv)); -static void f_assertFalse __ARGS((typval_T *argvars, typval_T *rettv)); -static void f_assertTrue __ARGS((typval_T *argvars, typval_T *rettv)); +static void f_assert_equal __ARGS((typval_T *argvars, typval_T *rettv)); +static void f_assert_false __ARGS((typval_T *argvars, typval_T *rettv)); +static void f_assert_true __ARGS((typval_T *argvars, typval_T *rettv)); #ifdef FEAT_FLOAT static void f_asin __ARGS((typval_T *argvars, typval_T *rettv)); static void f_atan __ARGS((typval_T *argvars, typval_T *rettv)); @@ -8072,9 +8072,9 @@ static struct fst {"argidx", 0, 0, f_argidx}, {"arglistid", 0, 2, f_arglistid}, {"argv", 0, 1, f_argv}, - {"assertEqual", 2, 3, f_assertEqual}, - {"assertFalse", 1, 2, f_assertFalse}, - {"assertTrue", 1, 2, f_assertTrue}, + {"assert_equal", 2, 3, f_assert_equal}, + {"assert_false", 1, 2, f_assert_false}, + {"assert_true", 1, 2, f_assert_true}, #ifdef FEAT_FLOAT {"asin", 1, 1, f_asin}, /* WJMc */ {"atan", 1, 1, f_atan}, @@ -9131,27 +9131,16 @@ f_argv(argvars, rettv) alist_name(&ARGLIST[idx]), -1); } -static void assertError __ARGS((garray_T *gap)); -static void prepareForAssertError __ARGS((garray_T*gap)); -static void assertBool __ARGS((typval_T *argvars, int isTrue)); - -/* - * Add an assert error to v:errors. - */ - static void -assertError(gap) - garray_T *gap; -{ - struct vimvar *vp = &vimvars[VV_ERRORS]; - - if (vp->vv_type != VAR_LIST || vimvars[VV_ERRORS].vv_list == NULL) - /* Make sure v:errors is a list. */ - set_vim_var_list(VV_ERRORS, list_alloc()); - list_append_string(vimvars[VV_ERRORS].vv_list, gap->ga_data, gap->ga_len); -} - - static void -prepareForAssertError(gap) +static void prepare_assert_error __ARGS((garray_T*gap)); +static void fill_assert_error __ARGS((garray_T *gap, typval_T *opt_msg_tv, char_u *exp_str, typval_T *exp_tv, typval_T *got_tv)); +static void assert_error __ARGS((garray_T *gap)); +static void assert_bool __ARGS((typval_T *argvars, int isTrue)); + +/* + * Prepare "gap" for an assert error and add the sourcing position. + */ + static void +prepare_assert_error(gap) garray_T *gap; { char buf[NUMBUFLEN]; @@ -9160,82 +9149,122 @@ prepareForAssertError(gap) ga_concat(gap, sourcing_name); sprintf(buf, " line %ld", (long)sourcing_lnum); ga_concat(gap, (char_u *)buf); -} - -/* - * "assertEqual(expected, actual[, msg])" function - */ - static void -f_assertEqual(argvars, rettv) + ga_concat(gap, (char_u *)": "); +} + +/* + * Fill "gap" with information about an assert error. + */ + static void +fill_assert_error(gap, opt_msg_tv, exp_str, exp_tv, got_tv) + garray_T *gap; + typval_T *opt_msg_tv; + char_u *exp_str; + typval_T *exp_tv; + typval_T *got_tv; +{ + char_u numbuf[NUMBUFLEN]; + char_u *tofree; + + if (opt_msg_tv->v_type != VAR_UNKNOWN) + { + ga_concat(gap, tv2string(opt_msg_tv, &tofree, numbuf, 0)); + vim_free(tofree); + } + else + { + ga_concat(gap, (char_u *)"Expected "); + if (exp_str == NULL) + { + ga_concat(gap, tv2string(exp_tv, &tofree, numbuf, 0)); + vim_free(tofree); + } + else + ga_concat(gap, exp_str); + ga_concat(gap, (char_u *)" but got "); + ga_concat(gap, tv2string(got_tv, &tofree, numbuf, 0)); + vim_free(tofree); + } +} + +/* + * Add an assert error to v:errors. + */ + static void +assert_error(gap) + garray_T *gap; +{ + struct vimvar *vp = &vimvars[VV_ERRORS]; + + if (vp->vv_type != VAR_LIST || vimvars[VV_ERRORS].vv_list == NULL) + /* Make sure v:errors is a list. */ + set_vim_var_list(VV_ERRORS, list_alloc()); + list_append_string(vimvars[VV_ERRORS].vv_list, gap->ga_data, gap->ga_len); +} + +/* + * "assert_equal(expected, actual[, msg])" function + */ + static void +f_assert_equal(argvars, rettv) typval_T *argvars; typval_T *rettv UNUSED; { garray_T ga; - char_u *tofree; - char_u numbuf[NUMBUFLEN]; if (!tv_equal(&argvars[0], &argvars[1], FALSE, FALSE)) { - prepareForAssertError(&ga); - ga_concat(&ga, (char_u *)": Expected "); - ga_concat(&ga, tv2string(&argvars[0], &tofree, numbuf, 0)); - vim_free(tofree); - ga_concat(&ga, (char_u *)" but got "); - ga_concat(&ga, tv2string(&argvars[1], &tofree, numbuf, 0)); - vim_free(tofree); - assertError(&ga); + prepare_assert_error(&ga); + fill_assert_error(&ga, &argvars[2], NULL, &argvars[0], &argvars[1]); + assert_error(&ga); ga_clear(&ga); } } - static void -assertBool(argvars, isTrue) +/* + * Common for assert_true() and assert_false(). + */ + static void +assert_bool(argvars, isTrue) typval_T *argvars; int isTrue; { int error = FALSE; garray_T ga; - char_u *tofree; - char_u numbuf[NUMBUFLEN]; if (argvars[0].v_type != VAR_NUMBER || (get_tv_number_chk(&argvars[0], &error) == 0) == isTrue || error) { - prepareForAssertError(&ga); - ga_concat(&ga, (char_u *)": Expected "); - if (isTrue) - ga_concat(&ga, (char_u *)"True "); - else - ga_concat(&ga, (char_u *)"False "); - ga_concat(&ga, (char_u *)"but got "); - ga_concat(&ga, tv2string(&argvars[0], &tofree, numbuf, 0)); - vim_free(tofree); - assertError(&ga); + prepare_assert_error(&ga); + fill_assert_error(&ga, &argvars[1], + (char_u *)(isTrue ? "True " : "False "), + NULL, &argvars[0]); + assert_error(&ga); ga_clear(&ga); } } /* - * "assertFalse(actual[, msg])" function - */ - static void -f_assertFalse(argvars, rettv) + * "assert_false(actual[, msg])" function + */ + static void +f_assert_false(argvars, rettv) typval_T *argvars; typval_T *rettv UNUSED; { - assertBool(argvars, FALSE); -} - -/* - * "assertTrue(actual[, msg])" function - */ - static void -f_assertTrue(argvars, rettv) + assert_bool(argvars, FALSE); +} + +/* + * "assert_true(actual[, msg])" function + */ + static void +f_assert_true(argvars, rettv) typval_T *argvars; typval_T *rettv UNUSED; { - assertBool(argvars, TRUE); + assert_bool(argvars, TRUE); } #ifdef FEAT_FLOAT diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 946, +/**/ 945, /**/ 944,