patch 7.4.1585
Problem: Partial is not recognized everywhere.
Solution: Check for partial in trans_function_name(). (Yasuhiro Matsumoto)
Add a test.
diff --git a/src/eval.c b/src/eval.c
index 6280323..9491f4f 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -23893,6 +23893,12 @@
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
diff --git a/src/testdir/test_partial.vim b/src/testdir/test_partial.vim
index fe451cd..21ad737 100644
--- a/src/testdir/test_partial.vim
+++ b/src/testdir/test_partial.vim
@@ -106,3 +106,15 @@
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/version.c b/src/version.c
index ae550bc..7277cc0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1585,
+/**/
1584,
/**/
1583,