Used for emitting structured error messages and other diagnostic
information.
Signifies that the compiler died with an explicit call to .bug
or .span_bug
rather than a failed assertion, etc.
Used as a return value to signify a fatal error occurred. (It is also
used as the argument to panic at the moment, but that will eventually
not be true.)
A handler deals with errors; certain errors
(fatal, bug, unimpl) may cause immediate exit,
others log errors for later reporting.
For example a note attached to an error.
See the docs on CodeSuggestion::substitutions