# HG changeset patch # User Bram Moolenaar # Date 1607802303 -3600 # Node ID cc24ac009f29b74bbc436205e9783c3d8cd544ed # Parent f77a88165ed6dfb5022615277c7888b57a99ace8 patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function Commit: https://github.com/vim/vim/commit/57f799e6a4a56f41570c752c66dc2f692b1f2c2f Author: Bram Moolenaar Date: Sat Dec 12 20:42:19 2020 +0100 patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function Problem: Vim9: get E1099 when autocmd triggered in builtin function. Solution: Check that did_emsg increased instead of checking that it changed. (closes #7448) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -1824,6 +1824,26 @@ def Test_reset_did_emsg() delfunc! g:Func enddef +def Test_did_emsg_reset() + # executing an autocommand resets did_emsg, this should not result in a + # builtin function considered failing + var lines =<< trim END + vim9script + au BufWinLeave * # + def Func() + popup_menu('', {callback: {-> popup_create('', {})->popup_close()}}) + eval [][0] + enddef + nno call Func() + feedkeys("\\e", 'xt') + END + writefile(lines, 'XemsgReset') + assert_fails('so XemsgReset', ['E684:', 'E684:'], lines, 2) + delete('XemsgReset') + nunmap + au! BufWinLeave +enddef + def Test_abort_with_silent_call() var lines =<< trim END vim9script diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2134, +/**/ 2133, /**/ 2132, diff --git a/src/vim9execute.c b/src/vim9execute.c --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -583,7 +583,7 @@ call_bfunc(int func_idx, int argcount, e for (idx = 0; idx < argcount; ++idx) clear_tv(&argvars[idx]); - if (did_emsg != did_emsg_before) + if (did_emsg > did_emsg_before) return FAIL; return OK; }