summary refs log tree commit diff stats
path: root/tests/macros/tnewproc.nim
diff options
context:
space:
mode:
authorjrfondren <41455523+jrfondren@users.noreply.github.com>2019-05-03 13:03:45 -0500
committerGitHub <noreply@github.com>2019-05-03 13:03:45 -0500
commit8cadeb960597a47a09100bdda05672f177d158d2 (patch)
treeafe59c7bc9f5502801754e0f7fead84552a3d4e6 /tests/macros/tnewproc.nim
parent6dfde0e931176405491987e14969f68d81957730 (diff)
parent515ab81477c1c3e4811c4fbf43a3ff81b87be970 (diff)
downloadNim-8cadeb960597a47a09100bdda05672f177d158d2.tar.gz
Merge branch 'devel' into expand-amb-identifier-output
Diffstat (limited to 'tests/macros/tnewproc.nim')
-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