diff options
-rw-r--r-- | src/nvim/eval.c | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_partial.vim | 12 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 157075eb81..51320ea2af 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -20321,6 +20321,10 @@ trans_function_name ( if (lv.ll_tv->v_type == VAR_FUNC && lv.ll_tv->vval.v_string != NULL) { name = vim_strsave(lv.ll_tv->vval.v_string); *pp = end; + } else if (lv.ll_tv->v_type == VAR_PARTIAL + && lv.ll_tv->vval.v_partial != NULL) { + name = vim_strsave(lv.ll_tv->vval.v_partial->pt_name); + *pp = end; } else { if (!skip && !(flags & TFN_QUIET) && (fdp == NULL || lv.ll_dict == NULL diff --git a/src/nvim/testdir/test_partial.vim b/src/nvim/testdir/test_partial.vim index 7941ec01c2..75cbfe2f25 100644 --- a/src/nvim/testdir/test_partial.vim +++ b/src/nvim/testdir/test_partial.vim @@ -105,3 +105,15 @@ func Test_script_function_in_dict() let B = s:obj2.clear call assert_equal('bar', B()) endfunc + +func Test_partial_exists() + let F = function('MyFunc') + call assert_true(exists('*F')) + let lF = [F] + call assert_true(exists('*lF[0]')) + + let F = function('MyFunc', ['arg']) + call assert_true(exists('*F')) + let lF = [F] + call assert_true(exists('*lF[0]')) +endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index 9f3bf74a99..e6be91e2fd 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -857,7 +857,7 @@ static int included_patches[] = { 1588, // 1587 NA // 1586, - // 1585, + 1585, // 1584 NA // 1583 NA 1582, |