From ad71fb41a3367ef2661b0aacb86f792e0b7192b5 Mon Sep 17 00:00:00 2001 From: Araq Date: Fri, 14 Nov 2014 01:38:17 +0100 Subject: fixes #1258 --- doc/manual/templates.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 ====== -- cgit 1.4.1-2-gfad0