mirror of
https://github.com/neovim/neovim.git
synced 2026-05-25 22:38:29 +00:00
feat(docs): render class dot members as module functions
AI-assisted: Codex
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
local t = require('test.testutil')
|
||||
|
||||
local dedent = t.dedent
|
||||
local eq = t.eq
|
||||
|
||||
local parser = require('gen.luacats_parser')
|
||||
@@ -104,4 +105,76 @@ describe('luacats parser', function()
|
||||
]],
|
||||
exp
|
||||
)
|
||||
|
||||
it('tracks class member declaration style', function()
|
||||
local classes, funs = parser.parse_str(
|
||||
dedent([[ --- @class vim.MyClass
|
||||
local MyClass = {}
|
||||
|
||||
--- Dot member.
|
||||
--- @param obj vim.MyClass
|
||||
function MyClass.dot_member(obj)
|
||||
end
|
||||
|
||||
--- Colon member.
|
||||
function MyClass:colon_member()
|
||||
end
|
||||
|
||||
return MyClass
|
||||
]]),
|
||||
'runtime/lua/vim/myclass.lua'
|
||||
)
|
||||
|
||||
eq('vim.MyClass', classes['vim.MyClass'].name)
|
||||
eq({
|
||||
classvar = 'MyClass',
|
||||
desc = 'Dot member.',
|
||||
kind = 'field',
|
||||
name = 'dot_member',
|
||||
type = 'fun(obj: vim.MyClass)',
|
||||
}, classes['vim.MyClass'].fields[1])
|
||||
eq({
|
||||
classvar = 'MyClass',
|
||||
desc = 'Colon member.',
|
||||
kind = 'field',
|
||||
name = 'colon_member',
|
||||
type = 'fun(self: vim.MyClass)',
|
||||
}, classes['vim.MyClass'].fields[2])
|
||||
|
||||
eq('.', funs[1].member_sep)
|
||||
eq('MyClass', funs[1].classvar)
|
||||
eq('MyClass', funs[1].modvar)
|
||||
eq('obj', funs[1].params[1].name)
|
||||
|
||||
eq(':', funs[2].member_sep)
|
||||
eq('self', funs[2].params[1].name)
|
||||
eq('vim.MyClass', funs[2].params[1].type)
|
||||
end)
|
||||
|
||||
it('keeps non-returned dot members as class fields', function()
|
||||
local classes = parser.parse_str(
|
||||
dedent([[ --- @class vim.Helper
|
||||
local Helper = {}
|
||||
|
||||
--- @class vim.Module
|
||||
local M = {}
|
||||
|
||||
--- Helper field.
|
||||
--- @param helper vim.Helper
|
||||
function Helper.field(helper)
|
||||
end
|
||||
|
||||
return M
|
||||
]]),
|
||||
'runtime/lua/vim/module.lua'
|
||||
)
|
||||
|
||||
eq({
|
||||
classvar = 'Helper',
|
||||
desc = 'Helper field.',
|
||||
kind = 'field',
|
||||
name = 'field',
|
||||
type = 'fun(helper: vim.Helper)',
|
||||
}, classes['vim.Helper'].fields[1])
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user