diff options
Diffstat (limited to 'tests/macros/tmemit.nim')
-rw-r--r-- | tests/macros/tmemit.nim | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/tests/macros/tmemit.nim b/tests/macros/tmemit.nim index e5aed3172..6c9f9f935 100644 --- a/tests/macros/tmemit.nim +++ b/tests/macros/tmemit.nim @@ -1,15 +1,15 @@ discard """ - output: '''HELLO WORLD -c_func''' + output: ''' +c_func +12 +''' """ import macros, strutils -emit("echo " & '"' & "hello world".toUpper & '"') - # bug #1025 -macro foo(icname): stmt = +macro foo(icname): untyped = let ic = newStrLitNode($icname) result = quote do: proc x* = @@ -19,3 +19,20 @@ macro foo(icname): stmt = foo(c_func) x() + + +template volatileLoad[T](x: ptr T): T = + var res: T + {.emit: [res, " = (*(", type(x[]), " volatile*)", x, ");"].} + res + +template volatileStore[T](x: ptr T; y: T) = + {.emit: ["*((", type(x[]), " volatile*)(", x, ")) = ", y, ";"].} + +proc main = + var st: int + var foo: ptr int = addr st + volatileStore(foo, 12) + echo volatileLoad(foo) + +main() |