summaryrefslogtreecommitdiff
path: root/compiler/GHC/Tc/Solver.hs
diff options
context:
space:
mode:
authorAlfredo Di Napoli <alfredo@well-typed.com>2021-03-09 09:11:47 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-04-05 20:39:54 -0400
commit495281215ae0fdcb296b2b30c1efd3a683006f42 (patch)
tree721e48d12c7bd79f05eb03f4a4d3c7114a71f9b8 /compiler/GHC/Tc/Solver.hs
parent77772bb122410ef58ff006a1d18c6f2212216fda (diff)
downloadhaskell-495281215ae0fdcb296b2b30c1efd3a683006f42.tar.gz
Introduce SevIgnore Severity to suppress warnings
This commit introduces a new `Severity` type constructor called `SevIgnore`, which can be used to classify diagnostic messages which are not meant to be displayed to the user, for example suppressed warnings. This extra constructor allows us to get rid of a bunch of redundant checks when emitting diagnostics, typically in the form of the pattern: ``` when (optM Opt_XXX) $ addDiagnosticTc (WarningWithFlag Opt_XXX) ... ``` Fair warning! Not all checks should be omitted/skipped, as evaluating some data structures used to produce a diagnostic might still be expensive (e.g. zonking, etc). Therefore, a case-by-case analysis must be conducted when deciding if a check can be removed or not. Last but not least, we remove the unnecessary `CmdLine.WarnReason` type, which is now redundant with `DiagnosticReason`.
Diffstat (limited to 'compiler/GHC/Tc/Solver.hs')
-rw-r--r--compiler/GHC/Tc/Solver.hs3
1 files changed, 1 insertions, 2 deletions
diff --git a/compiler/GHC/Tc/Solver.hs b/compiler/GHC/Tc/Solver.hs
index b4efeaabdd..d4e9003b72 100644
--- a/compiler/GHC/Tc/Solver.hs
+++ b/compiler/GHC/Tc/Solver.hs
@@ -1344,8 +1344,7 @@ decideMonoTyVars infer_mode name_taus psigs candidates
mono_tvs = mono_tvs2 `unionVarSet` constrained_tvs
-- Warn about the monomorphism restriction
- ; warn_mono <- woptM Opt_WarnMonomorphism
- ; when (case infer_mode of { ApplyMR -> warn_mono; _ -> False}) $
+ ; when (case infer_mode of { ApplyMR -> True; _ -> False}) $
diagnosticTc (WarningWithFlag Opt_WarnMonomorphism)
(constrained_tvs `intersectsVarSet` tyCoVarsOfTypes taus)
mr_msg