@@ -74,7 +74,7 @@ function vm.bindDocs(source)
74
74
end
75
75
76
76
--- @param source parser.object | vm.variable
77
- --- @param key string | vm.global | vm.ANY
77
+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
78
78
--- @param pushResult fun ( res : parser.object , markDoc ?: boolean )
79
79
local function searchFieldByLocalID (source , key , pushResult )
80
80
local fields
@@ -142,15 +142,15 @@ end
142
142
143
143
--- @param suri uri
144
144
--- @param source parser.object
145
- --- @param key string | vm.global | vm.ANY
145
+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
146
146
--- @param pushResult fun ( res : parser.object , markDoc ?: boolean )
147
147
local function searchFieldByGlobalID (suri , source , key , pushResult )
148
148
local node = vm .getGlobalNode (source )
149
149
if not node then
150
150
return
151
151
end
152
152
if node .cate == ' variable' then
153
- if key ~= vm .ANY then
153
+ if key ~= vm .ANY and key ~= vm . ANYDOC then
154
154
if type (key ) ~= ' string' then
155
155
return
156
156
end
@@ -272,6 +272,7 @@ local searchFieldSwitch = util.switch()
272
272
end
273
273
local fieldKey = guide .getKeyName (field )
274
274
if key == vm .ANY
275
+ or key == vm .ANYDOC
275
276
or key == fieldKey then
276
277
pushResult (field )
277
278
end
@@ -320,6 +321,7 @@ local searchFieldSwitch = util.switch()
320
321
for fn in fieldNode :eachObject () do
321
322
if fn .type == ' global' and fn .cate == ' type' then
322
323
if key == vm .ANY
324
+ or key == vm .ANYDOC
323
325
or fn .name == ' any'
324
326
or (fn .name == ' boolean' and type (key ) == ' boolean' )
325
327
or (fn .name == ' number' and type (key ) == ' number' )
@@ -331,14 +333,15 @@ local searchFieldSwitch = util.switch()
331
333
or fn .type == ' doc.type.integer'
332
334
or fn .type == ' doc.type.boolean' then
333
335
if key == vm .ANY
336
+ or key == vm .ANYDOC
334
337
or fn [1 ] == key then
335
338
pushResult (field , true )
336
339
end
337
340
end
338
341
end
339
342
end
340
343
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
342
345
pushResult (field , true )
343
346
end
344
347
end
@@ -358,7 +361,7 @@ local searchFieldSwitch = util.switch()
358
361
: case ' global'
359
362
: call (function (suri , node , key , pushResult )
360
363
if node .cate == ' variable' then
361
- if key ~= vm .ANY then
364
+ if key ~= vm .ANY and key ~= vm . ANYDOC then
362
365
if type (key ) ~= ' string' then
363
366
return
364
367
end
@@ -388,7 +391,7 @@ local searchFieldSwitch = util.switch()
388
391
389
392
--- @param suri uri
390
393
--- @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
392
395
--- @param pushResult fun ( field : vm.object , isMark ?: boolean )
393
396
function vm .getClassFields (suri , object , key , pushResult )
394
397
local mark = {}
@@ -418,6 +421,7 @@ function vm.getClassFields(suri, object, key, pushResult)
418
421
if fieldKey then
419
422
-- ---@field x boolean -> class.x
420
423
if key == vm .ANY
424
+ or key == vm .ANYDOC
421
425
or fieldKey == key then
422
426
if not searchedFields [fieldKey ] then
423
427
pushResult (field , true )
@@ -426,7 +430,7 @@ function vm.getClassFields(suri, object, key, pushResult)
426
430
end
427
431
goto CONTINUE
428
432
end
429
- if key == vm .ANY then
433
+ if key == vm .ANY or key == vm . ANYDOC then
430
434
pushResult (field , true )
431
435
goto CONTINUE
432
436
end
@@ -771,7 +775,7 @@ function vm.bindAs(source)
771
775
end
772
776
773
777
--- @param source parser.object | vm.variable
774
- --- @param key string | vm.global | vm.ANY
778
+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
775
779
--- @return parser.object[] docedResults
776
780
--- @return parser.object[] commonResults
777
781
function vm .getNodesOfParentNode (source , key )
832
836
833
837
-- 遍历所有字段(按照优先级)
834
838
--- @param source parser.object | vm.variable
835
- --- @param key string | vm.global | vm.ANY
839
+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
836
840
--- @param pushResult fun ( source : parser.object )
837
841
function vm .compileByParentNode (source , key , pushResult )
838
842
local docedResults , commonResults = vm .getNodesOfParentNode (source , key )
851
855
852
856
-- 遍历所有字段(无视优先级)
853
857
--- @param source parser.object | vm.variable
854
- --- @param key string | vm.global | vm.ANY
858
+ --- @param key string | vm.global | vm.ANY | vm.ANYDOC
855
859
--- @param pushResult fun ( source : parser.object )
856
860
function vm .compileByParentNodeAll (source , key , pushResult )
857
861
local docedResults , commonResults = vm .getNodesOfParentNode (source , key )
@@ -1724,7 +1728,7 @@ local compilerSwitch = util.switch()
1724
1728
end
1725
1729
1726
1730
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 )
1728
1732
if src .type == ' doc.field'
1729
1733
or src .type == ' doc.type.field' then
1730
1734
if vm .isSubType (guide .getUri (source ), vm .compileNode (source .index ), vm .compileNode (src .field or src .name )) then
0 commit comments