aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2016-02-06 19:09:24 +0300
committerZyX <kp-pav@yandex.ru>2016-04-18 02:45:49 +0300
commitb7cb8f0597c42f209ec460a1850df53bd655c81c (patch)
treed26023c1a50c7695b1b1cee0e5d2096adee72bcb
parentc91c0171dd7c72717866569be96e48bf838cdf0f (diff)
downloadrneovim-b7cb8f0597c42f209ec460a1850df53bd655c81c.tar.gz
rneovim-b7cb8f0597c42f209ec460a1850df53bd655c81c.tar.bz2
rneovim-b7cb8f0597c42f209ec460a1850df53bd655c81c.zip
eval: Make assert_true and assert_false accept v:true and v:false
-rw-r--r--src/nvim/eval.c12
-rw-r--r--test/functional/eval/special_vars_spec.lua17
2 files changed, 25 insertions, 4 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 22a12d353a..63fd392a3a 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -7587,16 +7587,20 @@ static void f_assert_equal(typval_T *argvars, typval_T *rettv)
}
// Common for assert_true() and assert_false().
-static void assert_bool(typval_T *argvars, bool isTrue)
+static void assert_bool(typval_T *argvars, bool is_true)
{
int error = (int)false;
garray_T ga;
- if (argvars[0].v_type != VAR_NUMBER ||
- (get_tv_number_chk(&argvars[0], &error) == 0) == isTrue || error) {
+ if ((argvars[0].v_type != VAR_NUMBER ||
+ (get_tv_number_chk(&argvars[0], &error) == 0) == is_true || error)
+ && (argvars[0].v_type != VAR_SPECIAL
+ || argvars[0].vval.v_special != (is_true
+ ?kSpecialVarTrue
+ :kSpecialVarFalse))) {
prepare_assert_error(&ga);
fill_assert_error(&ga, &argvars[1],
- (char_u *)(isTrue ? "True" : "False"),
+ (char_u *)(is_true ? "True" : "False"),
NULL, &argvars[0]);
assert_error(&ga);
ga_clear(&ga);
diff --git a/test/functional/eval/special_vars_spec.lua b/test/functional/eval/special_vars_spec.lua
index b5c65d23d9..7539261d49 100644
--- a/test/functional/eval/special_vars_spec.lua
+++ b/test/functional/eval/special_vars_spec.lua
@@ -151,4 +151,21 @@ describe('Special values', function()
eq('Vim(echo):E15: Cannot index a special value', exc_exec('echo v:false[0]'))
eq('Vim(echo):E15: Cannot index a special value', exc_exec('echo v:null[0]'))
end)
+
+ it('is accepted by assert_true and assert_false', function()
+ funcs.assert_false(false)
+ funcs.assert_false(true)
+ eval('assert_false(v:null)')
+
+ funcs.assert_true(false)
+ funcs.assert_true(true)
+ eval('assert_true(v:null)')
+
+ eq({
+ 'Expected False but got v:true',
+ 'Expected False but got v:null',
+ 'Expected True but got v:false',
+ 'Expected True but got v:null',
+ }, meths.get_vvar('errors'))
+ end)
end)