Mercurial > vim
comparison src/testing.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 | 847cc7932c42 |
children | 94eda51ba9ba |
comparison
equal
deleted
inserted
replaced
19101:7c682fab000b | 19102:ba9f50bfda83 |
---|---|
220 assert_bool(typval_T *argvars, int isTrue) | 220 assert_bool(typval_T *argvars, int isTrue) |
221 { | 221 { |
222 int error = FALSE; | 222 int error = FALSE; |
223 garray_T ga; | 223 garray_T ga; |
224 | 224 |
225 if (argvars[0].v_type == VAR_SPECIAL | 225 if (argvars[0].v_type == VAR_BOOL |
226 && argvars[0].vval.v_number == (isTrue ? VVAL_TRUE : VVAL_FALSE)) | 226 && argvars[0].vval.v_number == (isTrue ? VVAL_TRUE : VVAL_FALSE)) |
227 return 0; | 227 return 0; |
228 if (argvars[0].v_type != VAR_NUMBER | 228 if (argvars[0].v_type != VAR_NUMBER |
229 || (tv_get_number_chk(&argvars[0], &error) == 0) == isTrue | 229 || (tv_get_number_chk(&argvars[0], &error) == 0) == isTrue |
230 || error) | 230 || error) |
758 switch (argvars[0].v_type) | 758 switch (argvars[0].v_type) |
759 { | 759 { |
760 case VAR_UNKNOWN: | 760 case VAR_UNKNOWN: |
761 case VAR_NUMBER: | 761 case VAR_NUMBER: |
762 case VAR_FLOAT: | 762 case VAR_FLOAT: |
763 case VAR_BOOL: | |
763 case VAR_SPECIAL: | 764 case VAR_SPECIAL: |
764 case VAR_STRING: | 765 case VAR_STRING: |
765 break; | 766 break; |
766 case VAR_JOB: | 767 case VAR_JOB: |
767 #ifdef FEAT_JOB_CHANNEL | 768 #ifdef FEAT_JOB_CHANNEL |