fixes #21483; fixes nim doc skips documentation of annotated elements of objects (#21743)

* fixes #21483; skipPragmaExpr

* add a test case for #21483

* fixes HTML
This commit is contained in:
ringabout
2023-04-29 21:30:44 +08:00
committed by GitHub
parent a593e40ad6
commit 8e0f336f6d
5 changed files with 48 additions and 1 deletions

View File

@@ -1482,7 +1482,7 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext, fromStmtList = false) =
of nkRecList:
indentNL(g)
for i in 0..<n.len:
if n[i].kind == nkIdentDefs and n[i][0].kind == nkPostfix or
if n[i].kind == nkIdentDefs and n[i][0].skipPragmaExpr.kind == nkPostfix or
renderNonExportedFields in g.flags:
optNL(g)
gsub(g, n[i], c)

View File

@@ -61,6 +61,9 @@
<li><a class="reference" href="#Foo" title="Foo = enum
enumValueA2">Foo</a></li>
<li><a class="reference" href="#FooBuzz" title="FooBuzz {.deprecated: &quot;FooBuzz msg&quot;.} = int">FooBuzz</a></li>
<li><a class="reference" href="#MyObject" title="MyObject = object
someString*: string ## This is a string
annotated* {.somePragma.}: string ## This is an annotated string">MyObject</a></li>
<li><a class="reference" href="#Shapes" title="Shapes = enum
Circle, ## A circle
Triangle, ## A three-sided shape
@@ -302,6 +305,10 @@
<ul class="simple nested-toc-section">myfn
<li><a class="reference" href="#myfn.t" title="myfn()">myfn()</a></li>
</ul>
<ul class="simple nested-toc-section">somePragma
<li><a class="reference" href="#somePragma.t" title="somePragma()">somePragma()</a></li>
</ul>
<ul class="simple nested-toc-section">testNimDocTrailingExample
<li><a class="reference" href="#testNimDocTrailingExample.t" title="testNimDocTrailingExample()">testNimDocTrailingExample()</a></li>
@@ -390,6 +397,17 @@
</dd>
</div>
<div id="MyObject">
<dt><pre><a href="testproject.html#MyObject"><span class="Identifier">MyObject</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">someString</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Comment">## This is a string</span>
<span class="Identifier">annotated</span><span class="Operator">*</span> {.<span class="Identifier">somePragma</span>.}<span class="Other">:</span> <span class="Identifier">string</span> <span class="Comment">## This is an annotated string</span>
</pre></dt>
<dd>
</dd>
</div>
<div id="Shapes">
@@ -1127,6 +1145,17 @@ bar
</dd>
</div>
</div>
<div id="somePragma-templates-all">
<div id="somePragma.t">
<dt><pre><span class="Keyword">template</span> <a href="#somePragma.t"><span class="Identifier">somePragma</span></a><span class="Other">(</span><span class="Other">)</span> {.<span class="Identifier">pragma</span>.}</pre></dt>
<dd>
Just some annotation
</dd>
</div>
</div>
<div id="testNimDocTrailingExample-templates-all">
<div id="testNimDocTrailingExample.t">

View File

@@ -64,5 +64,7 @@ nim Rectangle testproject.html#Rectangle Shapes.Rectangle 380
nim Shapes testproject.html#Shapes enum Shapes 380
nim anything testproject.html#anything proc anything() 387
nim T19396 testproject.html#T19396 object T19396 392
nim somePragma testproject.html#somePragma.t template somePragma() 396
nim MyObject testproject.html#MyObject object MyObject 400
nimgrp bar testproject.html#bar-procs-all proc 31
nimgrp baz testproject.html#baz-procs-all proc 34

View File

@@ -282,6 +282,10 @@
<li><a class="reference external"
data-doc-search-tag="testproject: template myfn()" href="testproject.html#myfn.t">testproject: template myfn()</a></li>
</ul></dd>
<dt><a name="MyObject" href="#MyObject"><span>MyObject:</span></a></dt><dd><ul class="simple">
<li><a class="reference external"
data-doc-search-tag="testproject: object MyObject" href="testproject.html#MyObject">testproject: object MyObject</a></li>
</ul></dd>
<dt><a name="p1" href="#p1"><span>p1:</span></a></dt><dd><ul class="simple">
<li><a class="reference external"
data-doc-search-tag="testproject: proc p1()" href="testproject.html#p1">testproject: proc p1()</a></li>
@@ -298,6 +302,10 @@
<li><a class="reference external"
data-doc-search-tag="testproject: proc someFunc()" href="testproject.html#someFunc">testproject: proc someFunc()</a></li>
</ul></dd>
<dt><a name="somePragma" href="#somePragma"><span>somePragma:</span></a></dt><dd><ul class="simple">
<li><a class="reference external"
data-doc-search-tag="testproject: template somePragma()" href="testproject.html#somePragma.t">testproject: template somePragma()</a></li>
</ul></dd>
<dt><a name="SomeType" href="#SomeType"><span>SomeType:</span></a></dt><dd><ul class="simple">
<li><a class="reference external"
data-doc-search-tag="utils: enum SomeType" href="subdir/subdir_b/utils.html#SomeType">utils: enum SomeType</a></li>

View File

@@ -392,3 +392,11 @@ when true: # issue #15184
type T19396* = object # bug #19396
a*: int
b: float
template somePragma*() {.pragma.}
## Just some annotation
type # bug #21483
MyObject* = object
someString*: string ## This is a string
annotated* {.somePragma.}: string ## This is an annotated string