@@ -74,7 +74,7 @@ function vm.bindDocs(source)
7474end
7575
7676--- @param source parser.object | vm.variable
77- --- @param key string | vm.global | vm.ANY
77+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
7878--- @param pushResult fun ( res : parser.object , markDoc ?: boolean )
7979local function searchFieldByLocalID (source , key , pushResult )
8080 local fields
@@ -142,15 +142,15 @@ end
142142
143143--- @param suri uri
144144--- @param source parser.object
145- --- @param key string | vm.global | vm.ANY
145+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
146146--- @param pushResult fun ( res : parser.object , markDoc ?: boolean )
147147local function searchFieldByGlobalID (suri , source , key , pushResult )
148148 local node = vm .getGlobalNode (source )
149149 if not node then
150150 return
151151 end
152152 if node .cate == ' variable' then
153- if key ~= vm .ANY then
153+ if key ~= vm .ANY and key ~= vm . ANYDOC then
154154 if type (key ) ~= ' string' then
155155 return
156156 end
@@ -272,6 +272,7 @@ local searchFieldSwitch = util.switch()
272272 end
273273 local fieldKey = guide .getKeyName (field )
274274 if key == vm .ANY
275+ or key == vm .ANYDOC
275276 or key == fieldKey then
276277 pushResult (field )
277278 end
@@ -320,6 +321,7 @@ local searchFieldSwitch = util.switch()
320321 for fn in fieldNode :eachObject () do
321322 if fn .type == ' global' and fn .cate == ' type' then
322323 if key == vm .ANY
324+ or key == vm .ANYDOC
323325 or fn .name == ' any'
324326 or (fn .name == ' boolean' and type (key ) == ' boolean' )
325327 or (fn .name == ' number' and type (key ) == ' number' )
@@ -331,14 +333,15 @@ local searchFieldSwitch = util.switch()
331333 or fn .type == ' doc.type.integer'
332334 or fn .type == ' doc.type.boolean' then
333335 if key == vm .ANY
336+ or key == vm .ANYDOC
334337 or fn [1 ] == key then
335338 pushResult (field , true )
336339 end
337340 end
338341 end
339342 end
340343 if fieldKey .type == ' doc.field.name' then
341- if key == vm .ANY or fieldKey [1 ] == key then
344+ if key == vm .ANY or key == vm . ANYDOC or fieldKey [1 ] == key then
342345 pushResult (field , true )
343346 end
344347 end
@@ -358,7 +361,7 @@ local searchFieldSwitch = util.switch()
358361 : case ' global'
359362 : call (function (suri , node , key , pushResult )
360363 if node .cate == ' variable' then
361- if key ~= vm .ANY then
364+ if key ~= vm .ANY and key ~= vm . ANYDOC then
362365 if type (key ) ~= ' string' then
363366 return
364367 end
@@ -388,7 +391,7 @@ local searchFieldSwitch = util.switch()
388391
389392--- @param suri uri
390393--- @param object vm.global
391- --- @param key string | number | integer | boolean | vm.global | vm.ANY
394+ --- @param key string | number | integer | boolean | vm.global | vm.ANY | vm.ANYDOC
392395--- @param pushResult fun ( field : vm.object , isMark ?: boolean )
393396function vm .getClassFields (suri , object , key , pushResult )
394397 local mark = {}
@@ -418,6 +421,7 @@ function vm.getClassFields(suri, object, key, pushResult)
418421 if fieldKey then
419422 -- ---@field x boolean -> class.x
420423 if key == vm .ANY
424+ or key == vm .ANYDOC
421425 or fieldKey == key then
422426 if not searchedFields [fieldKey ] then
423427 pushResult (field , true )
@@ -426,7 +430,7 @@ function vm.getClassFields(suri, object, key, pushResult)
426430 end
427431 goto CONTINUE
428432 end
429- if key == vm .ANY then
433+ if key == vm .ANY or key == vm . ANYDOC then
430434 pushResult (field , true )
431435 goto CONTINUE
432436 end
@@ -771,7 +775,7 @@ function vm.bindAs(source)
771775end
772776
773777--- @param source parser.object | vm.variable
774- --- @param key string | vm.global | vm.ANY
778+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
775779--- @return parser.object[] docedResults
776780--- @return parser.object[] commonResults
777781function vm .getNodesOfParentNode (source , key )
832836
833837-- 遍历所有字段(按照优先级)
834838--- @param source parser.object | vm.variable
835- --- @param key string | vm.global | vm.ANY
839+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
836840--- @param pushResult fun ( source : parser.object )
837841function vm .compileByParentNode (source , key , pushResult )
838842 local docedResults , commonResults = vm .getNodesOfParentNode (source , key )
851855
852856-- 遍历所有字段(无视优先级)
853857--- @param source parser.object | vm.variable
854- --- @param key string | vm.global | vm.ANY
858+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
855859--- @param pushResult fun ( source : parser.object )
856860function vm .compileByParentNodeAll (source , key , pushResult )
857861 local docedResults , commonResults = vm .getNodesOfParentNode (source , key )
@@ -1724,7 +1728,7 @@ local compilerSwitch = util.switch()
17241728 end
17251729
17261730 if not hasMarkDoc and source .type == ' tableindex' then
1727- vm .compileByParentNode (source .node , vm .ANY , function (src )
1731+ vm .compileByParentNode (source .node , vm .ANYDOC , function (src )
17281732 if src .type == ' doc.field'
17291733 or src .type == ' doc.type.field' then
17301734 if vm .isSubType (guide .getUri (source ), vm .compileNode (source .index ), vm .compileNode (src .field or src .name )) then
0 commit comments