diff --git a/src/eval.c b/src/eval.c index 0a85b909d0..d9f44b2c80 100644 --- a/src/eval.c +++ b/src/eval.c @@ -2001,7 +2001,7 @@ eval_func( // Need to make a copy, in case evaluating the arguments makes // the name invalid. s = vim_strsave(s); - if (s == NULL || *s == NUL || (flags & EVAL_CONSTANT)) + if (s == NULL || (evaluate && (*s == NUL || (flags & EVAL_CONSTANT)))) ret = FAIL; else { diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index a357b11d48..1f695bc707 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -646,8 +646,16 @@ def Test_expr4_equal() assert_equal(false, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_is', [123])) assert_equal(false, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_equal', [999])) - # TODO: this unexpectedly sometimes fails on Appveyor - if !has('win32') + if true + var OneFunc: func + var TwoFunc: func + OneFunc = function('len') + TwoFunc = function('len') + assert_equal(true, OneFunc('abc') == TwoFunc('123')) + endif + + # check this doesn't fail when skipped + if false var OneFunc: func var TwoFunc: func OneFunc = function('len') diff --git a/src/version.c b/src/version.c index c7f6fe796a..6ce7173ea3 100644 --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3810, /**/ 3809, /**/