aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c30
-rw-r--r--src/nvim/eval.lua1
-rw-r--r--src/nvim/eval_defs.h1
-rw-r--r--src/nvim/version.c2
4 files changed, 33 insertions, 1 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)
{
diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua
index fa19ff209e..e3c5981b32 100644
--- a/src/nvim/eval.lua
+++ b/src/nvim/eval.lua
@@ -29,6 +29,7 @@ return {
assert_exception={args={1, 2}},
assert_fails={args={1, 2}},
assert_false={args={1, 2}},
+ assert_inrange={args={2, 3}},
assert_match={args={2, 3}},
assert_notequal={args={2, 3}},
assert_notmatch={args={2, 3}},
diff --git a/src/nvim/eval_defs.h b/src/nvim/eval_defs.h
index fb2822b851..39028fdb11 100644
--- a/src/nvim/eval_defs.h
+++ b/src/nvim/eval_defs.h
@@ -278,6 +278,7 @@ typedef enum
ASSERT_NOTEQUAL,
ASSERT_MATCH,
ASSERT_NOTMATCH,
+ ASSERT_INRANGE,
ASSERT_OTHER,
} assert_type_T;
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 87acb3f361..46009de4ea 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -345,7 +345,7 @@ static int included_patches[] = {
2098,
// 2097,
2096,
- // 2095,
+ 2095,
// 2094 NA
// 2093 NA
// 2092 NA