mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 19:38:20 +00:00
refactor: add assertion for v_blob in tv_ptr() (#29554)
Also add test for using printf() and id() with a Blob.
This commit is contained in:
@@ -629,12 +629,14 @@ static const void *tv_ptr(const typval_T *const tvs, int *const idxp)
|
|||||||
#define OFF(attr) offsetof(union typval_vval_union, attr)
|
#define OFF(attr) offsetof(union typval_vval_union, attr)
|
||||||
STATIC_ASSERT(OFF(v_string) == OFF(v_list)
|
STATIC_ASSERT(OFF(v_string) == OFF(v_list)
|
||||||
&& OFF(v_string) == OFF(v_dict)
|
&& OFF(v_string) == OFF(v_dict)
|
||||||
|
&& OFF(v_string) == OFF(v_blob)
|
||||||
&& OFF(v_string) == OFF(v_partial)
|
&& OFF(v_string) == OFF(v_partial)
|
||||||
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_list)
|
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_list)
|
||||||
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_dict)
|
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_dict)
|
||||||
|
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_blob)
|
||||||
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_partial),
|
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_partial),
|
||||||
"Strings, dictionaries, lists and partials are expected to be pointers, "
|
"Strings, Dictionaries, Lists, Blobs and Partials are expected to be pointers, "
|
||||||
"so that all three of them can be accessed via v_string");
|
"so that all of them can be accessed via v_string");
|
||||||
#undef OFF
|
#undef OFF
|
||||||
const int idx = *idxp - 1;
|
const int idx = *idxp - 1;
|
||||||
if (tvs[idx].v_type == VAR_UNKNOWN) {
|
if (tvs[idx].v_type == VAR_UNKNOWN) {
|
||||||
|
@@ -84,10 +84,13 @@ describe('printf()', function()
|
|||||||
end
|
end
|
||||||
api.nvim_del_var('__result')
|
api.nvim_del_var('__result')
|
||||||
end
|
end
|
||||||
|
check_printf('v:_null_string', true)
|
||||||
check_printf('v:_null_list', true)
|
check_printf('v:_null_list', true)
|
||||||
check_printf('v:_null_dict', true)
|
check_printf('v:_null_dict', true)
|
||||||
|
check_printf('v:_null_blob', true)
|
||||||
check_printf('[]')
|
check_printf('[]')
|
||||||
check_printf('{}')
|
check_printf('{}')
|
||||||
|
check_printf('0z')
|
||||||
check_printf('function("tr", ["a"])')
|
check_printf('function("tr", ["a"])')
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
Reference in New Issue
Block a user