diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2023-10-14 11:18:50 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-10-14 11:18:50 +0200 |
commit | 29bb67f1beefc7fd393dbfd9ee77d92f1db3a3c0 (patch) | |
tree | edaeb40abcb04a2d89e2886cd583ef497f2ad469 /src/eval.c | |
parent | 69fb5afb3bc9da24c2fb0eafb0027ba9c6502fc2 (diff) |
patch 9.0.2019: Vim9: no support for funcrefsv9.0.2019
Problem: Vim9: no support for funcrefs
Solution: Add support for object/class funcref members
closes: #11981 #12417 #12960 #12324 #13333
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index 4da6246ace..80ff5a3cba 100644 --- a/src/eval.c +++ b/src/eval.c @@ -5256,6 +5256,7 @@ partial_free(partial_T *pt) } else func_ptr_unref(pt->pt_func); + object_unref(pt->pt_obj); // "out_up" is no longer used, decrement refcount on partial that owns it. partial_unref(pt->pt_outer.out_up_partial); @@ -5578,6 +5579,7 @@ free_unref_items(int copyID) /* * PASS 2: free the items themselves. */ + object_free_items(copyID); dict_free_items(copyID); list_free_items(copyID); @@ -5818,6 +5820,15 @@ set_ref_in_item_partial( set_ref_in_item(&dtv, copyID, ht_stack, list_stack); } + if (pt->pt_obj != NULL) + { + typval_T objtv; + + objtv.v_type = VAR_OBJECT; + objtv.vval.v_object = pt->pt_obj; + set_ref_in_item(&objtv, copyID, ht_stack, list_stack); + } + for (int i = 0; i < pt->pt_argc; ++i) abort = abort || set_ref_in_item(&pt->pt_argv[i], copyID, ht_stack, list_stack); |