mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
vim-patch:8.2.3135: Vim9: builtin function arguments not checked at compile time
Problem: Vim9: builtin function arguments not checked at compile time.
Solution: Add more type checks. (Yegappan Lakshmanan, closes vim/vim#8539)
5b73992d8f
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
@@ -95,15 +95,15 @@ describe('execute()', function()
|
||||
ret = exc_exec('call execute(0.0)')
|
||||
eq('Vim(call):E806: using Float as a String', ret)
|
||||
ret = exc_exec('call execute(v:_null_dict)')
|
||||
eq('Vim(call):E731: using Dictionary as a String', ret)
|
||||
eq('Vim(call):E731: Using a Dictionary as a String', ret)
|
||||
ret = exc_exec('call execute(function("tr"))')
|
||||
eq('Vim(call):E729: using Funcref as a String', ret)
|
||||
eq('Vim(call):E729: Using a Funcref as a String', ret)
|
||||
ret = exc_exec('call execute(["echo 42", 0.0, "echo 44"])')
|
||||
eq('Vim:E806: using Float as a String', ret)
|
||||
ret = exc_exec('call execute(["echo 42", v:_null_dict, "echo 44"])')
|
||||
eq('Vim:E731: using Dictionary as a String', ret)
|
||||
eq('Vim:E731: Using a Dictionary as a String', ret)
|
||||
ret = exc_exec('call execute(["echo 42", function("tr"), "echo 44"])')
|
||||
eq('Vim:E729: using Funcref as a String', ret)
|
||||
eq('Vim:E729: Using a Funcref as a String', ret)
|
||||
end)
|
||||
|
||||
it('captures output with highlights', function()
|
||||
@@ -325,7 +325,7 @@ describe('execute()', function()
|
||||
eq('Vim(call):E806: using Float as a String', ret)
|
||||
|
||||
ret = exc_exec('call execute(v:_null_dict, "silent")')
|
||||
eq('Vim(call):E731: using Dictionary as a String', ret)
|
||||
eq('Vim(call):E731: Using a Dictionary as a String', ret)
|
||||
|
||||
ret = exc_exec('call execute("echo add(1, 1)", "")')
|
||||
eq('Vim(echo):E897: List or Blob required', ret)
|
||||
|
||||
@@ -222,17 +222,17 @@ describe('input()', function()
|
||||
eq('DEF2', meths.get_var('var'))
|
||||
end)
|
||||
it('errors out on invalid inputs', function()
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call input([])'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call input("", [])'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call input("", "", [])'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call input({"prompt": []})'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call input({"default": []})'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call input({"completion": []})'))
|
||||
eq('Vim(call):E5050: {opts} must be the only argument',
|
||||
exc_exec('call input({}, "default")'))
|
||||
@@ -418,17 +418,17 @@ describe('inputdialog()', function()
|
||||
eq('DEF2', meths.get_var('var'))
|
||||
end)
|
||||
it('errors out on invalid inputs', function()
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call inputdialog([])'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call inputdialog("", [])'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call inputdialog("", "", [])'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call inputdialog({"prompt": []})'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call inputdialog({"default": []})'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
exc_exec('call inputdialog({"completion": []})'))
|
||||
eq('Vim(call):E5050: {opts} must be the only argument',
|
||||
exc_exec('call inputdialog({}, "default")'))
|
||||
@@ -512,13 +512,13 @@ describe('confirm()', function()
|
||||
eq(1, meths.get_var('a'))
|
||||
end
|
||||
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
pcall_err(command, 'call confirm([])'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
pcall_err(command, 'call confirm("Are you sure?", [])'))
|
||||
eq('Vim(call):E745: Using a List as a Number',
|
||||
pcall_err(command, 'call confirm("Are you sure?", "&Yes\n&No\n", [])'))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
pcall_err(command, 'call confirm("Are you sure?", "&Yes\n&No\n", 0, [])'))
|
||||
end)
|
||||
|
||||
|
||||
@@ -147,11 +147,11 @@ describe('writefile()', function()
|
||||
for _, args in ipairs({'[], %s, "b"', '[], "' .. fname .. '", %s'}) do
|
||||
eq('Vim(call):E806: using Float as a String',
|
||||
pcall_err(command, ('call writefile(%s)'):format(args:format('0.0'))))
|
||||
eq('Vim(call):E730: using List as a String',
|
||||
eq('Vim(call):E730: Using a List as a String',
|
||||
pcall_err(command, ('call writefile(%s)'):format(args:format('[]'))))
|
||||
eq('Vim(call):E731: using Dictionary as a String',
|
||||
eq('Vim(call):E731: Using a Dictionary as a String',
|
||||
pcall_err(command, ('call writefile(%s)'):format(args:format('{}'))))
|
||||
eq('Vim(call):E729: using Funcref as a String',
|
||||
eq('Vim(call):E729: Using a Funcref as a String',
|
||||
pcall_err(command, ('call writefile(%s)'):format(args:format('function("tr")'))))
|
||||
end
|
||||
eq('Vim(call):E5060: Unknown flag: «»',
|
||||
|
||||
Reference in New Issue
Block a user