To: vim_dev@googlegroups.com Subject: Patch 8.2.2771 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2771 Problem: Vim9: assignment not recognized if declaration was skipped. Solution: Also recognized an assignment if the variable does not exist. (closes #8108) Files: src/ex_docmd.c, src/testdir/test_vim9_assign.vim *** ../vim-8.2.2770/src/ex_docmd.c 2021-04-12 21:20:58.638708968 +0200 --- src/ex_docmd.c 2021-04-15 22:07:53.070967175 +0200 *************** *** 3483,3489 **** // Recognize an assignment if we recognize the variable name: // "g:var = expr" ! // "var = expr" where "var" is a variable name. if (*eap->cmd == '@') p = eap->cmd + 2; oplen = assignment_len(skipwhite(p), &heredoc); --- 3483,3490 ---- // Recognize an assignment if we recognize the variable name: // "g:var = expr" ! // "var = expr" where "var" is a variable name or we are skipping ! // (variable declaration might have been skipped). if (*eap->cmd == '@') p = eap->cmd + 2; oplen = assignment_len(skipwhite(p), &heredoc); *************** *** 3493,3498 **** --- 3494,3500 ---- || *eap->cmd == '&' || *eap->cmd == '$' || *eap->cmd == '@' + || eap->skip || lookup(eap->cmd, p - eap->cmd, TRUE, cctx) == OK) { eap->cmdidx = CMD_var; *** ../vim-8.2.2770/src/testdir/test_vim9_assign.vim 2021-04-10 22:35:40.487360271 +0200 --- src/testdir/test_vim9_assign.vim 2021-04-15 22:11:46.482441220 +0200 *************** *** 249,254 **** --- 249,266 ---- END enddef + def Test_skipped_assignment() + var lines =<< trim END + for x in [] + var i: number = 1 + while false + i += 1 + endwhile + endfor + END + CheckDefAndScriptSuccess(lines) + enddef + def Test_assign_unpack() var lines =<< trim END var v1: number *** ../vim-8.2.2770/src/version.c 2021-04-15 21:48:29.023181466 +0200 --- src/version.c 2021-04-15 22:09:14.730796318 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2771, /**/ -- hundred-and-one symptoms of being an internet addict: 102. When filling out your driver's license application, you give your IP address. /// 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 ///