mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06: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:
parent
d79e726212
commit
75119fcc86
@ -3933,15 +3933,15 @@ bool tv_check_num(const typval_T *const tv)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FUNC_ERROR "E729: using Funcref as a String"
|
#define FUNC_ERROR "E729: Using a Funcref as a String"
|
||||||
|
|
||||||
static const char *const str_errors[] = {
|
static const char *const str_errors[] = {
|
||||||
[VAR_PARTIAL]= N_(FUNC_ERROR),
|
[VAR_PARTIAL]= N_(FUNC_ERROR),
|
||||||
[VAR_FUNC]= N_(FUNC_ERROR),
|
[VAR_FUNC]= N_(FUNC_ERROR),
|
||||||
[VAR_LIST]= N_("E730: using List as a String"),
|
[VAR_LIST]= N_("E730: Using a List as a String"),
|
||||||
[VAR_DICT]= N_("E731: using Dictionary as a String"),
|
[VAR_DICT]= N_("E731: Using a Dictionary as a String"),
|
||||||
[VAR_FLOAT]= e_float_as_string,
|
[VAR_FLOAT]= e_float_as_string,
|
||||||
[VAR_BLOB]= N_("E976: using Blob as a String"),
|
[VAR_BLOB]= N_("E976: Using a Blob as a String"),
|
||||||
[VAR_UNKNOWN]= e_inval_string,
|
[VAR_UNKNOWN]= e_inval_string,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ describe('insert-mode', function()
|
|||||||
{0:~ }|
|
{0:~ }|
|
||||||
{4: }|
|
{4: }|
|
||||||
={2:{}} |
|
={2:{}} |
|
||||||
{5:E731: using Dictionary as a String} |
|
{5:E731: Using a Dictionary as a String} |
|
||||||
{6:Press ENTER or type command to continue}^ |
|
{6:Press ENTER or type command to continue}^ |
|
||||||
]])
|
]])
|
||||||
feed('<CR>')
|
feed('<CR>')
|
||||||
|
@ -95,7 +95,7 @@ describe('edit', function()
|
|||||||
{0:~ }|
|
{0:~ }|
|
||||||
{4: }|
|
{4: }|
|
||||||
={2:{}} |
|
={2:{}} |
|
||||||
{5:E731: using Dictionary as a String} |
|
{5:E731: Using a Dictionary as a String} |
|
||||||
{6:Press ENTER or type command to continue}^ |
|
{6:Press ENTER or type command to continue}^ |
|
||||||
]])
|
]])
|
||||||
|
|
||||||
|
@ -613,15 +613,15 @@ describe('eval', function()
|
|||||||
Executing call setreg(1, 2, 3, 4)
|
Executing call setreg(1, 2, 3, 4)
|
||||||
Vim(call):E118: Too many arguments for function: setreg
|
Vim(call):E118: Too many arguments for function: setreg
|
||||||
Executing call setreg([], 2)
|
Executing call setreg([], 2)
|
||||||
Vim(call):E730: using List as a String
|
Vim(call):E730: Using a List as a String
|
||||||
Executing call setreg(1, 2, [])
|
Executing call setreg(1, 2, [])
|
||||||
Vim(call):E730: using List as a String
|
Vim(call):E730: Using a List as a String
|
||||||
Executing call setreg("/", ["1", "2"])
|
Executing call setreg("/", ["1", "2"])
|
||||||
Vim(call):E883: search pattern and expression register may not contain two or more lines
|
Vim(call):E883: search pattern and expression register may not contain two or more lines
|
||||||
Executing call setreg("=", ["1", "2"])
|
Executing call setreg("=", ["1", "2"])
|
||||||
Vim(call):E883: search pattern and expression register may not contain two or more lines
|
Vim(call):E883: search pattern and expression register may not contain two or more lines
|
||||||
Executing call setreg(1, ["", "", [], ""])
|
Executing call setreg(1, ["", "", [], ""])
|
||||||
Vim(call):E730: using List as a String]])
|
Vim(call):E730: Using a List as a String]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('function name not starting with a capital', function()
|
it('function name not starting with a capital', function()
|
||||||
|
@ -892,8 +892,8 @@ describe('stdpath()', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
it('on non-strings', function()
|
it('on non-strings', function()
|
||||||
eq('Vim(call):E731: using Dictionary as a String', exc_exec('call stdpath({"eris": 23})'))
|
eq('Vim(call):E731: Using a Dictionary as a String', exc_exec('call stdpath({"eris": 23})'))
|
||||||
eq('Vim(call):E730: using List as a String', exc_exec('call stdpath([23])'))
|
eq('Vim(call):E730: Using a List as a String', exc_exec('call stdpath([23])'))
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
@ -95,15 +95,15 @@ describe('execute()', function()
|
|||||||
ret = exc_exec('call execute(0.0)')
|
ret = exc_exec('call execute(0.0)')
|
||||||
eq('Vim(call):E806: using Float as a String', ret)
|
eq('Vim(call):E806: using Float as a String', ret)
|
||||||
ret = exc_exec('call execute(v:_null_dict)')
|
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"))')
|
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"])')
|
ret = exc_exec('call execute(["echo 42", 0.0, "echo 44"])')
|
||||||
eq('Vim:E806: using Float as a String', ret)
|
eq('Vim:E806: using Float as a String', ret)
|
||||||
ret = exc_exec('call execute(["echo 42", v:_null_dict, "echo 44"])')
|
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"])')
|
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)
|
end)
|
||||||
|
|
||||||
it('captures output with highlights', function()
|
it('captures output with highlights', function()
|
||||||
@ -325,7 +325,7 @@ describe('execute()', function()
|
|||||||
eq('Vim(call):E806: using Float as a String', ret)
|
eq('Vim(call):E806: using Float as a String', ret)
|
||||||
|
|
||||||
ret = exc_exec('call execute(v:_null_dict, "silent")')
|
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)", "")')
|
ret = exc_exec('call execute("echo add(1, 1)", "")')
|
||||||
eq('Vim(echo):E897: List or Blob required', ret)
|
eq('Vim(echo):E897: List or Blob required', ret)
|
||||||
|
@ -222,17 +222,17 @@ describe('input()', function()
|
|||||||
eq('DEF2', meths.get_var('var'))
|
eq('DEF2', meths.get_var('var'))
|
||||||
end)
|
end)
|
||||||
it('errors out on invalid inputs', function()
|
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([])'))
|
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("", [])'))
|
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("", "", [])'))
|
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": []})'))
|
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": []})'))
|
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": []})'))
|
exc_exec('call input({"completion": []})'))
|
||||||
eq('Vim(call):E5050: {opts} must be the only argument',
|
eq('Vim(call):E5050: {opts} must be the only argument',
|
||||||
exc_exec('call input({}, "default")'))
|
exc_exec('call input({}, "default")'))
|
||||||
@ -418,17 +418,17 @@ describe('inputdialog()', function()
|
|||||||
eq('DEF2', meths.get_var('var'))
|
eq('DEF2', meths.get_var('var'))
|
||||||
end)
|
end)
|
||||||
it('errors out on invalid inputs', function()
|
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([])'))
|
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("", [])'))
|
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("", "", [])'))
|
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": []})'))
|
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": []})'))
|
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": []})'))
|
exc_exec('call inputdialog({"completion": []})'))
|
||||||
eq('Vim(call):E5050: {opts} must be the only argument',
|
eq('Vim(call):E5050: {opts} must be the only argument',
|
||||||
exc_exec('call inputdialog({}, "default")'))
|
exc_exec('call inputdialog({}, "default")'))
|
||||||
@ -512,13 +512,13 @@ describe('confirm()', function()
|
|||||||
eq(1, meths.get_var('a'))
|
eq(1, meths.get_var('a'))
|
||||||
end
|
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([])'))
|
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?", [])'))
|
pcall_err(command, 'call confirm("Are you sure?", [])'))
|
||||||
eq('Vim(call):E745: Using a List as a Number',
|
eq('Vim(call):E745: Using a List as a Number',
|
||||||
pcall_err(command, 'call confirm("Are you sure?", "&Yes\n&No\n", [])'))
|
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, [])'))
|
pcall_err(command, 'call confirm("Are you sure?", "&Yes\n&No\n", 0, [])'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -147,11 +147,11 @@ describe('writefile()', function()
|
|||||||
for _, args in ipairs({'[], %s, "b"', '[], "' .. fname .. '", %s'}) do
|
for _, args in ipairs({'[], %s, "b"', '[], "' .. fname .. '", %s'}) do
|
||||||
eq('Vim(call):E806: using Float as a String',
|
eq('Vim(call):E806: using Float as a String',
|
||||||
pcall_err(command, ('call writefile(%s)'):format(args:format('0.0'))))
|
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('[]'))))
|
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('{}'))))
|
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")'))))
|
pcall_err(command, ('call writefile(%s)'):format(args:format('function("tr")'))))
|
||||||
end
|
end
|
||||||
eq('Vim(call):E5060: Unknown flag: «»',
|
eq('Vim(call):E5060: Unknown flag: «»',
|
||||||
|
@ -377,9 +377,9 @@ func Test_searchpairpos()
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_searchpair_errors()
|
func Test_searchpair_errors()
|
||||||
call assert_fails("call searchpair([0], 'middle', 'end', 'bW', 'skip', 99, 100)", 'E730: using List as a String')
|
call assert_fails("call searchpair([0], 'middle', 'end', 'bW', 'skip', 99, 100)", 'E730: Using a List as a String')
|
||||||
call assert_fails("call searchpair('start', {-> 0}, 'end', 'bW', 'skip', 99, 100)", 'E729: using Funcref as a String')
|
call assert_fails("call searchpair('start', {-> 0}, 'end', 'bW', 'skip', 99, 100)", 'E729: Using a Funcref as a String')
|
||||||
call assert_fails("call searchpair('start', 'middle', {'one': 1}, 'bW', 'skip', 99, 100)", 'E731: using Dictionary as a String')
|
call assert_fails("call searchpair('start', 'middle', {'one': 1}, 'bW', 'skip', 99, 100)", 'E731: Using a Dictionary as a String')
|
||||||
call assert_fails("call searchpair('start', 'middle', 'end', 'flags', 'skip', 99, 100)", 'E475: Invalid argument: flags')
|
call assert_fails("call searchpair('start', 'middle', 'end', 'flags', 'skip', 99, 100)", 'E475: Invalid argument: flags')
|
||||||
call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 'func', -99, 100)", 'E475: Invalid argument: -99')
|
call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 'func', -99, 100)", 'E475: Invalid argument: -99')
|
||||||
call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 'func', 99, -100)", 'E475: Invalid argument: -100')
|
call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 'func', 99, -100)", 'E475: Invalid argument: -100')
|
||||||
@ -388,9 +388,9 @@ func Test_searchpair_errors()
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_searchpairpos_errors()
|
func Test_searchpairpos_errors()
|
||||||
call assert_fails("call searchpairpos([0], 'middle', 'end', 'bW', 'skip', 99, 100)", 'E730: using List as a String')
|
call assert_fails("call searchpairpos([0], 'middle', 'end', 'bW', 'skip', 99, 100)", 'E730: Using a List as a String')
|
||||||
call assert_fails("call searchpairpos('start', {-> 0}, 'end', 'bW', 'skip', 99, 100)", 'E729: using Funcref as a String')
|
call assert_fails("call searchpairpos('start', {-> 0}, 'end', 'bW', 'skip', 99, 100)", 'E729: Using a Funcref as a String')
|
||||||
call assert_fails("call searchpairpos('start', 'middle', {'one': 1}, 'bW', 'skip', 99, 100)", 'E731: using Dictionary as a String')
|
call assert_fails("call searchpairpos('start', 'middle', {'one': 1}, 'bW', 'skip', 99, 100)", 'E731: Using a Dictionary as a String')
|
||||||
call assert_fails("call searchpairpos('start', 'middle', 'end', 'flags', 'skip', 99, 100)", 'E475: Invalid argument: flags')
|
call assert_fails("call searchpairpos('start', 'middle', 'end', 'flags', 'skip', 99, 100)", 'E475: Invalid argument: flags')
|
||||||
call assert_fails("call searchpairpos('start', 'middle', 'end', 'bW', 'func', -99, 100)", 'E475: Invalid argument: -99')
|
call assert_fails("call searchpairpos('start', 'middle', 'end', 'bW', 'func', -99, 100)", 'E475: Invalid argument: -99')
|
||||||
call assert_fails("call searchpairpos('start', 'middle', 'end', 'bW', 'func', 99, -100)", 'E475: Invalid argument: -100')
|
call assert_fails("call searchpairpos('start', 'middle', 'end', 'bW', 'func', 99, -100)", 'E475: Invalid argument: -100')
|
||||||
|
@ -1468,10 +1468,10 @@ describe('typval.c', function()
|
|||||||
local l = list(1, empty_list, {})
|
local l = list(1, empty_list, {})
|
||||||
|
|
||||||
eq('', tv_list_find_str(l, 0, 'E806: using Float as a String'))
|
eq('', tv_list_find_str(l, 0, 'E806: using Float as a String'))
|
||||||
eq('', tv_list_find_str(l, 1, 'E730: using List as a String'))
|
eq('', tv_list_find_str(l, 1, 'E730: Using a List as a String'))
|
||||||
eq('', tv_list_find_str(l, 2, 'E731: using Dictionary as a String'))
|
eq('', tv_list_find_str(l, 2, 'E731: Using a Dictionary as a String'))
|
||||||
eq('', tv_list_find_str(l, -1, 'E731: using Dictionary as a String'))
|
eq('', tv_list_find_str(l, -1, 'E731: Using a Dictionary as a String'))
|
||||||
eq('', tv_list_find_str(l, -2, 'E730: using List as a String'))
|
eq('', tv_list_find_str(l, -2, 'E730: Using a List as a String'))
|
||||||
eq('', tv_list_find_str(l, -3, 'E806: using Float as a String'))
|
eq('', tv_list_find_str(l, -3, 'E806: using Float as a String'))
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
@ -1745,7 +1745,7 @@ describe('typval.c', function()
|
|||||||
itp('works', function()
|
itp('works', function()
|
||||||
local d = ffi.gc(dict({test={}}), nil)
|
local d = ffi.gc(dict({test={}}), nil)
|
||||||
eq('', ffi.string(check_emsg(function() return lib.tv_dict_get_string(d, 'test', false) end,
|
eq('', ffi.string(check_emsg(function() return lib.tv_dict_get_string(d, 'test', false) end,
|
||||||
'E731: using Dictionary as a String')))
|
'E731: Using a Dictionary as a String')))
|
||||||
d = ffi.gc(dict({tes=int(42), t=44, te='43', xx=int(45)}), nil)
|
d = ffi.gc(dict({tes=int(42), t=44, te='43', xx=int(45)}), nil)
|
||||||
alloc_log:clear()
|
alloc_log:clear()
|
||||||
local dis = dict_items(d)
|
local dis = dict_items(d)
|
||||||
@ -1785,7 +1785,7 @@ describe('typval.c', function()
|
|||||||
return s_ret
|
return s_ret
|
||||||
end
|
end
|
||||||
local d = ffi.gc(dict({test={}}), nil)
|
local d = ffi.gc(dict({test={}}), nil)
|
||||||
eq('', tv_dict_get_string_alloc(d, 'test', 'E731: using Dictionary as a String'))
|
eq('', tv_dict_get_string_alloc(d, 'test', 'E731: Using a Dictionary as a String'))
|
||||||
d = ffi.gc(dict({tes=int(42), t=44, te='43', xx=int(45)}), nil)
|
d = ffi.gc(dict({tes=int(42), t=44, te='43', xx=int(45)}), nil)
|
||||||
alloc_log:clear()
|
alloc_log:clear()
|
||||||
eq(nil, tv_dict_get_string_alloc(d, 'test'))
|
eq(nil, tv_dict_get_string_alloc(d, 'test'))
|
||||||
@ -2832,10 +2832,10 @@ describe('typval.c', function()
|
|||||||
for _, v in ipairs({
|
for _, v in ipairs({
|
||||||
{lib.VAR_NUMBER, nil},
|
{lib.VAR_NUMBER, nil},
|
||||||
{lib.VAR_FLOAT, 'E806: using Float as a String'},
|
{lib.VAR_FLOAT, 'E806: using Float as a String'},
|
||||||
{lib.VAR_PARTIAL, 'E729: using Funcref as a String'},
|
{lib.VAR_PARTIAL, 'E729: Using a Funcref as a String'},
|
||||||
{lib.VAR_FUNC, 'E729: using Funcref as a String'},
|
{lib.VAR_FUNC, 'E729: Using a Funcref as a String'},
|
||||||
{lib.VAR_LIST, 'E730: using List as a String'},
|
{lib.VAR_LIST, 'E730: Using a List as a String'},
|
||||||
{lib.VAR_DICT, 'E731: using Dictionary as a String'},
|
{lib.VAR_DICT, 'E731: Using a Dictionary as a String'},
|
||||||
{lib.VAR_BOOL, nil},
|
{lib.VAR_BOOL, nil},
|
||||||
{lib.VAR_SPECIAL, nil},
|
{lib.VAR_SPECIAL, nil},
|
||||||
{lib.VAR_UNKNOWN, 'E908: using an invalid value as a String'},
|
{lib.VAR_UNKNOWN, 'E908: using an invalid value as a String'},
|
||||||
@ -2987,10 +2987,10 @@ describe('typval.c', function()
|
|||||||
{lib.VAR_NUMBER, {v_number=42}, nil, '42'},
|
{lib.VAR_NUMBER, {v_number=42}, nil, '42'},
|
||||||
{lib.VAR_STRING, {v_string=to_cstr('100500')}, nil, '100500'},
|
{lib.VAR_STRING, {v_string=to_cstr('100500')}, nil, '100500'},
|
||||||
{lib.VAR_FLOAT, {v_float=42.53}, 'E806: using Float as a String', ''},
|
{lib.VAR_FLOAT, {v_float=42.53}, 'E806: using Float as a String', ''},
|
||||||
{lib.VAR_PARTIAL, {v_partial=NULL}, 'E729: using Funcref as a String', ''},
|
{lib.VAR_PARTIAL, {v_partial=NULL}, 'E729: Using a Funcref as a String', ''},
|
||||||
{lib.VAR_FUNC, {v_string=NULL}, 'E729: using Funcref as a String', ''},
|
{lib.VAR_FUNC, {v_string=NULL}, 'E729: Using a Funcref as a String', ''},
|
||||||
{lib.VAR_LIST, {v_list=NULL}, 'E730: using List as a String', ''},
|
{lib.VAR_LIST, {v_list=NULL}, 'E730: Using a List as a String', ''},
|
||||||
{lib.VAR_DICT, {v_dict=NULL}, 'E731: using Dictionary as a String', ''},
|
{lib.VAR_DICT, {v_dict=NULL}, 'E731: Using a Dictionary as a String', ''},
|
||||||
{lib.VAR_SPECIAL, {v_special=lib.kSpecialVarNull}, nil, 'v:null'},
|
{lib.VAR_SPECIAL, {v_special=lib.kSpecialVarNull}, nil, 'v:null'},
|
||||||
{lib.VAR_BOOL, {v_bool=lib.kBoolVarTrue}, nil, 'v:true'},
|
{lib.VAR_BOOL, {v_bool=lib.kBoolVarTrue}, nil, 'v:true'},
|
||||||
{lib.VAR_BOOL, {v_bool=lib.kBoolVarFalse}, nil, 'v:false'},
|
{lib.VAR_BOOL, {v_bool=lib.kBoolVarFalse}, nil, 'v:false'},
|
||||||
@ -3031,10 +3031,10 @@ describe('typval.c', function()
|
|||||||
{lib.VAR_NUMBER, {v_number=42}, nil, '42'},
|
{lib.VAR_NUMBER, {v_number=42}, nil, '42'},
|
||||||
{lib.VAR_STRING, {v_string=to_cstr('100500')}, nil, '100500'},
|
{lib.VAR_STRING, {v_string=to_cstr('100500')}, nil, '100500'},
|
||||||
{lib.VAR_FLOAT, {v_float=42.53}, 'E806: using Float as a String', nil},
|
{lib.VAR_FLOAT, {v_float=42.53}, 'E806: using Float as a String', nil},
|
||||||
{lib.VAR_PARTIAL, {v_partial=NULL}, 'E729: using Funcref as a String', nil},
|
{lib.VAR_PARTIAL, {v_partial=NULL}, 'E729: Using a Funcref as a String', nil},
|
||||||
{lib.VAR_FUNC, {v_string=NULL}, 'E729: using Funcref as a String', nil},
|
{lib.VAR_FUNC, {v_string=NULL}, 'E729: Using a Funcref as a String', nil},
|
||||||
{lib.VAR_LIST, {v_list=NULL}, 'E730: using List as a String', nil},
|
{lib.VAR_LIST, {v_list=NULL}, 'E730: Using a List as a String', nil},
|
||||||
{lib.VAR_DICT, {v_dict=NULL}, 'E731: using Dictionary as a String', nil},
|
{lib.VAR_DICT, {v_dict=NULL}, 'E731: Using a Dictionary as a String', nil},
|
||||||
{lib.VAR_SPECIAL, {v_special=lib.kSpecialVarNull}, nil, 'v:null'},
|
{lib.VAR_SPECIAL, {v_special=lib.kSpecialVarNull}, nil, 'v:null'},
|
||||||
{lib.VAR_BOOL, {v_bool=lib.kBoolVarTrue}, nil, 'v:true'},
|
{lib.VAR_BOOL, {v_bool=lib.kBoolVarTrue}, nil, 'v:true'},
|
||||||
{lib.VAR_BOOL, {v_bool=lib.kBoolVarFalse}, nil, 'v:false'},
|
{lib.VAR_BOOL, {v_bool=lib.kBoolVarFalse}, nil, 'v:false'},
|
||||||
@ -3073,10 +3073,10 @@ describe('typval.c', function()
|
|||||||
{lib.VAR_NUMBER, {v_number=42}, nil, '42'},
|
{lib.VAR_NUMBER, {v_number=42}, nil, '42'},
|
||||||
{lib.VAR_STRING, {v_string=to_cstr('100500')}, nil, '100500'},
|
{lib.VAR_STRING, {v_string=to_cstr('100500')}, nil, '100500'},
|
||||||
{lib.VAR_FLOAT, {v_float=42.53}, 'E806: using Float as a String', ''},
|
{lib.VAR_FLOAT, {v_float=42.53}, 'E806: using Float as a String', ''},
|
||||||
{lib.VAR_PARTIAL, {v_partial=NULL}, 'E729: using Funcref as a String', ''},
|
{lib.VAR_PARTIAL, {v_partial=NULL}, 'E729: Using a Funcref as a String', ''},
|
||||||
{lib.VAR_FUNC, {v_string=NULL}, 'E729: using Funcref as a String', ''},
|
{lib.VAR_FUNC, {v_string=NULL}, 'E729: Using a Funcref as a String', ''},
|
||||||
{lib.VAR_LIST, {v_list=NULL}, 'E730: using List as a String', ''},
|
{lib.VAR_LIST, {v_list=NULL}, 'E730: Using a List as a String', ''},
|
||||||
{lib.VAR_DICT, {v_dict=NULL}, 'E731: using Dictionary as a String', ''},
|
{lib.VAR_DICT, {v_dict=NULL}, 'E731: Using a Dictionary as a String', ''},
|
||||||
{lib.VAR_SPECIAL, {v_special=lib.kSpecialVarNull}, nil, 'v:null'},
|
{lib.VAR_SPECIAL, {v_special=lib.kSpecialVarNull}, nil, 'v:null'},
|
||||||
{lib.VAR_BOOL, {v_bool=lib.kBoolVarTrue}, nil, 'v:true'},
|
{lib.VAR_BOOL, {v_bool=lib.kBoolVarTrue}, nil, 'v:true'},
|
||||||
{lib.VAR_BOOL, {v_bool=lib.kBoolVarFalse}, nil, 'v:false'},
|
{lib.VAR_BOOL, {v_bool=lib.kBoolVarFalse}, nil, 'v:false'},
|
||||||
@ -3116,10 +3116,10 @@ describe('typval.c', function()
|
|||||||
{lib.VAR_NUMBER, {v_number=42}, nil, '42'},
|
{lib.VAR_NUMBER, {v_number=42}, nil, '42'},
|
||||||
{lib.VAR_STRING, {v_string=to_cstr('100500')}, nil, '100500'},
|
{lib.VAR_STRING, {v_string=to_cstr('100500')}, nil, '100500'},
|
||||||
{lib.VAR_FLOAT, {v_float=42.53}, 'E806: using Float as a String', nil},
|
{lib.VAR_FLOAT, {v_float=42.53}, 'E806: using Float as a String', nil},
|
||||||
{lib.VAR_PARTIAL, {v_partial=NULL}, 'E729: using Funcref as a String', nil},
|
{lib.VAR_PARTIAL, {v_partial=NULL}, 'E729: Using a Funcref as a String', nil},
|
||||||
{lib.VAR_FUNC, {v_string=NULL}, 'E729: using Funcref as a String', nil},
|
{lib.VAR_FUNC, {v_string=NULL}, 'E729: Using a Funcref as a String', nil},
|
||||||
{lib.VAR_LIST, {v_list=NULL}, 'E730: using List as a String', nil},
|
{lib.VAR_LIST, {v_list=NULL}, 'E730: Using a List as a String', nil},
|
||||||
{lib.VAR_DICT, {v_dict=NULL}, 'E731: using Dictionary as a String', nil},
|
{lib.VAR_DICT, {v_dict=NULL}, 'E731: Using a Dictionary as a String', nil},
|
||||||
{lib.VAR_SPECIAL, {v_special=lib.kSpecialVarNull}, nil, 'v:null'},
|
{lib.VAR_SPECIAL, {v_special=lib.kSpecialVarNull}, nil, 'v:null'},
|
||||||
{lib.VAR_BOOL, {v_bool=lib.kBoolVarTrue}, nil, 'v:true'},
|
{lib.VAR_BOOL, {v_bool=lib.kBoolVarTrue}, nil, 'v:true'},
|
||||||
{lib.VAR_BOOL, {v_bool=lib.kBoolVarFalse}, nil, 'v:false'},
|
{lib.VAR_BOOL, {v_bool=lib.kBoolVarFalse}, nil, 'v:false'},
|
||||||
|
Loading…
Reference in New Issue
Block a user