Compiler will no longer run forever for bad languages. If more passes are required but none can be run now, then it will throw an exception. It does not attempt to detect this at language definition time, even though that is when the mistake is made. It's simply a lot easier to detect it during compilation.