patch 8.2.3117: Vim9: type not properly checked in for loop
Problem: Vim9: type not properly checked in for loop.
Solution: Have items() return a list of lists. Add runtime type checks.
(closes #8515)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index f5dc26e..4abe401 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -2573,6 +2573,14 @@
endfor
END
CheckDefAndScriptFailure(lines, 'E1059:', 1)
+
+ lines =<< trim END
+ var d: dict<number> = {a: 1, b: 2}
+ for [k: job, v: job] in d->items()
+ echo k v
+ endfor
+ END
+ CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected job but got string', 2)
enddef
def Test_for_loop_script_var()