summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2017-02-03 17:36:39 +0100
committerAndreas Rumpf <rumpf_a@web.de>2017-02-03 17:36:39 +0100
commit76a28d8b83190ee43826a82b0314800715e1bdbf (patch)
tree679a85587e1176357b67e1b323b5e64beb2bb94f
parent26fb6cb07357b0565f2d53c387c50f9727b9f579 (diff)
downloadNim-76a28d8b83190ee43826a82b0314800715e1bdbf.tar.gz
nimsuggest: bugfix: also output documentation comments
-rw-r--r--compiler/docgen.nim40
-rw-r--r--compiler/suggest.nim14
-rw-r--r--tools/nimsuggest/tests/tdef1.nim6
-rw-r--r--tools/nimsuggest/tests/tstrutils.nim2
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