patch 8.2.4285: Vim9: type of item in for loop not checked properly
Problem: Vim9: type of item in for loop not checked properly.
Solution: Adjust the type checking. (closes #9683)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index a3f28f1..767abd4 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -2011,7 +2011,7 @@
echo k v
endfor
END
- v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected job but got string', 2)
+ v9.CheckDefExecAndScriptFailure(lines, ['E1013: Argument 1: type mismatch, expected job but got string', 'E1012: Type mismatch; expected job but got string'], 2)
lines =<< trim END
var i = 0
@@ -2036,6 +2036,22 @@
endfor
END
v9.CheckDefExecAndScriptFailure(lines, ['E461:', 'E1017:'])
+
+ lines =<< trim END
+ var l: list<dict<any>> = [{a: 1, b: 'x'}]
+ for item: dict<number> in l
+ echo item
+ endfor
+ END
+ v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<number> but got dict<any>')
+
+ lines =<< trim END
+ var l: list<dict<any>> = [{n: 1}]
+ for item: dict<number> in l
+ item->extend({s: ''})
+ endfor
+ END
+ v9.CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>')
enddef
def Test_for_loop_script_var()