diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2017-02-03 17:36:39 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-02-03 17:36:39 +0100 |
commit | 76a28d8b83190ee43826a82b0314800715e1bdbf (patch) | |
tree | 679a85587e1176357b67e1b323b5e64beb2bb94f | |
parent | 26fb6cb07357b0565f2d53c387c50f9727b9f579 (diff) | |
download | Nim-76a28d8b83190ee43826a82b0314800715e1bdbf.tar.gz |
nimsuggest: bugfix: also output documentation comments
-rw-r--r-- | compiler/docgen.nim | 40 | ||||
-rw-r--r-- | compiler/suggest.nim | 14 | ||||
-rw-r--r-- | tools/nimsuggest/tests/tdef1.nim | 6 | ||||
-rw-r--r-- | tools/nimsuggest/tests/tstrutils.nim | 2 |
4 files changed, 38 insertions, 24 deletions
diff --git a/compiler/docgen.nim b/compiler/docgen.nim index 211544924..26dd889ce 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -209,26 +209,26 @@ proc getPlainDocstring(n: PNode): string = result = getPlainDocstring(n.sons[i]) if result.len > 0: return - -proc findDocComment(n: PNode): PNode = - if n == nil: return nil - if not isNil(n.comment) and startsWith(n.comment, "##"): return n - for i in countup(0, safeLen(n)-1): - result = findDocComment(n.sons[i]) - if result != nil: return - -proc extractDocComment*(s: PSym, d: PDoc = nil): string = - let n = findDocComment(s.ast) - result = "" - if not n.isNil: - if not d.isNil: - var dummyHasToc: bool - renderRstToOut(d[], parseRst(n.comment, toFilename(n.info), - toLinenumber(n.info), toColumn(n.info), - dummyHasToc, d.options + {roSkipPounds}), - result) - else: - result = n.comment.substr(2).replace("\n##", "\n").strip +when false: + proc findDocComment(n: PNode): PNode = + if n == nil: return nil + if not isNil(n.comment) and startsWith(n.comment, "##"): return n + for i in countup(0, safeLen(n)-1): + result = findDocComment(n.sons[i]) + if result != nil: return + + proc extractDocComment*(s: PSym, d: PDoc = nil): string = + let n = findDocComment(s.ast) + result = "" + if not n.isNil: + if not d.isNil: + var dummyHasToc: bool + renderRstToOut(d[], parseRst(n.comment, toFilename(n.info), + toLinenumber(n.info), toColumn(n.info), + dummyHasToc, d.options + {roSkipPounds}), + result) + else: + result = n.comment.substr(2).replace("\n##", "\n").strip proc isVisible(n: PNode): bool = result = false diff --git a/compiler/suggest.nim b/compiler/suggest.nim index f3c03d680..66876b9b5 100644 --- a/compiler/suggest.nim +++ b/compiler/suggest.nim @@ -41,6 +41,20 @@ var template origModuleName(m: PSym): string = m.name.s +proc findDocComment(n: PNode): PNode = + if n == nil: return nil + if not isNil(n.comment): return n + for i in countup(0, safeLen(n)-1): + result = findDocComment(n.sons[i]) + if result != nil: return + +proc extractDocComment(s: PSym): string = + let n = findDocComment(s.ast) + if not n.isNil: + result = n.comment.replace("\n##", "\n").strip + else: + result = "" + proc symToSuggest(s: PSym, isLocal: bool, section: string, li: TLineInfo; quality: range[0..100]): Suggest = result.section = parseIdeCmd(section) diff --git a/tools/nimsuggest/tests/tdef1.nim b/tools/nimsuggest/tests/tdef1.nim index 960ffad1c..2cd040ea1 100644 --- a/tools/nimsuggest/tests/tdef1.nim +++ b/tools/nimsuggest/tests/tdef1.nim @@ -1,12 +1,12 @@ discard """ $nimsuggest --tester $file >def $1 -def;;skProc;;tdef1.hello;;proc ();;$file;;9;;5;;"";;100 +def;;skProc;;tdef1.hello;;proc (): string{.noSideEffect, gcsafe, locks: 0.};;$file;;9;;5;;"Return hello";;100 >def $1 -def;;skProc;;tdef1.hello;;proc ();;$file;;9;;5;;"";;100 +def;;skProc;;tdef1.hello;;proc (): string{.noSideEffect, gcsafe, locks: 0.};;$file;;9;;5;;"Return hello";;100 """ -proc hello() string = +proc hello(): string = ## Return hello "Hello" diff --git a/tools/nimsuggest/tests/tstrutils.nim b/tools/nimsuggest/tests/tstrutils.nim index f5cda9505..34da8cb53 100644 --- a/tools/nimsuggest/tests/tstrutils.nim +++ b/tools/nimsuggest/tests/tstrutils.nim @@ -1,7 +1,7 @@ discard """ $nimsuggest --tester lib/pure/strutils.nim >def lib/pure/strutils.nim:2300:6 -def;;skTemplate;;system.doAssert;;proc (cond: bool, msg: string): typed;;*/lib/system.nim;;*;;9;;"";;100 +def;;skTemplate;;system.doAssert;;proc (cond: bool, msg: string): typed;;*/lib/system.nim;;*;;9;;"same as `assert` but is always turned on and not affected by the\x0A``--assertions`` command line switch.";;100 """ # Line 2300 in strutils.nim is doAssert and this is unlikely to change |