To: vim_dev@googlegroups.com Subject: Patch 8.2.2018 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2018 Problem: Vim9: script variable not found from lambda. Solution: In a lambda also check the script hashtab for a variable without a scope. (closes #7329) Files: src/evalvars.c, src/testdir/test_vim9_func.vim *** ../vim-8.2.2017/src/evalvars.c 2020-11-04 11:36:31.412190527 +0100 --- src/evalvars.c 2020-11-19 21:39:26.511760858 +0100 *************** *** 2628,2634 **** return ret; // Search in parent scope for lambda ! return find_var_in_scoped_ht(name, no_autoload || htp != NULL); } /* --- 2628,2655 ---- return ret; // Search in parent scope for lambda ! ret = find_var_in_scoped_ht(name, no_autoload || htp != NULL); ! if (ret != NULL) ! return ret; ! ! // in Vim9 script items without a scope can be script-local ! if (in_vim9script() && name[0] != NUL && name[1] != ':') ! { ! ht = get_script_local_ht(); ! if (ht != NULL) ! { ! ret = find_var_in_ht(ht, *name, varname, ! no_autoload || htp != NULL); ! if (ret != NULL) ! { ! if (htp != NULL) ! *htp = ht; ! return ret; ! } ! } ! } ! ! return NULL; } /* *** ../vim-8.2.2017/src/testdir/test_vim9_func.vim 2020-11-19 18:53:15.188492574 +0100 --- src/testdir/test_vim9_func.vim 2020-11-19 21:44:36.722731858 +0100 *************** *** 1476,1481 **** --- 1476,1490 ---- Line_continuation_in_def('.')->assert_equal('full') enddef + def Test_script_var_in_lambda() + var lines =<< trim END + vim9script + var script = 'test' + assert_equal(['test'], map(['one'], {-> script})) + END + CheckScriptSuccess(lines) + enddef + def Line_continuation_in_lambda(): list var x = range(97, 100) ->map({_, v -> nr2char(v) *** ../vim-8.2.2017/src/version.c 2020-11-19 19:01:39.746594508 +0100 --- src/version.c 2020-11-19 21:40:33.599538058 +0100 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2018, /**/ -- The software said it requires Windows 95 or better, so I installed Linux. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///