11{-# LANGUAGE TemplateHaskell #-}
2+ {-# LANGUAGE CPP #-}
23module Development.IDE.GHC.Compat.Error (
34 -- * Top-level error types and lens for easy access
45 MsgEnvelope (.. ),
@@ -7,7 +8,7 @@ module Development.IDE.GHC.Compat.Error (
78 -- * Error messages for the typechecking and renamer phase
89 TcRnMessage (.. ),
910 TcRnMessageDetailed (.. ),
10- flatTcRnMessage ,
11+ stripTcRnMessageContext ,
1112 -- * Parsing error message
1213 PsMessage (.. ),
1314 -- * Desugaring diagnostic
@@ -52,13 +53,15 @@ _GhcDriverMessage = prism' GhcDriverMessage (\case
5253-- | Some 'TcRnMessage's are nested in other constructors for additional context.
5354-- For example, 'TcRnWithHsDocContext' and 'TcRnMessageWithInfo'.
5455-- However, in some occasions you don't need the additional context and you just want
55- -- the error message. @'flatTcRnMessage '@ recursively unwraps these constructors,
56+ -- the error message. @'stripTcRnMessageContext '@ recursively unwraps these constructors,
5657-- until there are no more constructors with additional context.
5758--
58- flatTcRnMessage :: TcRnMessage -> TcRnMessage
59- flatTcRnMessage = \ case
60- TcRnWithHsDocContext _ tcMsg -> flatTcRnMessage tcMsg
61- TcRnMessageWithInfo _ (TcRnMessageDetailed _ tcMsg) -> flatTcRnMessage tcMsg
59+ stripTcRnMessageContext :: TcRnMessage -> TcRnMessage
60+ stripTcRnMessageContext = \ case
61+ #if MIN_VERSION_ghc(9, 6, 1)
62+ TcRnWithHsDocContext _ tcMsg -> stripTcRnMessageContext tcMsg
63+ #endif
64+ TcRnMessageWithInfo _ (TcRnMessageDetailed _ tcMsg) -> stripTcRnMessageContext tcMsg
6265 msg -> msg
6366
6467msgEnvelopeErrorL :: Lens' (MsgEnvelope e ) e
0 commit comments