To: vim_dev@googlegroups.com Subject: Patch 9.0.1217 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 = ['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 -- Bram@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 ///