@@ -630,8 +630,12 @@ proc genDeprecationMsg(d: PDoc, n: PNode): Rope =
630
630
else :
631
631
doAssert false
632
632
633
- proc genItem(d: PDoc, n, nameNode: PNode, k: TSymKind) =
634
- if not isVisible(d, nameNode): return
633
+ type DocFlags = enum
634
+ kDefault
635
+ kForceExport
636
+
637
+ proc genItem(d: PDoc, n, nameNode: PNode, k: TSymKind, docFlags: DocFlags) =
638
+ if (docFlags != kForceExport) and not isVisible(d, nameNode): return
635
639
let
636
640
name = getName(d, nameNode)
637
641
nameRope = name.rope
@@ -847,35 +851,37 @@ proc documentRaises*(cache: IdentCache; n: PNode) =
847
851
if p4 != nil : n[pragmasPos].add p4
848
852
if p5 != nil : n[pragmasPos].add p5
849
853
850
- proc generateDoc* (d: PDoc, n, orig: PNode) =
854
+ proc generateDoc* (d: PDoc, n, orig: PNode, docFlags: DocFlags = kDefault) =
855
+ template genItemAux(skind) =
856
+ genItem(d, n, n[namePos], skind, docFlags)
851
857
case n.kind
852
858
of nkPragma:
853
859
let pragmaNode = findPragma(n, wDeprecated)
854
860
d.modDeprecationMsg.add(genDeprecationMsg(d, pragmaNode))
855
861
of nkCommentStmt: d.modDesc.add(genComment(d, n))
856
862
of nkProcDef:
857
863
when useEffectSystem: documentRaises(d.cache, n)
858
- genItem(d, n, n[namePos], skProc)
864
+ genItemAux( skProc)
859
865
of nkFuncDef:
860
866
when useEffectSystem: documentRaises(d.cache, n)
861
- genItem(d, n, n[namePos], skFunc)
867
+ genItemAux( skFunc)
862
868
of nkMethodDef:
863
869
when useEffectSystem: documentRaises(d.cache, n)
864
- genItem(d, n, n[namePos], skMethod)
870
+ genItemAux( skMethod)
865
871
of nkIteratorDef:
866
872
when useEffectSystem: documentRaises(d.cache, n)
867
- genItem(d, n, n[namePos], skIterator)
868
- of nkMacroDef: genItem(d, n, n[namePos], skMacro)
869
- of nkTemplateDef: genItem(d, n, n[namePos], skTemplate)
873
+ genItemAux( skIterator)
874
+ of nkMacroDef: genItemAux( skMacro)
875
+ of nkTemplateDef: genItemAux( skTemplate)
870
876
of nkConverterDef:
871
877
when useEffectSystem: documentRaises(d.cache, n)
872
- genItem(d, n, n[namePos], skConverter)
878
+ genItemAux( skConverter)
873
879
of nkTypeSection, nkVarSection, nkLetSection, nkConstSection:
874
880
for i in 0 ..< n.len:
875
881
if n[i].kind != nkCommentStmt:
876
882
# order is always 'type var let const':
877
883
genItem(d, n[i], n[i][0 ],
878
- succ(skType, ord(n.kind)- ord(nkTypeSection)))
884
+ succ(skType, ord(n.kind)- ord(nkTypeSection)), docFlags )
879
885
of nkStmtList:
880
886
for i in 0 ..< n.len: generateDoc(d, n[i], orig)
881
887
of nkWhenStmt:
@@ -886,7 +892,12 @@ proc generateDoc*(d: PDoc, n, orig: PNode) =
886
892
for it in n: traceDeps(d, it)
887
893
of nkExportStmt:
888
894
for it in n:
889
- if it.kind == nkSym: exportSym(d, it.sym)
895
+ if it.kind == nkSym:
896
+ let ast = it.sym.ast
897
+ if it.info.fileIndex == ast.info.fileIndex:
898
+ generateDoc(d, ast, orig, kForceExport)
899
+ else :
900
+ exportSym(d, it.sym)
890
901
of nkExportExceptStmt: discard " transformed into nkExportStmt by semExportExcept"
891
902
of nkFromStmt, nkImportExceptStmt: traceDeps(d, n[0 ])
892
903
of nkCallKinds:
0 commit comments