first steps to make templates hygienic

This commit is contained in:
Araq 2012-08-20 01:13:13 +02:00
commit 5e15dec175
23 changed files with 486 additions and 187 deletions

View file

@ -54,9 +54,13 @@ proc suggestField(c: PContext, s: PSym, outputs: var int) =
OutWriteln(SymToStr(s, isLocal=true, sectionSuggest))
inc outputs
template wholeSymTab(cond, section: expr) {.immediate.} =
for i in countdown(c.tab.tos-1, 0):
for it in items(c.tab.stack[i]):
when not defined(nimhygiene):
{.pragma: inject.}
template wholeSymTab(cond, section: expr) {.immediate.} =
for i in countdown(c.tab.tos-1, 0):
for item in items(c.tab.stack[i]):
let it {.inject.} = item
if cond:
OutWriteln(SymToStr(it, isLocal = i > ModuleTablePos, section))
inc outputs