summary refs log tree commit diff stats
path: root/tests/macros
diff options
context:
space:
mode:
authorLolo Iccl <oxisccl@gmail.com>2019-04-27 20:22:02 +0900
committercooldome <cdome@bk.ru>2019-04-27 12:22:02 +0100
commit69755542f48618939b3b43f63dbd59b92c518c61 (patch)
tree6fd83ad177282abce6189e50029d8ab8d6011595 /tests/macros
parent46ce79723123d3706b124f736cecf6bd5d2bac06 (diff)
downloadNim-69755542f48618939b3b43f63dbd59b92c518c61.tar.gz
add progmas to params of macros.newProc (#11025)
Merging
Diffstat (limited to 'tests/macros')
-rw-r--r--tests/macros/tnewproc.nim51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/macros/tnewproc.nim b/tests/macros/tnewproc.nim
new file mode 100644
index 000000000..a5bfd6dca
--- /dev/null
+++ b/tests/macros/tnewproc.nim
@@ -0,0 +1,51 @@
+import macros
+
+macro test(a: untyped): untyped =
+  # proc hello*(x: int = 3, y: float32): int {.inline.} = discard
+  let
+    nameNode = nnkPostfix.newTree(
+      newIdentNode("*"),
+      newIdentNode("hello")
+    )
+    params = @[
+      newIdentNode("int"),
+      nnkIdentDefs.newTree(
+        newIdentNode("x"),
+        newIdentNode("int"),
+        newLit(3)
+      ),
+      nnkIdentDefs.newTree(
+        newIdentNode("y"),
+        newIdentNode("float32"),
+        newEmptyNode()
+      )
+    ]
+    paramsNode = nnkFormalParams.newTree(params)
+    pragmasNode = nnkPragma.newTree(
+      newIdentNode("inline")
+    )
+    bodyNode = nnkStmtList.newTree(
+      nnkDiscardStmt.newTree(
+        newEmptyNode()
+      )
+    )
+
+  var
+    expected = nnkProcDef.newTree(
+      nameNode,
+      newEmptyNode(),
+      newEmptyNode(),
+      paramsNode,
+      pragmasNode,
+      newEmptyNode(),
+      bodyNode
+    )
+
+  doAssert expected == newProc(name=nameNode, params=params,
+                                    body = bodyNode, pragmas=pragmasNode)
+  expected.pragma = newEmptyNode()
+  doAssert expected == newProc(name=nameNode, params=params,
+                                    body = bodyNode)
+
+test:
+  42