patch 7.4.1644
Problem:    Using string() on a partial that exists in the dictionary it binds
            results in an error. (Nikolai Pavlov)
Solution:   Make string() not fail on a recursively nested structure. (Ken
            Takta)
diff --git a/src/testdir/test_partial.vim b/src/testdir/test_partial.vim
index f67bb41..75cc492 100644
--- a/src/testdir/test_partial.vim
+++ b/src/testdir/test_partial.vim
@@ -180,3 +180,16 @@
   unlet obj
   call assert_false(exists('*{' . funcnumber . '}'))
 endfunc
+
+func Test_tostring()
+  let d = {}
+  let d.d = d
+  function d.test3()
+    echo 42
+  endfunction
+  try
+    call string(d.test3)
+  catch
+    call assert_true(v:false, v:exception)
+  endtry
+endfunc