throw here creates a call stack with lots of compiler functions. That's great for us, not so great for developers. Plus it means the compiler will always die on the first error. And the control flow is now less predictable. 

Not that I would miss ErrorReporter all that much.