11-- Copyright (c) 2019 The DAML Authors. All rights reserved.
22-- SPDX-License-Identifier: Apache-2.0
33
4- {-# LANGUAGE CPP #-}
5- {-# LANGUAGE GADTs #-}
4+ {-# LANGUAGE CPP #-}
5+ {-# LANGUAGE GADTs #-}
66
77-- | Based on https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/API.
88-- Given a list of paths to find libraries, and a file to compile, produce a list of 'CoreModule' values.
@@ -38,17 +38,14 @@ module Development.IDE.Core.Compile
3838 , shareUsages
3939 ) where
4040
41- import Prelude hiding (mod )
42- import Control.Monad.IO.Class
4341import Control.Concurrent.Extra
4442import Control.Concurrent.STM.Stats hiding (orElse )
45- import Control.DeepSeq (NFData (.. ), force ,
46- rnf )
43+ import Control.DeepSeq (NFData (.. ), force , rnf )
4744import Control.Exception (evaluate )
4845import Control.Exception.Safe
49- import Control.Lens hiding (List , (<.>) , pre )
50- import Control.Monad.Except
46+ import Control.Lens hiding (List , pre , (<.>) )
5147import Control.Monad.Extra
48+ import Control.Monad.IO.Class
5249import Control.Monad.Trans.Except
5350import qualified Control.Monad.Trans.State.Strict as S
5451import Data.Aeson (toJSON )
@@ -65,8 +62,8 @@ import Data.IntMap (IntMap)
6562import Data.IORef
6663import Data.List.Extra
6764import qualified Data.Map.Strict as Map
68- import Data.Proxy (Proxy (Proxy ))
6965import Data.Maybe
66+ import Data.Proxy (Proxy (Proxy ))
7067import qualified Data.Text as T
7168import Data.Time (UTCTime (.. ))
7269import Data.Tuple.Extra (dupe )
@@ -97,33 +94,26 @@ import GHC (ForeignHValue,
9794import qualified GHC.LanguageExtensions as LangExt
9895import GHC.Serialized
9996import HieDb hiding (withHieDb )
97+ import qualified Language.LSP.Protocol.Message as LSP
98+ import Language.LSP.Protocol.Types (DiagnosticTag (.. ))
99+ import qualified Language.LSP.Protocol.Types as LSP
100100import qualified Language.LSP.Server as LSP
101- import Language.LSP.Protocol.Types (DiagnosticTag (.. ))
102- import qualified Language.LSP.Protocol.Types as LSP
103- import qualified Language.LSP.Protocol.Message as LSP
101+ import Prelude hiding (mod )
104102import System.Directory
105103import System.FilePath
106104import System.IO.Extra (fixIO , newTempFileWithin )
107105
108- -- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
109-
110- import GHC.Tc.Gen.Splice
111-
112-
113-
114106import qualified GHC as G
115-
116- #if !MIN_VERSION_ghc(9,3,0)
117- import GHC (ModuleGraph )
118- #endif
119-
107+ import GHC.Tc.Gen.Splice
120108import GHC.Types.ForeignStubs
121109import GHC.Types.HpcInfo
122110import GHC.Types.TypeEnv
123111
112+ -- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
113+
124114#if !MIN_VERSION_ghc(9,3,0)
125115import Data.Map (Map )
126- import GHC ( GhcException ( .. ) )
116+ import GHC.Unit.Module.Graph ( ModuleGraph )
127117import Unsafe.Coerce
128118#endif
129119
@@ -132,8 +122,8 @@ import qualified Data.Set as Set
132122#endif
133123
134124#if MIN_VERSION_ghc(9,5,0)
135- import GHC.Driver.Config.CoreToStg.Prep
136125import GHC.Core.Lint.Interactive
126+ import GHC.Driver.Config.CoreToStg.Prep
137127#endif
138128
139129#if MIN_VERSION_ghc(9,7,0)
@@ -482,11 +472,7 @@ mkHiFileResultNoCompile session tcm = do
482472 tcGblEnv = tmrTypechecked tcm
483473 details <- makeSimpleDetails hsc_env_tmp tcGblEnv
484474 sf <- finalSafeMode (ms_hspp_opts ms) tcGblEnv
485- iface' <- mkIfaceTc hsc_env_tmp sf details ms
486- #if MIN_VERSION_ghc(9,5,0)
487- Nothing
488- #endif
489- tcGblEnv
475+ iface' <- mkIfaceTc hsc_env_tmp sf details ms Nothing tcGblEnv
490476 let iface = iface' { mi_globals = Nothing , mi_usages = filterUsages (mi_usages iface') } -- See Note [Clearing mi_globals after generating an iface]
491477 pure $! mkHiFileResult ms iface details (tmrRuntimeModules tcm) Nothing
492478
@@ -1266,7 +1252,7 @@ parseHeader dflags filename contents = do
12661252 PFailedWithErrorMessages msgs ->
12671253 throwE $ diagFromErrMsgs sourceParser dflags $ msgs dflags
12681254 POk pst rdr_module -> do
1269- let (warns, errs) = renderMessages $ getPsMessages pst dflags
1255+ let (warns, errs) = renderMessages $ getPsMessages pst
12701256
12711257 -- Just because we got a `POk`, it doesn't mean there
12721258 -- weren't errors! To clarify, the GHC parser
@@ -1301,7 +1287,7 @@ parseFileContents env customPreprocessor filename ms = do
13011287 POk pst rdr_module ->
13021288 let
13031289 hpm_annotations = mkApiAnns pst
1304- psMessages = getPsMessages pst dflags
1290+ psMessages = getPsMessages pst
13051291 in
13061292 do
13071293 let IdePreprocessedSource preproc_warns errs parsed = customPreprocessor rdr_module
@@ -1310,7 +1296,7 @@ parseFileContents env customPreprocessor filename ms = do
13101296 throwE $ diagFromStrings sourceParser DiagnosticSeverity_Error errs
13111297
13121298 let preproc_warnings = diagFromStrings sourceParser DiagnosticSeverity_Warning preproc_warns
1313- (parsed', msgs) <- liftIO $ applyPluginsParsedResultAction env dflags ms hpm_annotations parsed psMessages
1299+ (parsed', msgs) <- liftIO $ applyPluginsParsedResultAction env ms hpm_annotations parsed psMessages
13141300 let (warns, errors) = renderMessages msgs
13151301
13161302 -- Just because we got a `POk`, it doesn't mean there
0 commit comments