diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2017-02-28 09:57:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-28 09:57:46 +0100 |
commit | 2872e57af26685cd485c7419ffaccee779927a1b (patch) | |
tree | 3288f0c6b69552e19d8de4014194a1b60c97bcfc /src/nvim/eval.c | |
parent | 5ed753044d650e7c2c0b65f0b04831097078d48a (diff) | |
parent | adc6e636fea64a432656d747f3979d682c94d6e2 (diff) | |
download | rneovim-2872e57af26685cd485c7419ffaccee779927a1b.tar.gz rneovim-2872e57af26685cd485c7419ffaccee779927a1b.tar.bz2 rneovim-2872e57af26685cd485c7419ffaccee779927a1b.zip |
Merge #6191 from jamessan/vim-42ebd06
vim-patch:42ebd06,7.4.2098,6f1d9a0,7.4.2095
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 3b8b38588b..6dc7e5606e 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -8111,6 +8111,30 @@ static void f_assert_fails(typval_T *argvars, typval_T *rettv, FunPtr fptr) set_vim_var_string(VV_ERRMSG, NULL, 0); } +void assert_inrange(typval_T *argvars) +{ + int error = (int)false; + varnumber_T lower = get_tv_number_chk(&argvars[0], &error); + varnumber_T upper = get_tv_number_chk(&argvars[1], &error); + varnumber_T actual = get_tv_number_chk(&argvars[2], &error); + + if (error) { + return; + } + if (actual < lower || actual > upper) { + garray_T ga; + prepare_assert_error(&ga); + + char msg[55]; + vim_snprintf(msg, sizeof(msg), "range %" PRId64 " - %" PRId64 ",", + (int64_t)lower, (int64_t)upper); + fill_assert_error(&ga, &argvars[3], (char_u *)msg, NULL, &argvars[2], + ASSERT_INRANGE); + assert_error(&ga); + ga_clear(&ga); + } +} + // Common for assert_true() and assert_false(). static void assert_bool(typval_T *argvars, bool is_true) { @@ -8158,6 +8182,12 @@ static void assert_match_common(typval_T *argvars, assert_type_T atype) } } +/// "assert_inrange(lower, upper[, msg])" function +static void f_assert_inrange(typval_T *argvars, typval_T *rettv, FunPtr fptr) +{ + assert_inrange(argvars); +} + /// "assert_match(pattern, actual[, msg])" function static void f_assert_match(typval_T *argvars, typval_T *rettv, FunPtr fptr) { |