mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +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
	 Justin M. Keyes
					Justin M. Keyes