Skip to content

Commit 86d1efe

Browse files
committed
Extract dflags from ModSummary
1 parent d02380d commit 86d1efe

File tree

1 file changed

+16
-11
lines changed
  • plugins/hls-hlint-plugin/src/Ide/Plugin

1 file changed

+16
-11
lines changed

plugins/hls-hlint-plugin/src/Ide/Plugin/Hlint.hs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ module Ide.Plugin.Hlint
2020
import Refact.Apply
2121
import Control.Arrow ((&&&))
2222
import Control.DeepSeq
23-
import Control.Exception
2423
import Control.Lens ((^.))
2524
import Control.Monad
2625
import Control.Monad.IO.Class
@@ -38,16 +37,19 @@ import Development.IDE.Core.Rules (defineNoFile)
3837
import Development.IDE.Core.Shake (getDiagnostics)
3938

4039
#ifdef HLINT_ON_GHC_LIB
40+
import Control.Exception
4141
import Data.List (nub)
42-
import "ghc-lib" GHC hiding (DynFlags(..))
42+
import "ghc-lib" GHC hiding (DynFlags(..), ms_hspp_opts)
4343
import "ghc-lib-parser" GHC.LanguageExtensions (Extension)
4444
import "ghc" GHC as RealGHC (DynFlags(..))
45-
import "ghc" HscTypes as RealGHC.HscTypes (hsc_dflags)
45+
import "ghc" HscTypes as RealGHC.HscTypes (hsc_dflags, ms_hspp_opts)
4646
import qualified "ghc" EnumSet as EnumSet
4747
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
4851
#else
4952
import Development.IDE.GHC.Compat hiding (DynFlags(..))
50-
import HscTypes (hsc_dflags)
5153
import Language.Haskell.GHC.ExactPrint.Parsers (postParseTransform)
5254
import Language.Haskell.GHC.ExactPrint.Delta (normalLayout)
5355
#endif
@@ -58,12 +60,12 @@ import Ide.Plugin.Config
5860
import Ide.PluginUtils
5961
import Language.Haskell.HLint as Hlint
6062
import Language.Haskell.LSP.Core
63+
( LspFuncs(withIndefiniteProgress),
64+
ProgressCancellable(Cancellable) )
6165
import Language.Haskell.LSP.Types
6266
import qualified Language.Haskell.LSP.Types as LSP
6367
import qualified Language.Haskell.LSP.Types.Lens as LSP
64-
import System.FilePath (takeFileName)
65-
import System.IO (hPutStr, noNewlineTranslation, hSetNewlineMode, utf8, hSetEncoding, IOMode(WriteMode), withFile, hClose)
66-
import System.IO.Temp
68+
6769
import Text.Regex.TDFA.Text()
6870
import GHC.Generics (Generic)
6971

@@ -208,12 +210,15 @@ getIdeas nfp = do
208210

209211
getExtensions :: ParseFlags -> NormalizedFilePath -> Action [Extension]
210212
getExtensions pflags nfp = do
211-
hsc <- hscEnv <$> use_ GhcSession nfp
212-
let dflags = hsc_dflags hsc
213+
dflags <- getFlags
213214
let hscExts = EnumSet.toList (extensionFlags dflags)
214215
let hscExts' = mapMaybe (GhclibParserEx.readExtension . show) hscExts
215216
let hlintExts = nub $ enabledExtensions pflags ++ hscExts'
216217
return hlintExts
218+
where getFlags :: Action DynFlags
219+
getFlags = do
220+
(modsum, _) <- use_ GetModSummary nfp
221+
return $ ms_hspp_opts modsum
217222
#endif
218223

219224
-- ---------------------------------------------------------------------
@@ -395,8 +400,8 @@ applyHint ide nfp mhint =
395400
Just pm -> do
396401
let anns = pm_annotations pm
397402
let modu = pm_parsed_source pm
398-
hsc <- liftIO $ runAction' $ hscEnv <$> use_ GhcSession nfp
399-
let dflags = hsc_dflags hsc
403+
(modsum, _) <- liftIO $ runAction' $ use_ GetModSummary nfp
404+
let dflags = ms_hspp_opts modsum
400405
(anns', modu') <-
401406
ExceptT $ return $ postParseTransform (Right (anns, [], dflags, modu)) normalLayout
402407
liftIO (Right <$> applyRefactorings' Nothing commands anns' modu')

0 commit comments

Comments
 (0)