This ends up in some discussion about what "compiling" actually means. Is macroexpanding a part of "compiling"?
Most languages with complex type systems avoid Turing completeness by having an explicit limit for all type level expansions - at least, that is how Java and C# do it.