summary refs log tree commit diff stats
path: root/lib/core/refs.nim
diff options
context:
space:
mode:
authorZahary Karadjov <zahary@gmail.com>2018-04-18 19:40:08 +0300
committerAndreas Rumpf <rumpf_a@web.de>2018-05-07 09:37:49 +0200
commitbdcb72959729a5c4b195f9bf6b2ac8783c27f38e (patch)
treeb0ba8988e45410d1e869b7af35e30bfe57d236f3 /lib/core/refs.nim
parent7897026e575a4abd44583cd453b8d36cac96327e (diff)
downloadNim-bdcb72959729a5c4b195f9bf6b2ac8783c27f38e.tar.gz
Better support for treating templates and macros as symbols.
This allows you to pass a template or a macro to another macro
which can then inspect the implementation of the former template/macro
using `getImpl`.

Since templates can be freely redefined, this allows you to treat
their symbols as compile-time variables that have lexical scope.
A motivating PoC example for a logging library taking advantage of
this will be provided in the next commit.

Implementation details:

* The name of a template or a macro will be consider a symbol if
  the template/macro requires parameters

* For parameterless templates/macros, you can use `bindSym`, which
  was extended to also work outside of compile-time procs.
Diffstat (limited to 'lib/core/refs.nim')
0 files changed, 0 insertions, 0 deletions