Represents a diagnostic message with its level, message, unique identifier,
span, children, and suggestions.
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