comparison src/if_ruby.c @ 19102:ba9f50bfda83 v8.2.0111

patch 8.2.0111: VAR_SPECIAL is also used for booleans Commit: https://github.com/vim/vim/commit/9b4a15d5dba354d2e1e02871470bad103f34769a Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 11 16:05:23 2020 +0100 patch 8.2.0111: VAR_SPECIAL is also used for booleans Problem: VAR_SPECIAL is also used for booleans. Solution: Add VAR_BOOL for better type checking.
author Bram Moolenaar <Bram@vim.org>
date Sat, 11 Jan 2020 16:15:04 +0100
parents 23df4b83fd31
children 1cae476a7c82
comparison
equal deleted inserted replaced
19101:7c682fab000b 19102:ba9f50bfda83
1181 vim_to_ruby(&di->di_tv)); 1181 vim_to_ruby(&di->di_tv));
1182 } 1182 }
1183 } 1183 }
1184 } 1184 }
1185 } 1185 }
1186 else if (tv->v_type == VAR_SPECIAL) 1186 else if (tv->v_type == VAR_BOOL || tv->v_type == VAR_SPECIAL)
1187 { 1187 {
1188 if (tv->vval.v_number == VVAL_TRUE) 1188 if (tv->vval.v_number == VVAL_TRUE)
1189 result = Qtrue; 1189 result = Qtrue;
1190 else if (tv->vval.v_number == VVAL_FALSE) 1190 else if (tv->vval.v_number == VVAL_FALSE)
1191 result = Qfalse; 1191 result = Qfalse;
1825 case T_NIL: 1825 case T_NIL:
1826 rettv->v_type = VAR_SPECIAL; 1826 rettv->v_type = VAR_SPECIAL;
1827 rettv->vval.v_number = VVAL_NULL; 1827 rettv->vval.v_number = VVAL_NULL;
1828 break; 1828 break;
1829 case T_TRUE: 1829 case T_TRUE:
1830 rettv->v_type = VAR_SPECIAL; 1830 rettv->v_type = VAR_BOOL;
1831 rettv->vval.v_number = VVAL_TRUE; 1831 rettv->vval.v_number = VVAL_TRUE;
1832 break; 1832 break;
1833 case T_FALSE: 1833 case T_FALSE:
1834 rettv->v_type = VAR_SPECIAL; 1834 rettv->v_type = VAR_BOOL;
1835 rettv->vval.v_number = VVAL_FALSE; 1835 rettv->vval.v_number = VVAL_FALSE;
1836 break; 1836 break;
1837 case T_BIGNUM: 1837 case T_BIGNUM:
1838 case T_FIXNUM: 1838 case T_FIXNUM:
1839 rettv->v_type = VAR_NUMBER; 1839 rettv->v_type = VAR_NUMBER;