Mercurial > vim
diff src/eval.c @ 30249:c0f0118b6790 v9.0.0460
patch 9.0.0460: loop variable can't be found
Commit: https://github.com/vim/vim/commit/766ae5b252eaa6ee2bff70f1913d1cbfb51101bd
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Sep 14 00:30:51 2022 +0100
patch 9.0.0460: loop variable can't be found
Problem: Loop variable can't be found.
Solution: Adjust block_id of the loop variable each round.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 14 Sep 2022 01:45:04 +0200 |
parents | e0cb5fb44859 |
children | 5c181bb6c855 |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -29,22 +29,6 @@ */ static int current_copyID = 0; -/* - * Info used by a ":for" loop. - */ -typedef struct -{ - int fi_semicolon; // TRUE if ending in '; var]' - int fi_varcount; // nr of variables in the list - int fi_break_count; // nr of line breaks encountered - listwatch_T fi_lw; // keep an eye on the item used. - list_T *fi_list; // list being used - int fi_bi; // index of blob - blob_T *fi_blob; // blob being used - char_u *fi_string; // copy of string being used - int fi_byte_idx; // byte index in fi_string -} forinfo_T; - static int eval2(char_u **arg, typval_T *rettv, evalarg_T *evalarg); static int eval3(char_u **arg, typval_T *rettv, evalarg_T *evalarg); static int eval4(char_u **arg, typval_T *rettv, evalarg_T *evalarg); @@ -1914,7 +1898,8 @@ next_for_item(void *fi_void, char_u *arg ? (ASSIGN_FINAL // first round: error if variable exists | (fi->fi_bi == 0 ? 0 : ASSIGN_DECL) - | ASSIGN_NO_MEMBER_TYPE) + | ASSIGN_NO_MEMBER_TYPE + | ASSIGN_UPDATE_BLOCK_ID) : 0); listitem_T *item; int skip_assign = in_vim9script() && arg[0] == '_'