summary refs log tree commit diff stats
path: root/doc/manual.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manual.rst')
-rw-r--r--doc/manual.rst22
1 files changed, 21 insertions, 1 deletions
diff --git a/doc/manual.rst b/doc/manual.rst
index 1b65ae9ee..41ed49715 100644
--- a/doc/manual.rst
+++ b/doc/manual.rst
@@ -5835,6 +5835,27 @@ type `system.ForLoopStmt` can rewrite the entirety of a `for` loop:
 
   import std/macros
 
+  macro example(loop: ForLoopStmt) =
+    result = newTree(nnkForStmt)    # Create a new For loop.
+    result.add loop[^3]             # This is "item".
+    result.add loop[^2][^1]         # This is "[1, 2, 3]".
+    result.add newCall(bindSym"echo", loop[0])
+
+  for item in example([1, 2, 3]): discard
+
+Expands to:
+
+.. code-block:: nim
+  for item in items([1, 2, 3]):
+    echo item
+
+Another example:
+
+.. code-block:: nim
+    :test: "nim c $1"
+
+  import std/macros
+
   macro enumerate(x: ForLoopStmt): untyped =
     expectKind x, nnkForStmt
     # check if the starting count is specified:
@@ -5866,7 +5887,6 @@ type `system.ForLoopStmt` can rewrite the entirety of a `for` loop:
     echo a, " ", b
 
 
-
 Special Types
 =============