Macros may reside in a preprocessed AST, this is not a runtime error - it is a *preprocess* error. A future version of the language will be type checked and macro presence will be statically prevented before evaluation.