@@ -350,7 +350,7 @@ function vm.getClassFields(suri, object, key, pushResult)
350350 local fieldKey = guide .getKeyName (field )
351351 if fieldKey then
352352 if not searchedFields [fieldKey ]
353- and guide .isSet (field ) then
353+ and guide .isAssign (field ) then
354354 hasFounded [fieldKey ] = true
355355 pushResult (field , true )
356356 end
@@ -370,7 +370,7 @@ function vm.getClassFields(suri, object, key, pushResult)
370370 local fieldKey = guide .getKeyName (field )
371371 if fieldKey then
372372 if not searchedFields [fieldKey ]
373- and guide .isSet (field ) then
373+ and guide .isAssign (field ) then
374374 hasFounded [fieldKey ] = true
375375 pushResult (field , true )
376376 end
@@ -391,7 +391,7 @@ function vm.getClassFields(suri, object, key, pushResult)
391391 local fieldKey = guide .getKeyName (field )
392392 if fieldKey and not searchedFields [fieldKey ] then
393393 if not searchedFields [fieldKey ]
394- and guide .isSet (field )
394+ and guide .isAssign (field )
395395 and field .value then
396396 if vm .getVariableID (field )
397397 and vm .getVariableID (field ) == vm .getVariableID (field .value ) then
@@ -1162,7 +1162,7 @@ local compilerSwitch = util.switch()
11621162 end
11631163
11641164 -- { f = function (<?x?>) end }
1165- if guide .isSet (parent ) then
1165+ if guide .isAssign (parent ) then
11661166 vm .setNode (source , vm .compileNode (parent ))
11671167 end
11681168 end )
@@ -1758,38 +1758,17 @@ local compilerSwitch = util.switch()
17581758 --- @type vm.global
17591759 local global = source .global
17601760 local uri = guide .getUri (source )
1761- local globalNode = vm .getNode (source )
1762- if not globalNode then
1763- return
1764- end
1765- globalNode :merge (global )
1761+ vm .setNode (source , global )
17661762 if global .cate == ' variable' then
1767- local hasMarkDoc
1768- for _ , set in ipairs (global :getSets (uri )) do
1769- if set .bindDocs and set .parent .type == ' main' then
1770- if bindDocs (set ) then
1771- globalNode :merge (vm .compileNode (set ))
1772- hasMarkDoc = true
1773- end
1774- if vm .getNode (set ) then
1775- globalNode :merge (vm .compileNode (set ))
1776- end
1777- end
1778- end
1779- -- Set all globals node first to avoid recursive
1780- for _ , set in ipairs (global :getSets (uri )) do
1781- vm .setNode (set , globalNode , true )
1782- end
1783- for _ , set in ipairs (global :getSets (uri )) do
1784- if set .value and set .value .type ~= ' nil' and set .parent .type == ' main' then
1785- if not hasMarkDoc or guide .isLiteral (set .value ) then
1786- globalNode :merge (vm .compileNode (set .value ))
1763+ for luri , link in pairs (global .links ) do
1764+ if luri ~= uri then
1765+ local firstSet = link .sets [1 ]
1766+ if firstSet then
1767+ local setNode = vm .compileNode (firstSet )
1768+ vm .setNode (source , setNode )
17871769 end
17881770 end
17891771 end
1790- for _ , set in ipairs (global :getSets (uri )) do
1791- vm .setNode (set , globalNode , true )
1792- end
17931772 end
17941773 if global .cate == ' type' then
17951774 for _ , set in ipairs (global :getSets (uri )) do
@@ -1798,15 +1777,15 @@ local compilerSwitch = util.switch()
17981777 for _ , ext in ipairs (set .extends ) do
17991778 if ext .type == ' doc.type.table' then
18001779 if not vm .getGeneric (ext ) then
1801- globalNode : merge ( vm .compileNode (ext ))
1780+ vm . setNode ( source , vm .compileNode (ext ))
18021781 end
18031782 end
18041783 end
18051784 end
18061785 end
18071786 if set .type == ' doc.alias' then
18081787 if not vm .getGeneric (set .extends ) then
1809- globalNode : merge ( vm .compileNode (set .extends ))
1788+ vm . setNode ( source , vm .compileNode (set .extends ))
18101789 end
18111790 end
18121791 end
0 commit comments