diff options
Diffstat (limited to 'compiler/docgen.nim')
-rw-r--r-- | compiler/docgen.nim | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/compiler/docgen.nim b/compiler/docgen.nim index 2e03c0d4d..28cbcbd8d 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -415,12 +415,6 @@ proc runAllExamples(d: PDoc) = rawMessage(d.conf, hintSuccess, ["runnableExamples: " & outp.string]) removeFile(outp.changeFileExt(ExeExt)) -proc extractImports(n: PNode; result: PNode) = - if n.kind in {nkImportStmt, nkImportExceptStmt, nkFromStmt}: - result.add copyTree(n) - n.kind = nkEmpty - return - for i in 0..<n.safeLen: extractImports(n[i], result) proc prepareExamples(d: PDoc; n: PNode) = var docComment = newTree(nkCommentStmt) @@ -430,12 +424,20 @@ proc prepareExamples(d: PDoc; n: PNode) = docComment, newTree(nkImportStmt, newStrNode(nkStrLit, d.filename))) runnableExamples.info = n.info - let imports = newTree(nkStmtList) - var savedLastSon = copyTree n.lastSon - extractImports(savedLastSon, imports) - for imp in imports: runnableExamples.add imp - runnableExamples.add newTree(nkBlockStmt, newNode(nkEmpty), copyTree savedLastSon) + for a in n.lastSon: runnableExamples.add a testExample(d, runnableExamples) + when false: + proc extractImports(n: PNode; result: PNode) = + if n.kind in {nkImportStmt, nkImportExceptStmt, nkFromStmt}: + result.add copyTree(n) + n.kind = nkEmpty + return + for i in 0..<n.safeLen: extractImports(n[i], result) + let imports = newTree(nkStmtList) + var savedLastSon = copyTree n.lastSon + extractImports(savedLastSon, imports) + for imp in imports: runnableExamples.add imp + runnableExamples.add newTree(nkBlockStmt, newNode(nkEmpty), copyTree savedLastSon) proc getAllRunnableExamplesRec(d: PDoc; n, orig: PNode; dest: var Rope) = if n.info.fileIndex != orig.info.fileIndex: return |