refactor(lua): deprecate tbl_flatten

Problem:
Besides being redundant with vim.iter():flatten(), `tbl_flatten` has
these problems:

- Has `tbl_` prefix but only accepts lists.
- Discards some results! Compare the following:
  - iter.flatten():
    ```
    vim.iter({1, { { a = 2 } }, { 3 } }):flatten():totable()
    ```
  - tbl_flatten:
    ```
    vim.tbl_flatten({1, { { a = 2 } }, { 3 } })
    ```

Solution:
Deprecate tbl_flatten.

Note:
iter:flatten() currently fails ("flatten() requires a list-like table")
on this code from gen_lsp.lua:

    local anonym = vim.iter({ -- remove nil
      anonymous_num > 1 and '' or nil,
      '---@class ' .. anonymous_classname,
    }):flatten():totable()

Should we enhance :flatten() to work for arrays?
This commit is contained in:
Justin M. Keyes
2024-04-22 00:58:48 +02:00
parent 35e38833c5
commit 9912a4c81b
7 changed files with 21 additions and 30 deletions

View File

@ -259,10 +259,13 @@ function M.gen(opt)
if prefix then
anonymous_classname = anonymous_classname .. '.' .. prefix
end
local anonym = vim.tbl_flatten { -- remove nil
anonymous_num > 1 and '' or nil,
'---@class ' .. anonymous_classname,
}
local anonym = vim
.iter({
(anonymous_num > 1 and { '' } or {}),
{ '---@class ' .. anonymous_classname },
})
:flatten()
:totable()
--- @class vim._gen_lsp.StructureLiteral translated to anonymous @class.
--- @field deprecated? string