WIP: Priorities for custom type errors
Custom type errors are often too loud; whenever they are emitted, they will suppress other error messages downstream from them. See #16906 (comment 212011) for an example of just how wrong this can go.
This MR introduces a new type family TypeErrorPriority
parameterized by an ErrorPriority
. These priorities correspond to report1 or report2 as generated by TcErrors.reportWanteds
, and allow fine-grained reporting of error messages. For example, you can now report a custom error message that is only emitted if GHC doesn't want to emit any other error messages, such as insoluble equalities, or hole bindings.
It also introduces ShowTypePrec
which is notably missing from the TypeError
machinery, but I'm happy to move this (and some other constructors for ErrorMessage
) into its own MR.