diff options
Diffstat (limited to 'src/vim9.h')
-rw-r--r-- | src/vim9.h | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/vim9.h b/src/vim9.h index abcf64f94..176fc642a 100644 --- a/src/vim9.h +++ b/src/vim9.h @@ -252,30 +252,31 @@ typedef enum { // arguments to ISN_JUMP typedef struct { jumpwhen_T jump_when; - int jump_where; // position to jump to + int jump_where; // position to jump to } jump_T; // arguments to ISN_JUMP_IF_ARG_SET typedef struct { - int jump_arg_off; // argument index, negative - int jump_where; // position to jump to + int jump_arg_off; // argument index, negative + int jump_where; // position to jump to } jumparg_T; // arguments to ISN_FOR typedef struct { - int for_idx; // loop variable index - int for_end; // position to jump to after done + short for_loop_idx; // loop variable index + int for_end; // position to jump to after done } forloop_T; // arguments to ISN_WHILE typedef struct { - int while_funcref_idx; // variable index for funcref count - int while_end; // position to jump to after done + short while_funcref_idx; // variable index for funcref count + int while_end; // position to jump to after done } whileloop_T; // arguments to ISN_ENDLOOP typedef struct { short end_funcref_idx; // variable index of funcrefs.ga_len + short end_depth; // nested loop depth short end_var_idx; // first variable declared in the loop short end_var_count; // number of variables declared in the loop } endloop_T; @@ -356,9 +357,8 @@ typedef struct { // extra arguments for funcref_T typedef struct { - char_u *fre_func_name; // function name for legacy function - short fre_loop_var_idx; // index of first variable inside loop - short fre_loop_var_count; // number of variables inside loop + char_u *fre_func_name; // function name for legacy function + loopvarinfo_T fre_loopvar_info; // info about variables inside loops } funcref_extra_T; // arguments to ISN_FUNCREF @@ -369,10 +369,9 @@ typedef struct { // arguments to ISN_NEWFUNC typedef struct { - char_u *nfa_lambda; // name of the lambda already defined - char_u *nfa_global; // name of the global function to be created - short nfa_loop_var_idx; // index of first variable inside loop - short nfa_loop_var_count; // number of variables inside loop + char_u *nfa_lambda; // name of the lambda already defined + char_u *nfa_global; // name of the global function to be created + loopvarinfo_T nfa_loopvar_info; // ifno about variables inside loops } newfuncarg_T; typedef struct { @@ -628,6 +627,7 @@ typedef struct { int li_local_count; // ctx_locals.ga_len at loop start int li_closure_count; // ctx_closure_count at loop start int li_funcref_idx; // index of var that holds funcref count + int li_depth; // nested loop depth } loop_info_T; /* @@ -678,6 +678,7 @@ struct scope_S { scopetype_T se_type; int se_local_count; // ctx_locals.ga_len before scope skip_T se_skip_save; // ctx_skip before the block + int se_loop_depth; // number of loop scopes, including this union { ifscope_T se_if; whilescope_T se_while; @@ -693,6 +694,7 @@ typedef struct { char_u *lv_name; type_T *lv_type; int lv_idx; // index of the variable on the stack + int lv_loop_depth; // depth for variable inside a loop or -1 int lv_loop_idx; // index of first variable inside a loop or -1 int lv_from_outer; // nesting level, using ctx_outer scope int lv_const; // when TRUE cannot be assigned to |