mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 17:34:43 +00:00
30 lines
522 B
Nim
30 lines
522 B
Nim
discard """
|
|
output: '''fish
|
|
fish'''
|
|
"""
|
|
|
|
import macros
|
|
|
|
block:
|
|
template init(initHook: proc(s: string)) =
|
|
proc dostuff =
|
|
var s = "fish"
|
|
initHook(s)
|
|
dostuff()
|
|
|
|
init do(s: string):
|
|
echo s
|
|
|
|
block:
|
|
macro init(initHook: proc(s: string)) =
|
|
result = newStmtList(
|
|
newProc(name = ident("dostuff"), body = newStmtList(
|
|
newVarStmt(ident("s"), newStrLitNode("fish")),
|
|
newCall(initHook, ident("s"))
|
|
)),
|
|
newCall("dostuff")
|
|
)
|
|
|
|
init proc(s: string) =
|
|
echo s
|