It's easy to write hygienic macros in Scala by using `reify` and `eval`. But [it's not always possible](https://groups.google.com/d/msg/scala-user/AQXoIA-rKtU/uRy5-rkwlBgJ) to use `reify` and `eval`.

So, if one can't use them, what are the rules that will ensure that a macro is hygienic? And is there any way to test a macro to ensure that no bad hygiene has slipped through the cracks?

upd. In later milestones of 2.10.0, `Expr.eval` got renamed to `Expr.splice`.