1
- {-# LANGUAGE CPP #-}
1
+ {-# LANGUAGE CPP #-}
2
2
{-# LANGUAGE LambdaCase #-}
3
3
{-# LANGUAGE ViewPatterns #-}
4
4
-- | An HLS plugin to provide code actions to change type signatures
@@ -9,53 +9,49 @@ module Ide.Plugin.ChangeTypeSignature (descriptor
9
9
) where
10
10
11
11
import Control.Lens
12
- import Control.Monad (guard )
13
- import Control.Monad.IO.Class (MonadIO )
14
- import Control.Monad.Trans.Class (MonadTrans (lift ))
15
- import Control.Monad.Trans.Except (ExceptT (.. ))
16
- import Control.Monad.Trans.Maybe (MaybeT (.. ), hoistMaybe )
17
- import Data.Foldable (asum )
18
- import qualified Data.Map as Map
19
- import Data.Maybe (catMaybes )
20
- import Data.Text (Text )
21
- import qualified Data.Text as T
22
- import Development.IDE (realSrcSpanToRange ,
23
- IdeState (.. ),
24
- FileDiagnostic ,
25
- fdLspDiagnosticL ,
26
- fdStructuredMessageL ,
27
- logWith ,
28
- Pretty (.. ),
29
- Priority (.. ),
30
- Recorder ,
31
- WithPriority )
12
+ import Control.Monad (guard )
13
+ import Control.Monad.IO.Class (MonadIO )
14
+ import Control.Monad.Trans.Class (MonadTrans (lift ))
15
+ import Control.Monad.Trans.Except (ExceptT (.. ))
16
+ import Control.Monad.Trans.Maybe (MaybeT (.. ), hoistMaybe )
17
+ import Data.Foldable (asum )
18
+ import qualified Data.Map as Map
19
+ import Data.Maybe (catMaybes )
20
+ import Data.Text (Text )
21
+ import qualified Data.Text as T
22
+ import Development.IDE (FileDiagnostic ,
23
+ IdeState (.. ), Pretty (.. ),
24
+ Priority (.. ), Recorder ,
25
+ WithPriority ,
26
+ fdLspDiagnosticL ,
27
+ fdStructuredMessageL ,
28
+ logWith , realSrcSpanToRange )
32
29
import Development.IDE.Core.PluginUtils
33
- import Development.IDE.Core.RuleTypes (GetParsedModule (GetParsedModule ))
34
- import Development.IDE.GHC.Compat hiding (vcat )
35
- import Development.IDE.GHC.Util (printOutputable )
30
+ import Development.IDE.Core.RuleTypes (GetParsedModule (GetParsedModule ))
31
+ import Development.IDE.GHC.Compat hiding (vcat )
32
+ import Development.IDE.GHC.Compat.Error (_TcRnMessage ,
33
+ msgEnvelopeErrorL )
34
+ import Development.IDE.GHC.Util (printOutputable )
36
35
import Development.IDE.Types.Diagnostics (_SomeStructuredMessage )
37
- import Development.IDE.GHC.Compat.Error (msgEnvelopeErrorL , _TcRnMessage )
38
- import Generics.SYB (extQ , something )
39
- import GHC.Tc.Errors.Types (TcSolverReportMsg (.. ),
40
- TcRnMessage (.. ),
41
- TcRnMessage (.. ),
42
- SolverReportWithCtxt (.. ),
43
- TcRnMessageDetailed (.. ),
44
- MismatchMsg (.. ),
45
- ErrInfo (.. ))
46
- import qualified Ide.Logger as Logger
47
- import Ide.Plugin.Error (PluginError ,
48
- getNormalizedFilePathE )
49
- import Ide.Types (PluginDescriptor (.. ),
50
- PluginId (PluginId ),
51
- PluginMethodHandler ,
52
- defaultPluginDescriptor ,
53
- mkPluginHandler ,
54
- HandlerM ,
55
- Config )
36
+ import Generics.SYB (extQ , something )
37
+ import GHC.Tc.Errors.Types (ErrInfo (.. ),
38
+ MismatchMsg (.. ),
39
+ SolverReportWithCtxt (.. ),
40
+ TcRnMessage (.. ),
41
+ TcRnMessageDetailed (.. ),
42
+ TcSolverReportMsg (.. ))
43
+ import qualified Ide.Logger as Logger
44
+ import Ide.Plugin.Error (PluginError ,
45
+ getNormalizedFilePathE )
46
+ import Ide.Types (Config , HandlerM ,
47
+ PluginDescriptor (.. ),
48
+ PluginId (PluginId ),
49
+ PluginMethodHandler ,
50
+ defaultPluginDescriptor ,
51
+ mkPluginHandler )
56
52
import Language.LSP.Protocol.Message
57
53
import Language.LSP.Protocol.Types
58
- import Text.Regex.TDFA ((=~) )
54
+ import Text.Regex.TDFA ((=~) )
59
55
60
56
data Log
61
57
= LogErrInfoCtxt ErrInfo
@@ -169,7 +165,7 @@ findSolverReport :: TcRnMessage -> Maybe (TcSolverReportMsg, Maybe ErrInfo)
169
165
findSolverReport (TcRnMessageWithInfo _ (TcRnMessageDetailed errInfo msg)) =
170
166
case findSolverReport msg of
171
167
Just (mismatch, _) -> Just (mismatch, Just errInfo)
172
- _ -> Nothing
168
+ _ -> Nothing
173
169
#if MIN_VERSION_ghc(9,10,0)
174
170
findSolverReport (TcRnSolverReport (SolverReportWithCtxt _ mismatch) _) =
175
171
Just (mismatch, Nothing )
@@ -181,9 +177,9 @@ findSolverReport _ = Nothing
181
177
182
178
-- TODO: Make this a prism?
183
179
findMismatchMessage :: TcSolverReportMsg -> Maybe MismatchMsg
184
- findMismatchMessage (Mismatch m _ _ _) = Just m
180
+ findMismatchMessage (Mismatch m _ _ _) = Just m
185
181
findMismatchMessage (CannotUnifyVariable m _) = Just m
186
- findMismatchMessage _ = Nothing
182
+ findMismatchMessage _ = Nothing
187
183
188
184
-- TODO: Make this a prism?
189
185
findTypeEqMismatch :: MismatchMsg -> Maybe (Type , Type )
0 commit comments