diff options
-rw-r--r-- | src/eval.c | 3 | ||||
-rw-r--r-- | src/testdir/test_partial.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c index 453756217..db6ef9d5d 100644 --- a/src/eval.c +++ b/src/eval.c @@ -23455,7 +23455,8 @@ ex_function(exarg_T *eap) else arg = fudi.fd_newkey; if (arg != NULL && (fudi.fd_di == NULL - || fudi.fd_di->di_tv.v_type != VAR_FUNC)) + || (fudi.fd_di->di_tv.v_type != VAR_FUNC + && fudi.fd_di->di_tv.v_type != VAR_PARTIAL))) { if (*arg == K_SPECIAL) j = 3; diff --git a/src/testdir/test_partial.vim b/src/testdir/test_partial.vim index 75cc49251..1fe67eabc 100644 --- a/src/testdir/test_partial.vim +++ b/src/testdir/test_partial.vim @@ -193,3 +193,16 @@ func Test_tostring() call assert_true(v:false, v:exception) endtry endfunc + +func Test_redefine_dict_func() + let d = {} + function d.test4() + endfunction + let d.test4 = d.test4 + try + function! d.test4(name) + endfunction + catch + call assert_true(v:errmsg, v:exception) + endtry +endfunc diff --git a/src/version.c b/src/version.c index b90a0d0a9..dd9b5c285 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 */ /**/ + 1645, +/**/ 1644, /**/ 1643, |