summaryrefslogtreecommitdiff
path: root/compiler/GHC.hs
diff options
context:
space:
mode:
authorAlfredo Di Napoli <alfredo@well-typed.com>2021-03-26 10:17:26 +0100
committerAlfredo Di Napoli <alfredo@well-typed.com>2021-03-29 07:58:00 +0200
commitc30af95189c5006ac5cd10839a8ea7e8098341d5 (patch)
tree8863e8d15ab33363147594dbab2d54cf7cb42a48 /compiler/GHC.hs
parent9c9e40e59214b1e358c85852218f3a67e712a748 (diff)
downloadhaskell-c30af95189c5006ac5cd10839a8ea7e8098341d5.tar.gz
Add `MessageClass`, rework `Severity` and add `DiagnosticReason`.wip/adinapoli-message-class-new-design
Other than that: * Fix T16167,json,json2,T7478,T10637 tests to reflect the introduction of the `MessageClass` type * Remove `makeIntoWarning` * Remove `warningsToMessages` * Refactor GHC.Tc.Errors 1. Refactors GHC.Tc.Errors so that we use `DiagnosticReason` for "choices" (defer types errors, holes, etc); 2. We get rid of `reportWarning` and `reportError` in favour of a general `reportDiagnostic`. * Introduce `DiagnosticReason`, `Severity` is an enum: This big commit makes `Severity` a simple enumeration, and introduces the concept of `DiagnosticReason`, which classifies the /reason/ why we are emitting a particular diagnostic. It also adds a monomorphic `DiagnosticMessage` type which is used for generic messages. * The `Severity` is computed (for now) from the reason, statically. Later improvement will add a `diagReasonSeverity` function to compute the `Severity` taking `DynFlags` into account. * Rename `logWarnings` into `logDiagnostics` * Add note and expand description of the `mkHoleError` function
Diffstat (limited to 'compiler/GHC.hs')
-rw-r--r--compiler/GHC.hs8
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/GHC.hs b/compiler/GHC.hs
index 4054ead5f2..da1f02bea5 100644
--- a/compiler/GHC.hs
+++ b/compiler/GHC.hs
@@ -308,7 +308,8 @@ import GHC.Driver.Phases ( Phase(..), isHaskellSrcFilename
import GHC.Driver.Env
import GHC.Driver.Errors
import GHC.Driver.CmdLine
-import GHC.Driver.Session hiding (WarnReason(..))
+import GHC.Driver.Session
+import qualified GHC.Driver.Session as Session
import GHC.Driver.Backend
import GHC.Driver.Config
import GHC.Driver.Main
@@ -389,6 +390,7 @@ import GHC.Types.Name.Env
import GHC.Types.Name.Ppr
import GHC.Types.TypeEnv
import GHC.Types.SourceFile
+import GHC.Types.Error ( DiagnosticMessage )
import GHC.Unit
import GHC.Unit.Env
@@ -899,7 +901,7 @@ checkNewInteractiveDynFlags logger dflags0 = do
-- the REPL. See #12356.
if xopt LangExt.StaticPointers dflags0
then do liftIO $ printOrThrowWarnings logger dflags0 $ listToBag
- [mkPlainWarnMsg interactiveSrcSpan
+ [mkPlainMsgEnvelope Session.WarningWithoutFlag interactiveSrcSpan
$ text "StaticPointers is not supported in GHCi interactive expressions."]
return $ xopt_unset dflags0 LangExt.StaticPointers
else return dflags0
@@ -1491,7 +1493,7 @@ getNameToInstancesIndex :: GhcMonad m
-- if it is visible from at least one module in the list.
-> Maybe [Module] -- ^ modules to load. If this is not specified, we load
-- modules for everything that is in scope unqualified.
- -> m (Messages DecoratedSDoc, Maybe (NameEnv ([ClsInst], [FamInst])))
+ -> m (Messages DiagnosticMessage, Maybe (NameEnv ([ClsInst], [FamInst])))
getNameToInstancesIndex visible_mods mods_to_load = do
hsc_env <- getSession
liftIO $ runTcInteractive hsc_env $