Mercurial > vim
annotate src/proto/vim9execute.pro @ 30299:5c181bb6c855
patch 9.0.0485: in :def function all closures in loop get the same variables
Commit: https://github.com/vim/vim/commit/0cdfb7ce462393595b0308dcabf343e82f05319d
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Sep 17 15:44:52 2022 +0100
patch 9.0.0485: in :def function all closures in loop get the same variables
Problem: In a :def function all closures in a loop get the same variables.
Solution: Make a copy of loop variables used in a closure.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 17 Sep 2022 16:45:04 +0200 |
parents | 61a688be1899 |
children | 6a1ed021a0c0 |
rev | line source |
---|---|
19181
94eda51ba9ba
patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 /* vim9execute.c */ |
21771
fcf978444298
patch 8.2.1435: Vim9: always converting to string for ".." leads to mistakes
Bram Moolenaar <Bram@vim.org>
parents:
20433
diff
changeset
|
2 void to_string_error(vartype_T vartype); |
28097
632a84e2ce92
patch 8.2.4573: a nested function is compiled for debugging without context
Bram Moolenaar <Bram@vim.org>
parents:
26560
diff
changeset
|
3 void update_has_breakpoint(ufunc_T *ufunc); |
22541
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
21771
diff
changeset
|
4 void funcstack_check_refcount(funcstack_T *funcstack); |
26560
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
25719
diff
changeset
|
5 int set_ref_in_funcstacks(int copyID); |
30083
a542dfb1c1a2
patch 9.0.0379: cleaning up after writefile() is a hassle
Bram Moolenaar <Bram@vim.org>
parents:
28447
diff
changeset
|
6 int in_def_function(void); |
30126
01408b56f093
patch 9.0.0399: using :defer in expression funcref not tested
Bram Moolenaar <Bram@vim.org>
parents:
30122
diff
changeset
|
7 ectx_T *clear_currrent_ectx(void); |
01408b56f093
patch 9.0.0399: using :defer in expression funcref not tested
Bram Moolenaar <Bram@vim.org>
parents:
30122
diff
changeset
|
8 void restore_current_ectx(ectx_T *ectx); |
30083
a542dfb1c1a2
patch 9.0.0379: cleaning up after writefile() is a hassle
Bram Moolenaar <Bram@vim.org>
parents:
28447
diff
changeset
|
9 int add_defer_function(char_u *name, int argcount, typval_T *argvars); |
23551
1bb7fa4f9b35
patch 8.2.2318: Vim9: string and list index work differently
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
10 char_u *char_from_string(char_u *str, varnumber_T index); |
23604
1816ea68c022
patch 8.2.2344: using inclusive index for slice is not always desired
Bram Moolenaar <Bram@vim.org>
parents:
23551
diff
changeset
|
11 char_u *string_slice(char_u *str, varnumber_T first, varnumber_T last, int exclusive); |
30291
61a688be1899
patch 9.0.0481: in :def function all closures in loop get the same variables
Bram Moolenaar <Bram@vim.org>
parents:
30138
diff
changeset
|
12 int fill_partial_and_closure(partial_T *pt, ufunc_T *ufunc, short loop_var_idx, short loop_var_count, ectx_T *ectx); |
28447
6f753a8125f0
patch 8.2.4748: cannot use an imported function in a mapping
Bram Moolenaar <Bram@vim.org>
parents:
28097
diff
changeset
|
13 int may_load_script(int sid, int *loaded); |
24918
f11779c1d123
patch 8.2.2996: Vim9: when debugging cannot inspect local variables
Bram Moolenaar <Bram@vim.org>
parents:
24909
diff
changeset
|
14 typval_T *lookup_debug_var(char_u *name); |
25719
154663508d9b
patch 8.2.3395: Vim9: expression breakpoint not checked in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24918
diff
changeset
|
15 int may_break_in_function(ufunc_T *ufunc); |
30299
5c181bb6c855
patch 9.0.0485: in :def function all closures in loop get the same variables
Bram Moolenaar <Bram@vim.org>
parents:
30291
diff
changeset
|
16 void loopvars_check_refcount(loopvars_T *loopvars); |
5c181bb6c855
patch 9.0.0485: in :def function all closures in loop get the same variables
Bram Moolenaar <Bram@vim.org>
parents:
30291
diff
changeset
|
17 int set_ref_in_loopvars(int copyID); |
24606
a4fda40e0bb9
patch 8.2.2842: Vim9: skip argument to searchpair() is not compiled
Bram Moolenaar <Bram@vim.org>
parents:
24488
diff
changeset
|
18 int exe_typval_instr(typval_T *tv, typval_T *rettv); |
24488
f293bb501b30
patch 8.2.2784: Vim9: cannot use =expr in :substitute
Bram Moolenaar <Bram@vim.org>
parents:
23604
diff
changeset
|
19 char_u *exe_substitute_instr(void); |
30138
6575d0bf6061
patch 9.0.0405: arguments in a partial not used by a :def function
Bram Moolenaar <Bram@vim.org>
parents:
30126
diff
changeset
|
20 int call_def_function(ufunc_T *ufunc, int argc_arg, typval_T *argv, int flags, partial_T *partial, funccall_T *funccal, typval_T *rettv); |
30122
458162398682
patch 9.0.0397: :defer not tested with exceptions and ":qa!"
Bram Moolenaar <Bram@vim.org>
parents:
30083
diff
changeset
|
21 void unwind_def_callstack(ectx_T *ectx); |
458162398682
patch 9.0.0397: :defer not tested with exceptions and ":qa!"
Bram Moolenaar <Bram@vim.org>
parents:
30083
diff
changeset
|
22 void may_invoke_defer_funcs(ectx_T *ectx); |
24909
09d222e89a84
patch 8.2.2992: Vim9: completion for :disassemble is incomplete
Bram Moolenaar <Bram@vim.org>
parents:
24606
diff
changeset
|
23 void set_context_in_disassemble_cmd(expand_T *xp, char_u *arg); |
09d222e89a84
patch 8.2.2992: Vim9: completion for :disassemble is incomplete
Bram Moolenaar <Bram@vim.org>
parents:
24606
diff
changeset
|
24 char_u *get_disassemble_argument(expand_T *xp, int idx); |
19181
94eda51ba9ba
patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
25 void ex_disassemble(exarg_T *eap); |
94eda51ba9ba
patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
26 int tv2bool(typval_T *tv); |
22860
53acb89ec9f2
patch 8.2.1977: Vim9: error for using a string in a condition is confusing
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
27 void emsg_using_string_as(typval_T *tv, int as_number); |
19181
94eda51ba9ba
patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
28 int check_not_string(typval_T *tv); |
94eda51ba9ba
patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
29 /* vim: set ft=c : */ |