@@ -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