# HG changeset patch # User Christian Brabandt # Date 1702217783 -3600 # Node ID cd7acb9bc4fd7b32a5a1c31681109a9a50898609 # Parent a8a44f90e584589b4e173261b4da65c36bd8aeec patch 9.0.2152: Using type unknown for List/Dict containers Commit: https://github.com/vim/vim/commit/668971958c126d5e105fd44b60a4efcaf2c4b55c Author: Yegappan Lakshmanan Date: Tue Dec 5 15:51:50 2023 +0100 patch 9.0.2152: Using type unknown for List/Dict containers Problem: Using type unknown for List/Dict containers Solution: Use 'any' instead fixes: #13582 closes: #13625 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim --- a/src/testdir/test_listdict.vim +++ b/src/testdir/test_listdict.vim @@ -516,7 +516,7 @@ func Test_dict_func_remove() var d = {1: 'a', 3: 'c'} call remove(d, []) END - call v9.CheckDefExecFailure(lines, 'E1013: Argument 2: type mismatch, expected string but got list') + call v9.CheckDefExecFailure(lines, 'E1013: Argument 2: type mismatch, expected string but got list') endfunc " Nasty: remove func from Dict that's being called (works) diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -620,7 +620,7 @@ def Test_assign_index() l3[0] = [] l3[0][0] = [] END - v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got list', 3) + v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got list', 3) # dict of dict var d1: dict @@ -663,7 +663,7 @@ def Test_assign_index() d3.one = {} d3.one.two = {} END - v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got dict', 3) + v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got dict', 3) lines =<< trim END var lines: list @@ -687,7 +687,7 @@ def Test_assign_index() var ld: list> ld[0] = [] END - v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected dict but got list', 2) + v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected dict but got list', 2) # dict of list var dl: dict> @@ -699,7 +699,7 @@ def Test_assign_index() var dl: dict> dl.one = {} END - v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected list but got dict', 2) + v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected list but got dict', 2) lines =<< trim END g:l = [1, 2] diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim --- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -73,7 +73,7 @@ def Test_abs() enddef def Test_add() - v9.CheckDefAndScriptFailure(['add({}, 1)'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1226: List or Blob required for argument 1']) + v9.CheckDefAndScriptFailure(['add({}, 1)'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1226: List or Blob required for argument 1']) v9.CheckDefAndScriptFailure(['add([])'], 'E119:') v9.CheckDefExecFailure([ 'var ln: list = [1]', @@ -284,12 +284,12 @@ def Test_assert_equalfile() enddef def Test_assert_exception() - v9.CheckDefAndScriptFailure(['assert_exception({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['assert_exception({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) v9.CheckDefAndScriptFailure(['assert_exception("E1:", v:null)'], ['E1013: Argument 2: type mismatch, expected string but got special', 'E1174: String required for argument 2']) enddef def Test_assert_fails() - v9.CheckDefAndScriptFailure(['assert_fails([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['assert_fails([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) v9.CheckDefAndScriptFailure(['assert_fails("a", true)'], ['E1013: Argument 2: type mismatch, expected string but got bool', 'E1222: String or List required for argument 2']) v9.CheckDefAndScriptFailure(['assert_fails("a", "b", "c", "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) v9.CheckDefAndScriptFailure(['assert_fails("a", "b", "c", 4, 5)'], ['E1013: Argument 5: type mismatch, expected string but got number', 'E1174: String required for argument 5']) @@ -303,7 +303,7 @@ def Test_assert_inrange() enddef def Test_assert_match() - v9.CheckDefAndScriptFailure(['assert_match({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict', '']) + v9.CheckDefAndScriptFailure(['assert_match({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict', '']) v9.CheckDefAndScriptFailure(['assert_match("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', '']) v9.CheckDefAndScriptFailure(['assert_match("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', '']) enddef @@ -313,7 +313,7 @@ def Test_assert_nobeep() enddef def Test_assert_notmatch() - v9.CheckDefAndScriptFailure(['assert_notmatch({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict', '']) + v9.CheckDefAndScriptFailure(['assert_notmatch({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict', '']) v9.CheckDefAndScriptFailure(['assert_notmatch("a", 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', '']) v9.CheckDefAndScriptFailure(['assert_notmatch("a", "b", null)'], ['E1013: Argument 3: type mismatch, expected string but got special', '']) enddef @@ -323,11 +323,11 @@ def Test_assert_report() enddef def Test_autocmd_add() - v9.CheckDefAndScriptFailure(['autocmd_add({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) + v9.CheckDefAndScriptFailure(['autocmd_add({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) enddef def Test_autocmd_delete() - v9.CheckDefAndScriptFailure(['autocmd_delete({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) + v9.CheckDefAndScriptFailure(['autocmd_delete({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) enddef def Test_autocmd_get() @@ -368,8 +368,8 @@ enddef def Test_browsedir() if has('browse') - v9.CheckDefAndScriptFailure(['browsedir({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) - v9.CheckDefAndScriptFailure(['browsedir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['browsedir({}, "b")'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['browsedir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) endif enddef @@ -453,7 +453,7 @@ enddef def Test_byte2line() v9.CheckDefAndScriptFailure(['byte2line("1")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) - v9.CheckDefAndScriptFailure(['byte2line([])'], ['E1013: Argument 1: type mismatch, expected number but got list', 'E1210: Number required for argument 1']) + v9.CheckDefAndScriptFailure(['byte2line([])'], ['E1013: Argument 1: type mismatch, expected number but got list', 'E1210: Number required for argument 1']) byte2line(0)->assert_equal(-1) enddef @@ -526,7 +526,7 @@ def Test_ch_evalexpr() CheckFeature channel else v9.CheckDefAndScriptFailure(['ch_evalexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) - v9.CheckDefAndScriptFailure(['ch_evalexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['ch_evalexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) endif enddef @@ -536,7 +536,7 @@ def Test_ch_evalraw() else v9.CheckDefAndScriptFailure(['ch_evalraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) v9.CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2']) - v9.CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['ch_evalraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) endif enddef @@ -609,7 +609,7 @@ def Test_ch_read() CheckFeature channel else v9.CheckDefAndScriptFailure(['ch_read(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) - v9.CheckDefAndScriptFailure(['ch_read(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['ch_read(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) endif enddef @@ -618,7 +618,7 @@ def Test_ch_readblob() CheckFeature channel else v9.CheckDefAndScriptFailure(['ch_readblob(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) - v9.CheckDefAndScriptFailure(['ch_readblob(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['ch_readblob(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) endif enddef @@ -627,7 +627,7 @@ def Test_ch_readraw() CheckFeature channel else v9.CheckDefAndScriptFailure(['ch_readraw(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) - v9.CheckDefAndScriptFailure(['ch_readraw(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['ch_readraw(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) endif enddef @@ -636,7 +636,7 @@ def Test_ch_sendexpr() CheckFeature channel else v9.CheckDefAndScriptFailure(['ch_sendexpr(1, "a")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) - v9.CheckDefAndScriptFailure(['ch_sendexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['ch_sendexpr(test_null_channel(), 1, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) endif enddef @@ -646,7 +646,7 @@ def Test_ch_sendraw() else v9.CheckDefAndScriptFailure(['ch_sendraw(1, "")'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) v9.CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2']) - v9.CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['ch_sendraw(test_null_channel(), "", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) endif enddef @@ -655,7 +655,7 @@ def Test_ch_setoptions() CheckFeature channel else v9.CheckDefAndScriptFailure(['ch_setoptions(1, {})'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) - v9.CheckDefAndScriptFailure(['ch_setoptions(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['ch_setoptions(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) endif enddef @@ -664,7 +664,7 @@ def Test_ch_status() CheckFeature channel else v9.CheckDefAndScriptFailure(['ch_status(1)'], ['E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1']) - v9.CheckDefAndScriptFailure(['ch_status(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['ch_status(test_null_channel(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) endif enddef @@ -689,7 +689,7 @@ enddef def Test_charcol() v9.CheckDefAndScriptFailure(['charcol(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1']) v9.CheckDefAndScriptFailure(['charcol({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1222: String or List required for argument 1']) - v9.CheckDefAndScriptFailure(['charcol(".", [])'], ['E1013: Argument 2: type mismatch, expected number but got list', 'E1210: Number required for argument 2']) + v9.CheckDefAndScriptFailure(['charcol(".", [])'], ['E1013: Argument 2: type mismatch, expected number but got list', 'E1210: Number required for argument 2']) v9.CheckDefExecAndScriptFailure(['charcol("")'], 'E1209: Invalid value for a line number') new setline(1, ['abcdefgh']) @@ -714,7 +714,7 @@ def Test_chdir() enddef def Test_cindent() - v9.CheckDefAndScriptFailure(['cindent([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['cindent([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) v9.CheckDefAndScriptFailure(['cindent(null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1']) v9.CheckDefExecAndScriptFailure(['cindent("")'], 'E1209: Invalid value for a line number') assert_equal(-1, cindent(0)) @@ -738,23 +738,23 @@ def Test_col() v9.CheckDefAndScriptFailure(['col(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1']) v9.CheckDefAndScriptFailure(['col({a: 10})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1222: String or List required for argument 1']) v9.CheckDefAndScriptFailure(['col(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1222: String or List required for argument 1']) - v9.CheckDefAndScriptFailure(['col(".", [])'], ['E1013: Argument 2: type mismatch, expected number but got list', 'E1210: Number required for argument 2']) + v9.CheckDefAndScriptFailure(['col(".", [])'], ['E1013: Argument 2: type mismatch, expected number but got list', 'E1210: Number required for argument 2']) v9.CheckDefExecAndScriptFailure(['col("")'], 'E1209: Invalid value for a line number') bw! enddef def Test_complete() v9.CheckDefAndScriptFailure(['complete("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) - v9.CheckDefAndScriptFailure(['complete(1, {})'], ['E1013: Argument 2: type mismatch, expected list but got dict', 'E1211: List required for argument 2']) + v9.CheckDefAndScriptFailure(['complete(1, {})'], ['E1013: Argument 2: type mismatch, expected list but got dict', 'E1211: List required for argument 2']) enddef def Test_complete_add() - v9.CheckDefAndScriptFailure(['complete_add([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1223: String or Dictionary required for argument 1']) + v9.CheckDefAndScriptFailure(['complete_add([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1223: String or Dictionary required for argument 1']) enddef def Test_complete_info() v9.CheckDefAndScriptFailure(['complete_info("")'], ['E1013: Argument 1: type mismatch, expected list but got string', 'E1211: List required for argument 1']) - v9.CheckDefAndScriptFailure(['complete_info({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) + v9.CheckDefAndScriptFailure(['complete_info({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) assert_equal({'pum_visible': 0, 'mode': '', 'selected': -1, 'items': []}, complete_info()) assert_equal({'mode': '', 'items': []}, complete_info(['mode', 'items'])) enddef @@ -877,8 +877,8 @@ def Test_delete() enddef def Test_deletebufline() - v9.CheckDefAndScriptFailure(['deletebufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['deletebufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1220: String or Number required for argument 2']) + v9.CheckDefAndScriptFailure(['deletebufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['deletebufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1220: String or Number required for argument 2']) v9.CheckDefAndScriptFailure(['deletebufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3']) new setline(1, ['one', 'two']) @@ -892,7 +892,7 @@ def Test_deletebufline() enddef def Test_diff_filler() - v9.CheckDefAndScriptFailure(['diff_filler([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['diff_filler([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) v9.CheckDefAndScriptFailure(['diff_filler(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1']) v9.CheckDefExecAndScriptFailure(['diff_filler("")'], 'E1209: Invalid value for a line number') assert_equal(0, diff_filler(1)) @@ -923,7 +923,7 @@ enddef def Test_digraph_setlist() v9.CheckDefAndScriptFailure(['digraph_setlist("a")'], ['E1013: Argument 1: type mismatch, expected list but got string', 'E1216: digraph_setlist() argument must be a list of lists with two items']) - v9.CheckDefAndScriptFailure(['digraph_setlist({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1216: digraph_setlist() argument must be a list of lists with two items']) + v9.CheckDefAndScriptFailure(['digraph_setlist({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1216: digraph_setlist() argument must be a list of lists with two items']) enddef def Test_echoraw() @@ -1066,7 +1066,7 @@ def Test_expandcmd() expandcmd('')->assert_equal('') v9.CheckDefAndScriptFailure(['expandcmd([1])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) - v9.CheckDefAndScriptFailure(['expandcmd("abc", [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['expandcmd("abc", [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) enddef def Test_extend_arg_types() @@ -1249,7 +1249,7 @@ enddef def Test_feedkeys() v9.CheckDefAndScriptFailure(['feedkeys(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) v9.CheckDefAndScriptFailure(['feedkeys("x", 10)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) - v9.CheckDefAndScriptFailure(['feedkeys([], {})'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['feedkeys([], {})'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) g:TestVar = 1 feedkeys(":g:TestVar = 789\n", 'xt') assert_equal(789, g:TestVar) @@ -1284,7 +1284,7 @@ def Test_finddir() v9.CheckDefAndScriptFailure(['finddir(true)'], ['E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1']) v9.CheckDefAndScriptFailure(['finddir(v:null)'], ['E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1']) v9.CheckDefExecFailure(['echo finddir("")'], 'E1175:') - v9.CheckDefAndScriptFailure(['finddir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['finddir("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) v9.CheckDefAndScriptFailure(['finddir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) finddir('abc', '')->assert_equal('') @@ -1304,7 +1304,7 @@ def Test_findfile() v9.CheckDefExecFailure(['findfile(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool') v9.CheckDefExecFailure(['findfile(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special') v9.CheckDefExecFailure(['findfile("")'], 'E1175:') - v9.CheckDefAndScriptFailure(['findfile("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['findfile("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) v9.CheckDefAndScriptFailure(['findfile("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) findfile('abc', '')->assert_equal('') enddef @@ -1330,7 +1330,7 @@ def Test_flattennew() END v9.CheckDefAndScriptSuccess(lines) - v9.CheckDefAndScriptFailure(['flattennew({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) + v9.CheckDefAndScriptFailure(['flattennew({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) v9.CheckDefAndScriptFailure(['flattennew([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) enddef @@ -1738,12 +1738,12 @@ def Test_getbufline() assert_fails('getbufoneline("", "$a")', ['E1030: Using a String as a Number: "$a"', 'E1030: Using a String as a Number: "$a"']) bwipe! - v9.CheckDefAndScriptFailure(['getbufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['getbufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1220: String or Number required for argument 2']) + v9.CheckDefAndScriptFailure(['getbufline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['getbufline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1220: String or Number required for argument 2']) v9.CheckDefAndScriptFailure(['getbufline("a", 2, 0z10)'], ['E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3']) - v9.CheckDefAndScriptFailure(['getbufoneline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['getbufoneline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1220: String or Number required for argument 2']) + v9.CheckDefAndScriptFailure(['getbufoneline([], 2)'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['getbufoneline("a", [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1220: String or Number required for argument 2']) enddef def Test_getbufvar() @@ -1895,7 +1895,7 @@ enddef def Test_getloclist() v9.CheckDefAndScriptFailure(['getloclist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) - v9.CheckDefAndScriptFailure(['getloclist(1, [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['getloclist(1, [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) enddef def Test_getloclist_return_type() @@ -1907,7 +1907,7 @@ def Test_getloclist_return_type() enddef def Test_getmarklist() - v9.CheckDefAndScriptFailure(['getmarklist([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['getmarklist([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) assert_equal([], getmarklist(10000)) assert_fails('getmarklist("a%b@#")', 'E94:') enddef @@ -1926,7 +1926,7 @@ def Test_getpos() enddef def Test_getqflist() - v9.CheckDefAndScriptFailure(['getqflist([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) + v9.CheckDefAndScriptFailure(['getqflist([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) call assert_equal({}, getqflist({})) enddef @@ -2150,13 +2150,13 @@ def Test_hlID() enddef def Test_hlexists() - v9.CheckDefAndScriptFailure(['hlexists([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['hlexists([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) assert_equal(0, hlexists('NonExistingHighlight')) hlexists('')->assert_equal(0) enddef def Test_hlget() - v9.CheckDefAndScriptFailure(['hlget([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['hlget([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) hlget('')->assert_equal([]) enddef @@ -2421,7 +2421,7 @@ def Test_job_setoptions() CheckFeature job else v9.CheckDefAndScriptFailure(['job_setoptions(test_null_channel(), {})'], ['E1013: Argument 1: type mismatch, expected job but got channel', 'E1218: Job required for argument 1']) - v9.CheckDefAndScriptFailure(['job_setoptions(test_null_job(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['job_setoptions(test_null_job(), [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) assert_equal('fail', job_status(test_null_job())) endif enddef @@ -2465,7 +2465,7 @@ enddef def Test_keys() assert_equal([7, 7], keys({a: 1, b: 2})->map((_, _) => 7)) - v9.CheckDefAndScriptFailure(['keys([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) + v9.CheckDefAndScriptFailure(['keys([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) assert_equal(['a'], {a: 'v'}->keys()) assert_equal([], {}->keys()) enddef @@ -2513,7 +2513,7 @@ def Test_line2byte() enddef def Test_lispindent() - v9.CheckDefAndScriptFailure(['lispindent({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['lispindent({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1220: String or Number required for argument 1']) v9.CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number') v9.CheckDefExecAndScriptFailure(['lispindent(-1)'], 'E966: Invalid line number: -1') assert_equal(0, lispindent(1)) @@ -2690,19 +2690,19 @@ def Test_map_item_type() var l: list = [0] echo map(l, (_, v) => []) END - v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(?number, ?number): number but got func(any, any): list', 'E1012: Type mismatch; expected number but got list'], 2) + v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(?number, ?number): number but got func(any, any): list', 'E1012: Type mismatch; expected number but got list'], 2) lines =<< trim END var l: list = range(2) echo map(l, (_, v) => []) END - v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(?number, ?number): number but got func(any, any): list', 'E1012: Type mismatch; expected number but got list'], 2) + v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(?number, ?number): number but got func(any, any): list', 'E1012: Type mismatch; expected number but got list'], 2) lines =<< trim END var d: dict = {key: 0} echo map(d, (_, v) => []) END - v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(?string, ?number): number but got func(any, any): list', 'E1012: Type mismatch; expected number but got list'], 2) + v9.CheckDefAndScriptFailure(lines, ['E1013: Argument 2: type mismatch, expected func(?string, ?number): number but got func(any, any): list', 'E1012: Type mismatch; expected number but got list'], 2) enddef def Test_maparg() @@ -2807,7 +2807,7 @@ enddef def Test_mapset() v9.CheckDefAndScriptFailure(['mapset(1, true, {})'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1223: String or Dictionary required for argument 1']) v9.CheckDefAndScriptFailure(['mapset("a", 2, {})'], ['E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2']) - v9.CheckDefAndScriptFailure(['mapset("a", false, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['mapset("a", false, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) enddef def Test_match() @@ -2833,7 +2833,7 @@ def Test_matchadd() v9.CheckDefAndScriptFailure(['matchadd("a", 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) v9.CheckDefAndScriptFailure(['matchadd("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) v9.CheckDefAndScriptFailure(['matchadd("a", "b", 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) - v9.CheckDefAndScriptFailure(['matchadd("a", "b", 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 5']) + v9.CheckDefAndScriptFailure(['matchadd("a", "b", 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 5']) matchadd('', 'a')->assert_equal(-1) matchadd('Search', '')->assert_equal(-1) enddef @@ -2843,7 +2843,7 @@ def Test_matchaddpos() v9.CheckDefAndScriptFailure(['matchaddpos("a", "b")'], ['E1013: Argument 2: type mismatch, expected list but got string', 'E1211: List required for argument 2']) v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, "d")'], ['E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4']) - v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 5']) + v9.CheckDefAndScriptFailure(['matchaddpos("a", [1], 1, 1, [])'], ['E1013: Argument 5: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 5']) matchaddpos('', [1])->assert_equal(-1) enddef @@ -2876,9 +2876,9 @@ def Test_matchend() enddef def Test_matchfuzzy() - v9.CheckDefAndScriptFailure(['matchfuzzy({}, "p")'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) + v9.CheckDefAndScriptFailure(['matchfuzzy({}, "p")'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) v9.CheckDefAndScriptFailure(['matchfuzzy([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) - v9.CheckDefAndScriptFailure(['matchfuzzy([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['matchfuzzy([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) matchfuzzy(['abc', 'xyz'], '')->assert_equal([]) var lines =<< trim END var items = [{name: 'xyz', id: 1}, {name: 'def', id: 2}, @@ -2892,9 +2892,9 @@ def Test_matchfuzzy() enddef def Test_matchfuzzypos() - v9.CheckDefAndScriptFailure(['matchfuzzypos({}, "p")'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) + v9.CheckDefAndScriptFailure(['matchfuzzypos({}, "p")'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) v9.CheckDefAndScriptFailure(['matchfuzzypos([], 1)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) - v9.CheckDefAndScriptFailure(['matchfuzzypos([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['matchfuzzypos([], "a", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) matchfuzzypos(['abc', 'xyz'], '')->assert_equal([[], [], []]) var lines =<< trim END var items = [{name: 'xyz', id: 1}, {name: 'def', id: 2}, @@ -3005,7 +3005,7 @@ enddef def Test_mkdir() v9.CheckDefAndScriptFailure(['mkdir(["a"])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) - v9.CheckDefAndScriptFailure(['mkdir("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['mkdir("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1174: String required for argument 2']) v9.CheckDefAndScriptFailure(['mkdir("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) v9.CheckDefExecAndScriptFailure(['mkdir("")'], 'E1175: Non-empty string required for argument 1') delete('a', 'rf') @@ -3131,7 +3131,7 @@ enddef def Test_popup_move() v9.CheckDefAndScriptFailure(['popup_move("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) - v9.CheckDefAndScriptFailure(['popup_move(1, [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['popup_move(1, [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) enddef def Test_popup_notification() @@ -3141,7 +3141,7 @@ enddef def Test_popup_setoptions() v9.CheckDefAndScriptFailure(['popup_setoptions("x", {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) - v9.CheckDefAndScriptFailure(['popup_setoptions(1, [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['popup_setoptions(1, [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) enddef def Test_popup_settext() @@ -3170,7 +3170,7 @@ def Test_prompt_getprompt() if !has('channel') CheckFeature channel else - v9.CheckDefAndScriptFailure(['prompt_getprompt([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['prompt_getprompt([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) assert_equal('', prompt_getprompt('NonExistingBuf')) endif enddef @@ -3195,26 +3195,26 @@ def Test_prompt_setprompt() if !has('channel') CheckFeature channel else - v9.CheckDefAndScriptFailure(['prompt_setprompt([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['prompt_setprompt(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['prompt_setprompt([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['prompt_setprompt(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) endif enddef def Test_prop_add() v9.CheckDefAndScriptFailure(['prop_add("a", 2, {})'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) v9.CheckDefAndScriptFailure(['prop_add(1, "b", {})'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) - v9.CheckDefAndScriptFailure(['prop_add(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['prop_add(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) enddef def Test_prop_add_list() - v9.CheckDefAndScriptFailure(['prop_add_list([], [])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) - v9.CheckDefAndScriptFailure(['prop_add_list({}, {})'], ['E1013: Argument 2: type mismatch, expected list but got dict', 'E1211: List required for argument 2']) + v9.CheckDefAndScriptFailure(['prop_add_list([], [])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) + v9.CheckDefAndScriptFailure(['prop_add_list({}, {})'], ['E1013: Argument 2: type mismatch, expected list but got dict', 'E1211: List required for argument 2']) enddef def Test_prop_clear() v9.CheckDefAndScriptFailure(['prop_clear("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) v9.CheckDefAndScriptFailure(['prop_clear(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) - v9.CheckDefAndScriptFailure(['prop_clear(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['prop_clear(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) enddef def Test_prop_find() @@ -3226,11 +3226,11 @@ enddef def Test_prop_list() v9.CheckDefAndScriptFailure(['prop_list("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) - v9.CheckDefAndScriptFailure(['prop_list(1, [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['prop_list(1, [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) enddef def Test_prop_remove() - v9.CheckDefAndScriptFailure(['prop_remove([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) + v9.CheckDefAndScriptFailure(['prop_remove([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) v9.CheckDefAndScriptFailure(['prop_remove({}, "a")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) v9.CheckDefAndScriptFailure(['prop_remove({}, 1, "b")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) enddef @@ -3444,7 +3444,7 @@ enddef def Test_remote_startserver() CheckFeature clientserver CheckEnv DISPLAY - v9.CheckDefAndScriptFailure(['remote_startserver({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['remote_startserver({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) enddef def Test_remove_literal_list() @@ -3533,7 +3533,7 @@ def Test_repeat() enddef def Test_resolve() - v9.CheckDefAndScriptFailure(['resolve([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['resolve([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) assert_equal('SomeFile', resolve('SomeFile')) resolve('')->assert_equal('') enddef @@ -3902,7 +3902,7 @@ enddef def Test_setcharsearch() v9.CheckDefAndScriptFailure(['setcharsearch("x")'], ['E1013: Argument 1: type mismatch, expected dict but got string', 'E1206: Dictionary required for argument 1']) - v9.CheckDefAndScriptFailure(['setcharsearch([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) + v9.CheckDefAndScriptFailure(['setcharsearch([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) var d: dict = {char: 'x', forward: 1, until: 1} setcharsearch(d) assert_equal(d, getcharsearch()) @@ -3964,11 +3964,11 @@ def Test_setloclist() v9.CheckDefAndScriptFailure(['setloclist("1", [])'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) v9.CheckDefAndScriptFailure(['setloclist(1, 2)'], ['E1013: Argument 2: type mismatch, expected list but got number', 'E1211: List required for argument 2']) v9.CheckDefAndScriptFailure(['setloclist(1, [], 3)'], ['E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3']) - v9.CheckDefAndScriptFailure(['setloclist(1, [], "a", [])'], ['E1013: Argument 4: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 4']) + v9.CheckDefAndScriptFailure(['setloclist(1, [], "a", [])'], ['E1013: Argument 4: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 4']) enddef def Test_setmatches() - v9.CheckDefAndScriptFailure(['setmatches({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) + v9.CheckDefAndScriptFailure(['setmatches({})'], ['E1013: Argument 1: type mismatch, expected list but got dict', 'E1211: List required for argument 1']) v9.CheckDefAndScriptFailure(['setmatches([], "1")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) enddef @@ -3982,7 +3982,7 @@ enddef def Test_setqflist() v9.CheckDefAndScriptFailure(['setqflist(1, "")'], ['E1013: Argument 1: type mismatch, expected list but got number', 'E1211: List required for argument 1']) v9.CheckDefAndScriptFailure(['setqflist([], 2)'], ['E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2']) - v9.CheckDefAndScriptFailure(['setqflist([], "", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['setqflist([], "", [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) enddef def Test_setreg() @@ -4079,7 +4079,7 @@ def Test_sign_placelist() enddef def Test_sign_undefine() - v9.CheckDefAndScriptFailure(['sign_undefine({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1222: String or List required for argument 1']) + v9.CheckDefAndScriptFailure(['sign_undefine({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1222: String or List required for argument 1']) v9.CheckDefAndScriptFailure(['sign_undefine([1])'], ['E1013: Argument 1: type mismatch, expected list but got list', 'E155: Unknown sign:']) enddef @@ -4260,7 +4260,7 @@ def Test_srand() enddef def Test_state() - v9.CheckDefAndScriptFailure(['state({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['state({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) assert_equal('', state('a')) enddef @@ -4339,7 +4339,7 @@ enddef def Test_stridx() v9.CheckDefAndScriptFailure(['stridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) - v9.CheckDefAndScriptFailure(['stridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['stridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1174: String required for argument 2']) v9.CheckDefAndScriptFailure(['stridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) stridx('', '')->assert_equal(0) stridx('', 'a')->assert_equal(-1) @@ -4347,7 +4347,7 @@ def Test_stridx() enddef def Test_strlen() - v9.CheckDefAndScriptFailure(['strlen([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['strlen([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) "abc"->strlen()->assert_equal(3) strlen(99)->assert_equal(2) enddef @@ -4375,7 +4375,7 @@ enddef def Test_strridx() v9.CheckDefAndScriptFailure(['strridx([1], "b")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) - v9.CheckDefAndScriptFailure(['strridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['strridx("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1174: String required for argument 2']) v9.CheckDefAndScriptFailure(['strridx("a", "b", "c")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3']) strridx('', '')->assert_equal(0) strridx('', 'a')->assert_equal(-1) @@ -4389,7 +4389,7 @@ def Test_strtrans() enddef def Test_strutf16len() - v9.CheckDefAndScriptFailure(['strutf16len([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['strutf16len([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) v9.CheckDefAndScriptFailure(['strutf16len("a", "")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2']) ""->strutf16len()->assert_equal(0) '-ą́-ą́'->strutf16len(true)->assert_equal(8) @@ -4437,13 +4437,13 @@ def Test_substitute() enddef def Test_swapinfo() - v9.CheckDefAndScriptFailure(['swapinfo({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['swapinfo({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1174: String required for argument 1']) call swapinfo('x')->assert_equal({error: 'Cannot open file'}) call swapinfo('')->assert_equal({error: 'Cannot open file'}) enddef def Test_swapname() - v9.CheckDefAndScriptFailure(['swapname([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['swapname([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) assert_fails('swapname("NonExistingBuf")', 'E94:') enddef @@ -4485,13 +4485,13 @@ enddef def Test_system() v9.CheckDefAndScriptFailure(['system(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) - v9.CheckDefAndScriptFailure(['system("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1224: String, Number or List required for argument 2']) + v9.CheckDefAndScriptFailure(['system("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1224: String, Number or List required for argument 2']) assert_equal("123\n", system('echo 123')) enddef def Test_systemlist() v9.CheckDefAndScriptFailure(['systemlist(1)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) - v9.CheckDefAndScriptFailure(['systemlist("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1224: String, Number or List required for argument 2']) + v9.CheckDefAndScriptFailure(['systemlist("a", {})'], ['E1013: Argument 2: type mismatch, expected string but got dict', 'E1224: String, Number or List required for argument 2']) if has('win32') call assert_equal(["123\r"], systemlist('echo 123')) else @@ -4622,16 +4622,16 @@ enddef def Test_term_sendkeys() CheckRunVimInTerminal - v9.CheckDefAndScriptFailure(['term_sendkeys([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['term_sendkeys(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['term_sendkeys([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['term_sendkeys(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) enddef def Test_term_setansicolors() CheckRunVimInTerminal if has('termguicolors') || has('gui') - v9.CheckDefAndScriptFailure(['term_setansicolors([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['term_setansicolors(10, {})'], ['E1013: Argument 2: type mismatch, expected list but got dict', 'E1211: List required for argument 2']) + v9.CheckDefAndScriptFailure(['term_setansicolors([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['term_setansicolors(10, {})'], ['E1013: Argument 2: type mismatch, expected list but got dict', 'E1211: List required for argument 2']) else throw 'Skipped: Only works with termguicolors or gui feature' endif @@ -4639,20 +4639,20 @@ enddef def Test_term_setapi() CheckRunVimInTerminal - v9.CheckDefAndScriptFailure(['term_setapi([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['term_setapi(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['term_setapi([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['term_setapi(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) enddef def Test_term_setkill() CheckRunVimInTerminal - v9.CheckDefAndScriptFailure(['term_setkill([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['term_setkill(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['term_setkill([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['term_setkill(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) enddef def Test_term_setrestore() CheckRunVimInTerminal - v9.CheckDefAndScriptFailure(['term_setrestore([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) - v9.CheckDefAndScriptFailure(['term_setrestore(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) + v9.CheckDefAndScriptFailure(['term_setrestore([], "p")'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1220: String or Number required for argument 1']) + v9.CheckDefAndScriptFailure(['term_setrestore(1, [])'], ['E1013: Argument 2: type mismatch, expected string but got list', 'E1174: String required for argument 2']) enddef def Test_term_setsize() @@ -4672,8 +4672,8 @@ def Test_term_start() winnr()->assert_equal(winnr) bwipe! endif - v9.CheckDefAndScriptFailure(['term_start({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1222: String or List required for argument 1']) - v9.CheckDefAndScriptFailure(['term_start([], [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) + v9.CheckDefAndScriptFailure(['term_start({})'], ['E1013: Argument 1: type mismatch, expected string but got dict', 'E1222: String or List required for argument 1']) + v9.CheckDefAndScriptFailure(['term_start([], [])'], ['E1013: Argument 2: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 2']) v9.CheckDefAndScriptFailure(['term_start("", "")'], ['E1013: Argument 2: type mismatch, expected dict but got string', 'E1206: Dictionary required for argument 2']) v9.CheckDefExecAndScriptFailure(['term_start("")'], 'E474: Invalid argument') enddef @@ -4701,17 +4701,17 @@ enddef def Test_test_gui_event() CheckGui - v9.CheckDefAndScriptFailure(['test_gui_event([], {})'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['test_gui_event([], {})'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) v9.CheckDefAndScriptFailure(['test_gui_event("abc", 1)'], ['E1013: Argument 2: type mismatch, expected dict but got number', 'E1206: Dictionary required for argument 2']) enddef def Test_test_ignore_error() - v9.CheckDefAndScriptFailure(['test_ignore_error([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['test_ignore_error([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) test_ignore_error('RESET') enddef def Test_test_option_not_set() - v9.CheckDefAndScriptFailure(['test_option_not_set([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['test_option_not_set([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) enddef def Test_test_override() @@ -4795,8 +4795,8 @@ enddef def Test_typename() assert_equal('func([unknown], [unknown]): float', typename(function('pow'))) assert_equal('func(...): unknown', test_null_partial()->typename()) - assert_equal('list', test_null_list()->typename()) - assert_equal('dict', test_null_dict()->typename()) + assert_equal('list', test_null_list()->typename()) + assert_equal('dict', test_null_dict()->typename()) if has('job') assert_equal('job', test_null_job()->typename()) endif @@ -4836,7 +4836,7 @@ def Test_uniq_const() enddef def Test_values() - v9.CheckDefAndScriptFailure(['values([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) + v9.CheckDefAndScriptFailure(['values([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) assert_equal([], {}->values()) assert_equal(['sun'], {star: 'sun'}->values()) @@ -4987,7 +4987,7 @@ def Test_win_splitmove() close v9.CheckDefAndScriptFailure(['win_splitmove("a", 2)'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1']) v9.CheckDefAndScriptFailure(['win_splitmove(1, "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) - v9.CheckDefAndScriptFailure(['win_splitmove(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) + v9.CheckDefAndScriptFailure(['win_splitmove(1, 2, [])'], ['E1013: Argument 3: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 3']) enddef def Test_winbufnr() @@ -5003,7 +5003,7 @@ def Test_winlayout() enddef def Test_winnr() - v9.CheckDefAndScriptFailure(['winnr([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['winnr([])'], ['E1013: Argument 1: type mismatch, expected string but got list', 'E1174: String required for argument 1']) v9.CheckDefExecAndScriptFailure(['winnr("")'], 'E15: Invalid expression') assert_equal(1, winnr()) assert_equal(1, winnr('$')) @@ -5019,7 +5019,7 @@ def Test_winrestcmd() enddef def Test_winrestview() - v9.CheckDefAndScriptFailure(['winrestview([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) + v9.CheckDefAndScriptFailure(['winrestview([])'], ['E1013: Argument 1: type mismatch, expected dict but got list', 'E1206: Dictionary required for argument 1']) :%d _ setline(1, 'Hello World') winrestview({lnum: 1, col: 6}) diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -8561,7 +8561,7 @@ def Test_dict_member_key_type_check() var a = A.new() a.Foo() END - v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected string but got dict', 2) + v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected string but got dict', 2) lines =<< trim END vim9script @@ -8582,7 +8582,7 @@ def Test_dict_member_key_type_check() var a = A.new() a.Foo() END - v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected number but got dict', 3) + v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected number but got dict', 3) enddef def Test_compile_many_def_functions_in_funcref_instr() diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim --- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -552,7 +552,7 @@ def Test_disassemble_store_index() '\d PUSHS "dd"\_s*' .. '\d NEWDICT size 0\_s*' .. '\d NEWDICT size 1\_s*' .. - '\d SETTYPE dict>\_s*' .. + '\d SETTYPE dict>\_s*' .. '\d STORE $0\_s*' .. 'd.dd\[0\] = 0\_s*' .. '\d PUSHNR 0\_s*' .. diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -387,7 +387,7 @@ def Test_expr2_fails() v9.CheckDefAndScriptFailure(["if 3"], 'E1023:', 1) v9.CheckDefExecAndScriptFailure(['var x = 3', 'if x', 'endif'], 'E1023:', 2) - v9.CheckDefAndScriptFailure(["var x = [] || false"], ['E1012: Type mismatch; expected bool but got list', 'E745:'], 1) + v9.CheckDefAndScriptFailure(["var x = [] || false"], ['E1012: Type mismatch; expected bool but got list', 'E745:'], 1) var lines =<< trim END vim9script @@ -2795,7 +2795,7 @@ def Test_expr9_dict() var ds = {k: null_string} assert_equal('dict', typename(ds)) var dl = {a: null_list} - assert_equal('dict>', typename(dl)) + assert_equal('dict>', typename(dl)) END v9.CheckDefAndScriptSuccess(lines) @@ -3038,7 +3038,7 @@ def Test_expr_member() v9.CheckDefAndScriptFailure(["var x = g:dict_one.#$!"], ['E1002:', 'E15:'], 1) v9.CheckDefExecAndScriptFailure(["var d: dict", "echo d['a']"], 'E716:', 2) - v9.CheckDefExecAndScriptFailure(["var d: dict", "d = g:list_empty"], 'E1012: Type mismatch; expected dict but got list', 2) + v9.CheckDefExecAndScriptFailure(["var d: dict", "d = g:list_empty"], 'E1012: Type mismatch; expected dict but got list', 2) enddef def Test_expr9_any_index_slice() diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index cbbd5726403016459946e79a4c320dd082df6392..47b23e85e5a309a35404ea8ca4f9fd8e42d2eeb7 GIT binary patch literal 106635 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 == VAR_LIST || type->tt_type == VAR_DICT) { char *member_free; - char *member_name = type_name(type->tt_member, &member_free); + char *member_name; + if (type->tt_member->tt_type == VAR_UNKNOWN) + member_name = type_name(&t_any, &member_free); + else + member_name = type_name(type->tt_member, &member_free); size_t len = STRLEN(name) + STRLEN(member_name) + 3; *tofree = alloc(len); if (*tofree != NULL)