fix: Fix introductory macro examples (#19706)
Co-authored-by: adigitoleo <adigitoleo@dissimulo.com>
This commit is contained in:
parent
ded8b0e541
commit
152dab0983
1 changed files with 17 additions and 3 deletions
20
doc/tut3.rst
20
doc/tut3.rst
|
|
@ -188,21 +188,35 @@ Backticks are used to insert code from `NimNode` symbols into the
|
||||||
generated expression.
|
generated expression.
|
||||||
|
|
||||||
.. code-block:: nim
|
.. code-block:: nim
|
||||||
macro a(i) = quote do: let `i` = 0
|
:test: "nim c $1"
|
||||||
|
import std/macros
|
||||||
|
macro a(i) = quote do:
|
||||||
|
let `i` = 0
|
||||||
|
|
||||||
a b
|
a b
|
||||||
|
doAssert b == 0
|
||||||
|
|
||||||
A custom prefix operator can be defined whenever backticks are needed.
|
A custom prefix operator can be defined whenever backticks are needed.
|
||||||
|
|
||||||
.. code-block:: nim
|
.. code-block:: nim
|
||||||
macro a(i) = quote("@") do: assert @i == 0
|
:test: "nim c $1"
|
||||||
|
import std/macros
|
||||||
|
macro a(i) = quote("@") do:
|
||||||
|
assert @i == 0
|
||||||
|
|
||||||
let b = 0
|
let b = 0
|
||||||
a b
|
a b
|
||||||
|
|
||||||
The injected symbol needs accent quoted when it resolves to a symbol.
|
The injected symbol needs accent quoted when it resolves to a symbol.
|
||||||
|
|
||||||
.. code-block:: nim
|
.. code-block:: nim
|
||||||
macro a(i) = quote("@") do: let `@i` == 0
|
:test: "nim c $1"
|
||||||
|
import std/macros
|
||||||
|
macro a(i) = quote("@") do:
|
||||||
|
let `@i` = 0
|
||||||
|
|
||||||
a b
|
a b
|
||||||
|
doAssert b == 0
|
||||||
|
|
||||||
Make sure to inject only symbols of type `NimNode` into the generated syntax
|
Make sure to inject only symbols of type `NimNode` into the generated syntax
|
||||||
tree. You can use `newLit` to convert arbitrary values into
|
tree. You can use `newLit` to convert arbitrary values into
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue