Skip to content

Commit b8ce11d

Browse files
authored
fixes #25027; nim doc uses doc comment from private field for public field (#25239)
fixes #25027
1 parent b7c02e9 commit b8ce11d

File tree

5 files changed

+33
-0
lines changed

5 files changed

+33
-0
lines changed

compiler/renderer.nim

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,10 @@ proc pushCom(g: var TSrcGen, n: PNode) =
327327
setLen(g.comStack, g.comStack.len + 1)
328328
g.comStack[^1] = n
329329

330+
proc popCom(g: var TSrcGen): PNode =
331+
result = g.comStack[^1]
332+
setLen(g.comStack, g.comStack.len - 1)
333+
330334
proc popAllComs(g: var TSrcGen) =
331335
setLen(g.comStack, 0)
332336

@@ -1353,6 +1357,10 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext, fromStmtList = false) =
13531357
if not n[0].isExported() and renderNonExportedFields notin g.flags:
13541358
# Skip if this is a property in a type and its not exported
13551359
# (While also not allowing rendering of non exported fields)
1360+
if shouldRenderComment(g, n):
1361+
# `shouldRenderComment` indicts that we have comments to render
1362+
# but it's a non-exported field, so we just pop without rendering any comment
1363+
discard popCom(g)
13561364
return
13571365
# render postfix for object fields:
13581366
exclFlags = g.flags * {renderNoPostfix}

nimdoc/testproject/expected/testproject.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ <h1 class="title">testproject</h1>
8282
Rectangle ## A four-sided shape">Shapes</a></li>
8383
<li><a class="reference" href="#T19396" title="T19396 = object
8484
a*: int">T19396</a></li>
85+
<li><a class="reference" href="#Xxx" title="Xxx = object
86+
field*: int
87+
field3*: int ## Doc comment2">Xxx</a></li>
8588

8689
</ul>
8790
</details>
@@ -455,6 +458,16 @@ <h1><a class="toc-backref" href="#7">Types</a></h1>
455458

456459

457460

461+
</dd>
462+
</div>
463+
<div id="Xxx">
464+
<dt><pre><a href="testproject.html#Xxx"><span class="Identifier">Xxx</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
465+
<span class="Identifier">field</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
466+
<span class="Identifier">field3</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Comment">## Doc comment2</span></pre></dt>
467+
<dd>
468+
469+
470+
458471
</dd>
459472
</div>
460473

nimdoc/testproject/expected/testproject.idx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ nim T19396 testproject.html#T19396 object T19396 404
6767
nim somePragma testproject.html#somePragma.t template somePragma() 408
6868
nim MyObject testproject.html#MyObject object MyObject 412
6969
nim AnotherObject testproject.html#AnotherObject object AnotherObject 417
70+
nim Xxx testproject.html#Xxx object Xxx 424
7071
nimgrp bar testproject.html#bar-procs-all proc 43
7172
nimgrp baz testproject.html#baz-procs-all proc 46
7273
heading Basic usage testproject.html#basic-usage Basic usage 0

nimdoc/testproject/expected/theindex.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,10 @@ <h1 class="title">Index</h1>
342342
<li><a class="reference external"
343343
data-doc-search-tag="testproject: proc tripleStrLitTest()" href="testproject.html#tripleStrLitTest">testproject: proc tripleStrLitTest()</a></li>
344344
</ul></dd>
345+
<dt><a name="Xxx" href="#Xxx"><span>Xxx:</span></a></dt><dd><ul class="simple">
346+
<li><a class="reference external"
347+
data-doc-search-tag="testproject: object Xxx" href="testproject.html#Xxx">testproject: object Xxx</a></li>
348+
</ul></dd>
345349
<dt><a name="z1" href="#z1"><span>z1:</span></a></dt><dd><ul class="simple">
346350
<li><a class="reference external"
347351
data-doc-search-tag="testproject: proc z1(): Foo" href="testproject.html#z1">testproject: proc z1(): Foo</a></li>

nimdoc/testproject/testproject.nim

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,3 +420,10 @@ type
420420
y*: proc (x: string)
421421
of false:
422422
hidden: string
423+
424+
type Xxx* = object
425+
field*: int
426+
field2: int
427+
## Doc comment
428+
field3*: int
429+
## Doc comment2

0 commit comments

Comments
 (0)