diff options
author | Lolo Iccl <oxisccl@gmail.com> | 2019-04-27 20:22:02 +0900 |
---|---|---|
committer | cooldome <cdome@bk.ru> | 2019-04-27 12:22:02 +0100 |
commit | 69755542f48618939b3b43f63dbd59b92c518c61 (patch) | |
tree | 6fd83ad177282abce6189e50029d8ab8d6011595 /tests/macros | |
parent | 46ce79723123d3706b124f736cecf6bd5d2bac06 (diff) | |
download | Nim-69755542f48618939b3b43f63dbd59b92c518c61.tar.gz |
add progmas to params of macros.newProc (#11025)
Merging
Diffstat (limited to 'tests/macros')
-rw-r--r-- | tests/macros/tnewproc.nim | 51 |
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 |