parent
f9c6cec90c
commit
fa332b7298
4 changed files with 102 additions and 21 deletions
27
tests/accept/run/tmacro2.nim
Normal file
27
tests/accept/run/tmacro2.nim
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
discard """
|
||||
output: "ta-da Your value sir: 'HE!!!!o Wor!!d'"
|
||||
"""
|
||||
|
||||
import macros, strutils
|
||||
|
||||
proc testBlock(): string {.compileTime.} =
|
||||
block myBlock:
|
||||
while true:
|
||||
echo "inner block"
|
||||
break myBlock
|
||||
echo "outer block"
|
||||
result = "ta-da"
|
||||
|
||||
macro mac(n: expr): expr =
|
||||
expectKind(n, nnkCall)
|
||||
expectLen(n, 2)
|
||||
expectKind(n[1], nnkStrLit)
|
||||
var s: string = n[1].strVal
|
||||
s = s.replace("l", "!!")
|
||||
result = newStrLitNode("Your value sir: '$#'" % [s])
|
||||
|
||||
const s = testBlock()
|
||||
const t = mac("HEllo World")
|
||||
echo s, " ", t
|
||||
|
||||
|
||||
31
tests/accept/run/tmacro3.nim
Normal file
31
tests/accept/run/tmacro3.nim
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
discard """
|
||||
output: ""
|
||||
"""
|
||||
|
||||
import macros
|
||||
|
||||
type
|
||||
TA = tuple[a: int]
|
||||
PA = ref TA
|
||||
|
||||
macro test*(a: stmt): stmt =
|
||||
var val: PA
|
||||
new(val)
|
||||
val.a = 4
|
||||
|
||||
test:
|
||||
"hi"
|
||||
|
||||
macro test2*(a: stmt): stmt =
|
||||
proc testproc(recurse: int) =
|
||||
echo "Thats weird"
|
||||
var o : PNimrodNode = nil
|
||||
echo " no its not!"
|
||||
o = newNimNode(nnkNone)
|
||||
if recurse > 0:
|
||||
testproc(recurse - 1)
|
||||
testproc(5)
|
||||
|
||||
test2:
|
||||
"hi"
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue