There's nothing wrong if users independently choose to use code generation. However when a programming language starts to rely on it, it becomes a major problem.
We've been here before with the C preprocessor. There's nothing wrong with having a preprocessor, but in C it is necessary to use the preprocessor and that causes a lot of problems, like making it especially difficult to write tools.