summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorFredrik Høisæther Rasch <fredrik.rasch@gmail.com>2017-05-31 13:08:08 +0200
committerAndreas Rumpf <rumpf_a@web.de>2017-05-31 13:08:08 +0200
commit6652ae97414f6806fde57ef252e548795f469262 (patch)
tree54508f1522154470354d62550fb6ae443df1a0a8
parenteb83ec2685f5bbd0d65051b1f00502f05a367172 (diff)
downloadNim-6652ae97414f6806fde57ef252e548795f469262.tar.gz
Creating and setting comment nodes in macros (#5850)
* strVal assingnable comment statement ast nodes
* Set comment instead of strVal for comment nodes
* Added test code for creating and setting comment nodes
* Modified the AST spec documentation for documentation comments
-rw-r--r--compiler/vm.nim2
-rw-r--r--doc/astspec.txt4
-rw-r--r--tests/vm/tnimnode.nim8
3 files changed, 12 insertions, 2 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim
index e201e98dc..bc5873ff5 100644
--- a/compiler/vm.nim
+++ b/compiler/vm.nim
@@ -1406,6 +1406,8 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
       if dest.kind in {nkStrLit..nkTripleStrLit} and
          regs[rb].kind in {rkNode}:
         dest.strVal = regs[rb].node.strVal
+      elif dest.kind == nkCommentStmt:
+        dest.comment = regs[rb].node.strVal
       else:
         stackTrace(c, tos, pc, errFieldXNotFound, "strVal")
     of opcNNewNimNode:
diff --git a/doc/astspec.txt b/doc/astspec.txt
index f430677af..57f6b9d8c 100644
--- a/doc/astspec.txt
+++ b/doc/astspec.txt
@@ -461,8 +461,8 @@ Documentation Comments
 ----------------------
 
 Double-hash (``##``) comments in the code actually have their own format,
-but the comments do not yet show up in the AST, which will only show that
-a comment exists, not what it contains. Single-hash (``#``) comments are ignored.
+using ``strVal`` to get and set the comment text. Single-hash (``#``) 
+comments are ignored.
 
 Concrete syntax:
 
diff --git a/tests/vm/tnimnode.nim b/tests/vm/tnimnode.nim
index cca03cd62..e5a41e3c2 100644
--- a/tests/vm/tnimnode.nim
+++ b/tests/vm/tnimnode.nim
@@ -72,3 +72,11 @@ static:
   echo "OK"
   
 
+static:
+  echo "testing creation of comment node"
+  var docComment: NimNode = newNimNode(nnkCommentStmt)
+  docComment.strVal = "This is a doc comment"
+
+  assertEq repr(docComment), "## This is a doc comment"
+
+  echo "OK"