Currently, javac will report diagnostics, either in the default manner or via a DiagnosticListener, even if those errors are effectively transient errors that will go away on subsequent processing rounds.
javac should buffer and defer such diagnostics until it can be determined whether they should be suppressed or not.
From experience with apt, various others requests have come in for improved error handling of various sorts:
5052910 need option to turn javac errors into apt errors
Fail-fast if any error compilation error is found.
6432333 APT fails to gracefully handle errors
Request to fail-fast or return a more useful annotation type for a malformed annotation.