diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-02-06 22:06:54 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-02-06 22:06:54 +0100 |
commit | 04d0522046e79d0e13c1317ad34bf228722ec728 (patch) | |
tree | ae5bf89d1bccca4082b689eb5ec22181484ddf54 /src/vim9compile.c | |
parent | 777770fbb0f3c091cbfa22572b953c0723355710 (diff) | |
download | vim-git-04d0522046e79d0e13c1317ad34bf228722ec728.tar.gz |
patch 8.2.0226: compiling for loop not testedv8.2.0226
Problem: Compiling for loop not tested.
Solution: Add a test. Make variable initialization work for more types.
Diffstat (limited to 'src/vim9compile.c')
-rw-r--r-- | src/vim9compile.c | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/src/vim9compile.c b/src/vim9compile.c index 1c76c8adb..0c72168f1 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -3427,13 +3427,51 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) else { // variables are always initialized - // TODO: support more types if (ga_grow(instr, 1) == FAIL) goto theend; - if (type->tt_type == VAR_STRING) - generate_PUSHS(cctx, vim_strsave((char_u *)"")); - else - generate_PUSHNR(cctx, 0); + switch (type->tt_type) + { + case VAR_BOOL: + generate_PUSHBOOL(cctx, VVAL_FALSE); + break; + case VAR_SPECIAL: + generate_PUSHSPEC(cctx, VVAL_NONE); + break; + case VAR_FLOAT: +#ifdef FEAT_FLOAT + generate_PUSHF(cctx, 0.0); +#endif + break; + case VAR_STRING: + generate_PUSHS(cctx, NULL); + break; + case VAR_BLOB: + generate_PUSHBLOB(cctx, NULL); + break; + case VAR_FUNC: + // generate_PUSHS(cctx, NULL); TODO + break; + case VAR_PARTIAL: + // generate_PUSHS(cctx, NULL); TODO + break; + case VAR_LIST: + generate_NEWLIST(cctx, 0); + break; + case VAR_DICT: + generate_NEWDICT(cctx, 0); + break; + case VAR_JOB: + // generate_PUSHS(cctx, NULL); TODO + break; + case VAR_CHANNEL: + // generate_PUSHS(cctx, NULL); TODO + break; + case VAR_NUMBER: + case VAR_UNKNOWN: + case VAR_VOID: + generate_PUSHNR(cctx, 0); + break; + } } if (oplen > 0 && *op != '=') |