Make warnings for TH splices opt-in
In #17270 (closed) we have the pattern-match checker emit incorrect warnings. The
reason for that behavior is ultimately an inconsistency in whether we
treat TH splices as written by the user (FromSource :: Origin
) or as
generated code (Generated
). This was first reported in #14838.
The current solution is to TH splices as Generated
by default and only
treat them as FromSource
when the user requests so
(-fenable-th-splice-warnings). There are multiple reasons for opt-in
rather than opt-out:
- It's not clear that the user that compiles a splice is the author of the code that produces the warning. Think of the situation where she just splices in code from a third-party library that produces incomplete pattern matches. In this scenario, the user isn't even able to fix that warning.
- Gathering information for producing the warnings (pattern-match check warnings in particular) is costly. There's no point in doing so if the user is not interested in those warnings.
Fixes #17270 (closed), but not #14838, because the proper solution needs a GHC proposal extending the TH AST syntax.