mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 20:08:17 +00:00
refactor(api): rename Dictionary => Dict
In the api_info() output: :new|put =map(filter(api_info().functions, '!has_key(v:val,''deprecated_since'')'), 'v:val') ... {'return_type': 'ArrayOf(Integer, 2)', 'name': 'nvim_win_get_position', 'method': v:true, 'parameters': [['Window', 'window']], 'since': 1} The `ArrayOf(Integer, 2)` return type didn't break clients when we added it, which is evidence that clients don't use the `return_type` field, thus renaming Dictionary => Dict in api_info() is not a breaking change.
This commit is contained in:
@@ -205,8 +205,9 @@ for _, ev in ipairs(events) do
|
|||||||
ev_exported[attr] = ev[attr]
|
ev_exported[attr] = ev[attr]
|
||||||
end
|
end
|
||||||
for _, p in ipairs(ev_exported.parameters) do
|
for _, p in ipairs(ev_exported.parameters) do
|
||||||
if p[1] == 'HlAttrs' then
|
if p[1] == 'HlAttrs' or p[1] == 'Dict' then
|
||||||
p[1] = 'Dict'
|
-- TODO(justinmk): for back-compat, but do clients actually look at this?
|
||||||
|
p[1] = 'Dictionary'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not ev.noexport then
|
if not ev.noexport then
|
||||||
|
@@ -58,10 +58,18 @@ describe('api metadata', function()
|
|||||||
return by_name
|
return by_name
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Remove metadata that is not essential to backwards-compatibility.
|
-- Remove or patch metadata that is not essential to backwards-compatibility.
|
||||||
local function filter_function_metadata(f)
|
local function normalize_func_metadata(f)
|
||||||
|
-- Dictionary was renamed to Dict. That doesn't break back-compat because clients don't actually
|
||||||
|
-- use the `return_type` field (evidence: "ArrayOf(…)" didn't break clients).
|
||||||
|
f.return_type = f.return_type:gsub('Dictionary', 'Dict')
|
||||||
|
|
||||||
f.deprecated_since = nil
|
f.deprecated_since = nil
|
||||||
for idx, _ in ipairs(f.parameters) do
|
for idx, _ in ipairs(f.parameters) do
|
||||||
|
-- Dictionary was renamed to Dict. Doesn't break back-compat because clients don't actually
|
||||||
|
-- use the `parameters` field of API metadata (evidence: "ArrayOf(…)" didn't break clients).
|
||||||
|
f.parameters[idx][1] = f.parameters[idx][1]:gsub('Dictionary', 'Dict')
|
||||||
|
|
||||||
f.parameters[idx][2] = '' -- Remove parameter name.
|
f.parameters[idx][2] = '' -- Remove parameter name.
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -141,7 +149,7 @@ describe('api metadata', function()
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
eq(filter_function_metadata(f), filter_function_metadata(funcs_new[f.name]))
|
eq(normalize_func_metadata(f), normalize_func_metadata(funcs_new[f.name]))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
funcs_compat[level] = name_table(old_api[level].functions)
|
funcs_compat[level] = name_table(old_api[level].functions)
|
||||||
|
Reference in New Issue
Block a user