From 4eaecfe59eb15a65801681b0a218f2fd497f7ffa Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Fri, 24 Oct 2025 01:19:27 +0800 Subject: [PATCH] fixes #25027; nim doc uses doc comment from private field for public field (#25239) fixes #25027 (cherry picked from commit b8ce11dd9ddc6c45efaf0e4681d7e4f51d7161cd) --- compiler/renderer.nim | 8 ++++++++ nimdoc/testproject/expected/testproject.html | 13 +++++++++++++ nimdoc/testproject/expected/testproject.idx | 1 + nimdoc/testproject/expected/theindex.html | 4 ++++ nimdoc/testproject/testproject.nim | 7 +++++++ 5 files changed, 33 insertions(+) diff --git a/compiler/renderer.nim b/compiler/renderer.nim index 19eb45be8d..a2e7626b42 100644 --- a/compiler/renderer.nim +++ b/compiler/renderer.nim @@ -327,6 +327,10 @@ proc pushCom(g: var TSrcGen, n: PNode) = setLen(g.comStack, g.comStack.len + 1) g.comStack[^1] = n +proc popCom(g: var TSrcGen): PNode = + result = g.comStack[^1] + setLen(g.comStack, g.comStack.len - 1) + proc popAllComs(g: var TSrcGen) = setLen(g.comStack, 0) @@ -1353,6 +1357,10 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext, fromStmtList = false) = if not n[0].isExported() and renderNonExportedFields notin g.flags: # Skip if this is a property in a type and its not exported # (While also not allowing rendering of non exported fields) + if shouldRenderComment(g, n): + # `shouldRenderComment` indicts that we have comments to render + # but it's a non-exported field, so we just pop without rendering any comment + discard popCom(g) return # render postfix for object fields: exclFlags = g.flags * {renderNoPostfix} diff --git a/nimdoc/testproject/expected/testproject.html b/nimdoc/testproject/expected/testproject.html index 43a72d99db..62d9911c03 100644 --- a/nimdoc/testproject/expected/testproject.html +++ b/nimdoc/testproject/expected/testproject.html @@ -82,6 +82,9 @@ Rectangle ## A four-sided shape">Shapes
Xxx = object + field*: int + field3*: int ## Doc comment2