patch 8.2.2621: typval2type() cannot handle recursive structures

Problem:    typval2type() cannot handle recursive structures.
Solution:   Use copyID. (closes #7979)
diff --git a/src/testdir/test_vimscript.vim b/src/testdir/test_vimscript.vim
index 0ba933b..b57d86d 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -6606,6 +6606,13 @@
   call assert_equal('list<number>', typename([123]))
   call assert_equal('dict<number>', typename(#{key: 123}))
   call assert_equal('list<dict<number>>', typename([#{key: 123}]))
+
+  let l = []
+  let d = #{a: 0}
+  let l = [d]
+  let l[0].e = #{b: l}
+  call assert_equal('list<dict<any>>', typename(l))
+  call assert_equal('dict<any>', typename(d))
 endfunc
 
 "-------------------------------------------------------------------------------