Given this:
template test(k: untyped) =
when compiles(k):
echo "it compiled"
k = "New England"
else:
echo "not compiled"
var k = "New England"
proc main() =
test(pagekey)
var pagekey = "England"
main()
echo pagekey
I was expecting to echo "it compiled" (pagekey is a global variable) and to echo "New England". Instead it echos "not compiled" and "England".
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