@@ -50,17 +50,20 @@ local function formatIndex(key)
5050 return (' [%q]' ):format (key )
5151end
5252
53- local function isTableOptional (tbl )
54- if not tbl then
55- return false
56- end
57- local optional = true
58- for _ , field in ipairs (tbl ) do
59- if field .default == nil then
60- optional = nil
61- end
62- end
63- return optional
53+ local function getOptional (param )
54+ if param .type == ' table' then
55+ if not param .table then
56+ return ' '
57+ end
58+ for _ , field in ipairs (param .table ) do
59+ if field .default == nil then
60+ return ' '
61+ end
62+ end
63+ return ' ?'
64+ else
65+ return (param .default ~= nil ) and ' ?' or ' '
66+ end
6467end
6568
6669local buildType
@@ -124,11 +127,10 @@ local function buildDocFunc(variant, overload)
124127 if param .name == ' ...' then
125128 params [# params + 1 ] = ' ...'
126129 else
127- local optional = (param .type == ' table' and isTableOptional (param .table ) or (param .default ~= nil )) and ' ?' or ' '
128130 if param .name :find ' ^[\' "]' then
129- params [# params + 1 ] = (' %s%s: %s|%q' ):format (param .name :sub (2 , - 2 ), optional , getTypeName (param .type ), param .name )
131+ params [# params + 1 ] = (' %s%s: %s|%q' ):format (param .name :sub (2 , - 2 ), getOptional ( param ) , getTypeName (param .type ), param .name )
130132 else
131- params [# params + 1 ] = (' %s%s: %s' ):format (param .name , optional , getTypeName (param .type ))
133+ params [# params + 1 ] = (' %s%s: %s' ):format (param .name , getOptional ( param ) , getTypeName (param .type ))
132134 end
133135 end
134136 end
@@ -160,10 +162,9 @@ local function buildFunction(func, node, typeName)
160162 for _ , param in ipairs (func .variants [1 ].arguments or {}) do
161163 for paramName in param .name :gmatch ' [%a_][%w_]*' do
162164 params [# params + 1 ] = paramName
163- local optional = param .type == ' table' and isTableOptional (param .table ) or (param .default ~= nil )
164165 text [# text + 1 ] = (' ---@param %s%s %s # %s' ):format (
165166 paramName ,
166- optional and ' ? ' or ' ' ,
167+ getOptional ( param ) ,
167168 buildType (param ),
168169 param .description
169170 )
0 commit comments