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 -- [email protected] -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/20230118145133.3300B1C125F%40moolenaar.net.