mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 18:02:05 +00:00
52 lines
1.2 KiB
Nim
52 lines
1.2 KiB
Nim
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
|