patch 9.0.1203: return type of values() is always list<any>
Problem: Return type of values() is always list<any>.
Solution: Use the member type if possible. (issue #11822)
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index d0f49dd..1e2b378 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -4740,6 +4740,31 @@
v9.CheckDefAndScriptFailure(['values([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1'])
assert_equal([], {}->values())
assert_equal(['sun'], {star: 'sun'}->values())
+
+ # the return type of values() is list<member>
+ var lines =<< trim END
+ vim9script
+
+ class Foo
+ this.val: number
+ def Add()
+ echo this.val
+ enddef
+ endclass
+
+ def Process(FooDict: dict<Foo>)
+ for foo in values(FooDict)
+ foo.Add()
+ endfor
+ enddef
+
+ disas Process
+
+ var D = {'x': Foo.new(22)}
+
+ Process(D)
+ END
+ v9.CheckScriptSuccess(lines)
enddef
def Test_virtcol()