Patch 9.0.1217

2 views
Skip to first unread message

Bram Moolenaar

unread,
Jan 18, 2023, 9:51:39 AM1/18/23
to vim...@googlegroups.com

Patch 9.0.1217
Problem: Using an object member in a closure doesn't work.
Solution: Initialize lv_loop_depth. (closes #11840)
Files: src/vim9compile.c, src/testdir/test_vim9_class.vim


*** ../vim-9.0.1216/src/vim9compile.c 2023-01-16 20:47:53.889287080 +0000
--- src/vim9compile.c 2023-01-18 14:49:33.515277698 +0000
***************
*** 66,71 ****
--- 66,72 ----
if (lvar != NULL)
{
CLEAR_POINTER(lvar);
+ lvar->lv_loop_depth = -1;
lvar->lv_name = (char_u *)(is_super ? "super" : "this");
if (cctx->ctx_ufunc->uf_class != NULL)
{
*** ../vim-9.0.1216/src/testdir/test_vim9_class.vim 2023-01-16 20:47:53.889287080 +0000
--- src/testdir/test_vim9_class.vim 2023-01-18 14:49:02.627268156 +0000
***************
*** 1214,1218 ****
--- 1214,1236 ----
v9.CheckScriptFailure(lines, 'E1316:')
enddef

+ def Test_closure_in_class()
+ var lines =<< trim END
+ vim9script
+
+ class Foo
+ this.y: list<string> = ['B']
+
+ def new()
+ g:result = filter(['A', 'B'], (_, v) => index(this.y, v) == -1)
+ enddef
+ endclass
+
+ Foo.new()
+ assert_equal(['A'], g:result)
+ END
+ v9.CheckScriptSuccess(lines)
+ enddef
+

" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
*** ../vim-9.0.1216/src/version.c 2023-01-18 12:45:26.635861937 +0000
--- src/version.c 2023-01-18 14:40:39.159102561 +0000
***************
*** 697,698 ****
--- 697,700 ----
{ /* Add new patch number below this line */
+ /**/
+ 1217,
/**/

--
How To Keep A Healthy Level Of Insanity:
15. Five days in advance, tell your friends you can't attend their
party because you're not in the mood.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages