The root of this issue seems to be the call to `import-macros` at the top of cljs.core.

Under AOT compilation, the macros are imported as regular functions. This seems to be due to a weird property under AOT where attaching metadata to a var def must be done with alter-meta!, rather than by attaching metadata to the second argument of `def`.

Ambrose Bonnaire-Sergeant
added a comment - 04/Feb/14 9:02 AM The root of this issue seems to be the call to `import-macros` at the top of cljs.core.
Under AOT compilation, the macros are imported as regular functions. This seems to be due to a weird property under AOT where attaching metadata to a var def must be done with alter-meta!, rather than by attaching metadata to the second argument of `def`.
This is a telling symptom: