To: vim_dev@googlegroups.com Subject: Patch 8.2.2094 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2094 Problem: When an expression fails getting the next command may be wrong. Solution: Do not check for a next command after :eval fails. (closes #7415) Files: src/eval.c, src/testdir/test_vim9_cmd.vim *** ../vim-8.2.2093/src/eval.c 2020-12-02 17:36:49.169409752 +0100 --- src/eval.c 2020-12-05 16:56:00.638055334 +0100 *************** *** 2156,2162 **** && called_emsg == called_emsg_before && (flags & EVAL_CONSTANT) == 0) semsg(_(e_invexpr2), arg); ! ret = FAIL; } if (eap != NULL) --- 2156,2165 ---- && called_emsg == called_emsg_before && (flags & EVAL_CONSTANT) == 0) semsg(_(e_invexpr2), arg); ! ! // Some of the expression may not have been consumed. Do not check for ! // a next command to avoid more errors. ! return FAIL; } if (eap != NULL) *** ../vim-8.2.2093/src/testdir/test_vim9_cmd.vim 2020-12-02 17:36:49.173409740 +0100 --- src/testdir/test_vim9_cmd.vim 2020-12-05 17:04:50.659393117 +0100 *************** *** 558,563 **** --- 558,576 ---- ->Increment() assert_equal(111 + 3 + 4 + 5, g:val) unlet g:val + + var lines =<< trim END + vim9script + g:caught = 'no' + try + eval 123 || 0 + catch + g:caught = 'yes' + endtry + assert_equal('yes', g:caught) + unlet g:caught + END + CheckScriptSuccess(lines) enddef def Test_map_command() *** ../vim-8.2.2093/src/version.c 2020-12-05 14:44:33.512669314 +0100 --- src/version.c 2020-12-05 16:57:30.961672199 +0100 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2094, /**/ -- Compilation process failed successfully. /// 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 ///