mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	eval: Make assert_true and assert_false accept v:true and v:false
This commit is contained in:
		@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user