When `main` is compiled your global variable is not yet declared. This works: template test(k: untyped) = when compiles(k): echo "it compiled" k = "New England" else: echo "not compiled" var k = "New England" var pagekey = "England" proc main() = test(pagekey) main() echo pagekey Run
- global var not detected by compiles() stbalbach
- global var not detected by compiles() Araq
- global var not detected by compiles() stbalbach