@@ -20,7 +20,6 @@ module Ide.Plugin.Hlint
20
20
import Refact.Apply
21
21
import Control.Arrow ((&&&) )
22
22
import Control.DeepSeq
23
- import Control.Exception
24
23
import Control.Lens ((^.) )
25
24
import Control.Monad
26
25
import Control.Monad.IO.Class
@@ -38,18 +37,21 @@ import Development.IDE.Core.Rules (defineNoFile)
38
37
import Development.IDE.Core.Shake (getDiagnostics )
39
38
40
39
#ifdef HLINT_ON_GHC_LIB
40
+ import Control.Exception
41
41
import Data.List (nub )
42
- import "ghc-lib" GHC hiding (DynFlags (.. ))
42
+ import "ghc-lib" GHC hiding (DynFlags (.. ), ModSummary )
43
43
import "ghc-lib-parser" GHC.LanguageExtensions (Extension )
44
- import "ghc" GHC as RealGHC (DynFlags (.. ))
44
+ import "ghc" GHC as RealGHC (DynFlags (.. ), ModSummary )
45
45
import "ghc" HscTypes as RealGHC.HscTypes (hsc_dflags )
46
46
import qualified "ghc" EnumSet as EnumSet
47
47
import Language.Haskell.GhclibParserEx.GHC.Driver.Session as GhclibParserEx (readExtension )
48
+ import System.FilePath (takeFileName )
49
+ import System.IO (hPutStr , noNewlineTranslation , hSetNewlineMode , utf8 , hSetEncoding , IOMode (WriteMode ), withFile , hClose )
50
+ import System.IO.Temp
48
51
#else
49
52
import Development.IDE.GHC.Compat hiding (DynFlags (.. ))
50
- import HscTypes (hsc_dflags )
51
53
import Language.Haskell.GHC.ExactPrint.Parsers (postParseTransform )
52
- import Language.Haskell.GHC.ExactPrint.Delta (normalLayout )
54
+ import Language.Haskell.GHC.ExactPrint.Delta (rigidLayout )
53
55
#endif
54
56
55
57
import Ide.Logger
@@ -59,12 +61,12 @@ import Ide.Plugin.Config
59
61
import Ide.PluginUtils
60
62
import Language.Haskell.HLint as Hlint
61
63
import Language.Haskell.LSP.Core
64
+ ( LspFuncs (withIndefiniteProgress ),
65
+ ProgressCancellable (Cancellable ) )
62
66
import Language.Haskell.LSP.Types
63
67
import qualified Language.Haskell.LSP.Types as LSP
64
68
import qualified Language.Haskell.LSP.Types.Lens as LSP
65
- import System.FilePath (takeFileName )
66
- import System.IO (hPutStr , noNewlineTranslation , hSetNewlineMode , utf8 , hSetEncoding , IOMode (WriteMode ), withFile , hClose )
67
- import System.IO.Temp
69
+
68
70
import Text.Regex.TDFA.Text ()
69
71
import GHC.Generics (Generic )
70
72
@@ -207,12 +209,15 @@ getIdeas nfp = do
207
209
208
210
getExtensions :: ParseFlags -> NormalizedFilePath -> Action [Extension ]
209
211
getExtensions pflags nfp = do
210
- hsc <- hscEnv <$> use_ GhcSession nfp
211
- let dflags = hsc_dflags hsc
212
+ dflags <- getFlags
212
213
let hscExts = EnumSet. toList (extensionFlags dflags)
213
214
let hscExts' = mapMaybe (GhclibParserEx. readExtension . show ) hscExts
214
215
let hlintExts = nub $ enabledExtensions pflags ++ hscExts'
215
216
return hlintExts
217
+ where getFlags :: Action DynFlags
218
+ getFlags = do
219
+ (modsum, _) <- use_ GetModSummary nfp
220
+ return $ _ms_hspp_opts modsum
216
221
#endif
217
222
218
223
-- ---------------------------------------------------------------------
@@ -394,8 +399,8 @@ applyHint ide nfp mhint =
394
399
Just pm -> do
395
400
let anns = pm_annotations pm
396
401
let modu = pm_parsed_source pm
397
- hsc <- liftIO $ runAction' $ hscEnv <$> use_ GhcSession nfp
398
- let dflags = hsc_dflags hsc
402
+ (modsum, _) <- liftIO $ runAction' $ use_ GetModSummary nfp
403
+ let dflags = ms_hspp_opts modsum
399
404
(anns', modu') <-
400
405
ExceptT $ return $ postParseTransform (Right (anns, [] , dflags, modu)) normalLayout
401
406
liftIO (Right <$> applyRefactorings' Nothing commands anns' modu')
0 commit comments