fixes #20132; fixes the broken jsondoc comand [backport] (#20135)

* fixes #20132; fixes the broken jsondoc comand

* add testcase

(cherry picked from commit 2aeb0d516b)
This commit is contained in:
ringabout
2022-08-04 14:49:51 +08:00
committed by narimiran
parent 831fed1c01
commit 33a1e3acb9
3 changed files with 30 additions and 1 deletions

View File

@@ -1224,9 +1224,10 @@ proc finishGenerateDoc*(d: var PDoc) =
var str: string
renderRstToOut(d[], resolved, str)
entry.json[entry.rstField] = %str
d.jEntriesFinal.add entry.json
d.jEntriesPre[i].rst = nil
d.jEntriesFinal.add entry.json # generates docs
proc add(d: PDoc; j: JsonItem) =
if j.json != nil or j.rst != nil: d.jEntriesPre.add j

11
tests/misc/mjsondoc.nim Normal file
View File

@@ -0,0 +1,11 @@
proc doSomething*(x, y: int): int =
## do something
x + y
const
a* = 1 ## echo 1234
b* = "test"
type
MyEnum* = enum
foo, bar

View File

@@ -216,6 +216,23 @@ sub/mmain.idx""", context
let cmd = fmt"{nim} r --backend:{mode} --hints:off --nimcache:{nimcache} {file}"
check execCmdEx(cmd) == ("ok3\n", 0)
block: # nim jsondoc # bug #20132
let file = testsDir / "misc/mjsondoc.nim"
let output = "nimcache_tjsondoc.json"
defer: removeFile(output)
let (msg, exitCode) = execCmdEx(fmt"{nim} jsondoc -o:{output} {file}")
doAssert exitCode == 0, msg
let data = parseJson(readFile(output))["entries"]
doAssert data.len == 4
let doSomething = data[0]
doAssert doSomething["name"].getStr == "doSomething"
doAssert doSomething["type"].getStr == "skProc"
doAssert doSomething["line"].getInt == 1
doAssert doSomething["col"].getInt == 0
doAssert doSomething["code"].getStr == "proc doSomething(x, y: int): int {.raises: [], tags: [], forbids: [].}"
block: # further issues with `--backend`
let file = testsDir / "misc/mbackend.nim"
var cmd = fmt"{nim} doc -b:cpp --hints:off --nimcache:{nimcache} {file}"