Mercurial > vim
comparison src/if_lua.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 | f0f9692d4487 |
children | 94eda51ba9ba |
comparison
equal
deleted
inserted
replaced
19101:7c682fab000b | 19102:ba9f50bfda83 |
---|---|
533 luaV_pushlist(L, tv->vval.v_list); | 533 luaV_pushlist(L, tv->vval.v_list); |
534 break; | 534 break; |
535 case VAR_DICT: | 535 case VAR_DICT: |
536 luaV_pushdict(L, tv->vval.v_dict); | 536 luaV_pushdict(L, tv->vval.v_dict); |
537 break; | 537 break; |
538 case VAR_BOOL: | |
538 case VAR_SPECIAL: | 539 case VAR_SPECIAL: |
539 if (tv->vval.v_number <= VVAL_TRUE) | 540 if (tv->vval.v_number <= VVAL_TRUE) |
540 lua_pushinteger(L, (int) tv->vval.v_number); | 541 lua_pushinteger(L, (int) tv->vval.v_number); |
541 else | 542 else |
542 lua_pushnil(L); | 543 lua_pushnil(L); |
562 int status = OK; | 563 int status = OK; |
563 | 564 |
564 switch (lua_type(L, pos)) | 565 switch (lua_type(L, pos)) |
565 { | 566 { |
566 case LUA_TBOOLEAN: | 567 case LUA_TBOOLEAN: |
567 tv->v_type = VAR_SPECIAL; | 568 tv->v_type = VAR_BOOL; |
568 tv->vval.v_number = (varnumber_T) lua_toboolean(L, pos); | 569 tv->vval.v_number = (varnumber_T) lua_toboolean(L, pos); |
569 break; | 570 break; |
570 case LUA_TNIL: | 571 case LUA_TNIL: |
571 tv->v_type = VAR_SPECIAL; | 572 tv->v_type = VAR_SPECIAL; |
572 tv->vval.v_number = VVAL_NULL; | 573 tv->vval.v_number = VVAL_NULL; |