diff options
-rw-r--r-- | doc/manual/templates.txt | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/doc/manual/templates.txt b/doc/manual/templates.txt index d63f61f54..4793d68a7 100644 --- a/doc/manual/templates.txt +++ b/doc/manual/templates.txt @@ -225,6 +225,23 @@ a template. ``inject`` and ``gensym`` have no effect in ``dirty`` templates. +Limitations of the method invokation syntax +------------------------------------------- + +The expression ``x`` in ``x.f`` needs to be semantically checked (that means +symbol lookup and type checking) before it can be decided that it needs to be +rewritten to ``f(x)``. Therefore the dot syntax has some limiations when it +is used to invoke templates/macros: + +.. code-block:: nim + template declareVar(name: expr): stmt = + const name {.inject.} = 45 + + # Doesn't compile: + unknownIdentifier.declareVar + + + Macros ====== |