@@ -1246,14 +1246,15 @@ tv_op(typval_T *tv1, typval_T *tv2, char_u *op)
12461246
12471247 // Can't do anything with a Funcref, Dict, v:true on the right.
12481248 if (tv2 -> v_type != VAR_FUNC && tv2 -> v_type != VAR_DICT
1249- && tv2 -> v_type != VAR_SPECIAL )
1249+ && tv2 -> v_type != VAR_BOOL && tv2 -> v_type != VAR_SPECIAL )
12501250 {
12511251 switch (tv1 -> v_type )
12521252 {
12531253 case VAR_UNKNOWN :
12541254 case VAR_DICT :
12551255 case VAR_FUNC :
12561256 case VAR_PARTIAL :
1257+ case VAR_BOOL :
12571258 case VAR_SPECIAL :
12581259 case VAR_JOB :
12591260 case VAR_CHANNEL :
@@ -3016,6 +3017,7 @@ eval_index(
30163017 emsg (_ (e_float_as_string ));
30173018 return FAIL ;
30183019#endif
3020+ case VAR_BOOL :
30193021 case VAR_SPECIAL :
30203022 case VAR_JOB :
30213023 case VAR_CHANNEL :
@@ -3131,6 +3133,7 @@ eval_index(
31313133 case VAR_FUNC :
31323134 case VAR_PARTIAL :
31333135 case VAR_FLOAT :
3136+ case VAR_BOOL :
31343137 case VAR_SPECIAL :
31353138 case VAR_JOB :
31363139 case VAR_CHANNEL :
@@ -3777,6 +3780,7 @@ tv_equal(
37773780 s2 = tv_get_string_buf (tv2 , buf2 );
37783781 return ((ic ? MB_STRICMP (s1 , s2 ) : STRCMP (s1 , s2 )) == 0 );
37793782
3783+ case VAR_BOOL :
37803784 case VAR_SPECIAL :
37813785 return tv1 -> vval .v_number == tv2 -> vval .v_number ;
37823786
@@ -4531,6 +4535,7 @@ echo_string_core(
45314535 break ;
45324536#endif
45334537
4538+ case VAR_BOOL :
45344539 case VAR_SPECIAL :
45354540 * tofree = NULL ;
45364541 r = (char_u * )get_var_special_name (tv -> vval .v_number );
@@ -5359,6 +5364,7 @@ free_tv(typval_T *varp)
53595364 case VAR_NUMBER :
53605365 case VAR_FLOAT :
53615366 case VAR_UNKNOWN :
5367+ case VAR_BOOL :
53625368 case VAR_SPECIAL :
53635369 break ;
53645370 }
@@ -5399,6 +5405,7 @@ clear_tv(typval_T *varp)
53995405 varp -> vval .v_dict = NULL ;
54005406 break ;
54015407 case VAR_NUMBER :
5408+ case VAR_BOOL :
54025409 case VAR_SPECIAL :
54035410 varp -> vval .v_number = 0 ;
54045411 break ;
@@ -5480,6 +5487,7 @@ tv_get_number_chk(typval_T *varp, int *denote)
54805487 case VAR_DICT :
54815488 emsg (_ ("E728: Using a Dictionary as a Number" ));
54825489 break ;
5490+ case VAR_BOOL :
54835491 case VAR_SPECIAL :
54845492 return varp -> vval .v_number == VVAL_TRUE ? 1 : 0 ;
54855493 case VAR_JOB :
@@ -5529,6 +5537,9 @@ tv_get_float(typval_T *varp)
55295537 case VAR_DICT :
55305538 emsg (_ ("E894: Using a Dictionary as a Float" ));
55315539 break ;
5540+ case VAR_BOOL :
5541+ emsg (_ ("E362: Using a boolean value as a Float" ));
5542+ break ;
55325543 case VAR_SPECIAL :
55335544 emsg (_ ("E907: Using a special value as a Float" ));
55345545 break ;
@@ -5618,6 +5629,7 @@ tv_get_string_buf_chk(typval_T *varp, char_u *buf)
56185629 if (varp -> vval .v_string != NULL )
56195630 return varp -> vval .v_string ;
56205631 return (char_u * )"" ;
5632+ case VAR_BOOL :
56215633 case VAR_SPECIAL :
56225634 STRCPY (buf , get_var_special_name (varp -> vval .v_number ));
56235635 return buf ;
@@ -5744,6 +5756,7 @@ copy_tv(typval_T *from, typval_T *to)
57445756 switch (from -> v_type )
57455757 {
57465758 case VAR_NUMBER :
5759+ case VAR_BOOL :
57475760 case VAR_SPECIAL :
57485761 to -> vval .v_number = from -> vval .v_number ;
57495762 break ;
@@ -5850,6 +5863,7 @@ item_copy(
58505863 case VAR_STRING :
58515864 case VAR_FUNC :
58525865 case VAR_PARTIAL :
5866+ case VAR_BOOL :
58535867 case VAR_SPECIAL :
58545868 case VAR_JOB :
58555869 case VAR_CHANNEL :
0 commit comments