Skip to content

Commit 3b2e5d9

Browse files
authored
Merge branch 'master' into soulomoon/formlization-of-ProgressReporting
2 parents eab6796 + 147fb4a commit 3b2e5d9

File tree

33 files changed

+137
-194
lines changed

33 files changed

+137
-194
lines changed

ghcide/session-loader/Development/IDE/Session.hs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,17 @@ import Data.Foldable (for_)
100100
import Data.HashMap.Strict (HashMap)
101101
import Data.HashSet (HashSet)
102102
import qualified Data.HashSet as Set
103+
import qualified Data.Set as OS
103104
import Database.SQLite.Simple
104105
import Development.IDE.Core.Tracing (withTrace)
105106
import Development.IDE.Core.WorkerThread (awaitRunInThread,
106107
withWorkerQueue)
108+
import qualified Development.IDE.GHC.Compat.Util as Compat
107109
import Development.IDE.Session.Diagnostics (renderCradleError)
108110
import Development.IDE.Types.Shake (WithHieDb,
109111
WithHieDbShield (..),
110112
toNoFileKey)
113+
import GHC.Data.Graph.Directed
111114
import HieDb.Create
112115
import HieDb.Types
113116
import HieDb.Utils
@@ -116,13 +119,6 @@ import qualified System.Random as Random
116119
import System.Random (RandomGen)
117120
import Text.ParserCombinators.ReadP (readP_to_S)
118121

119-
120-
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
121-
122-
import qualified Data.Set as OS
123-
import qualified Development.IDE.GHC.Compat.Util as Compat
124-
import GHC.Data.Graph.Directed
125-
126122
import GHC.Data.Bag
127123
import GHC.Driver.Env (hsc_all_home_unit_ids)
128124
import GHC.Driver.Errors.Types
@@ -832,7 +828,7 @@ checkHomeUnitsClosed' ue home_id_set
832828
where
833829
go rest this this_uis =
834830
plusUniqMap_C OS.union
835-
(addToUniqMap_C OS.union external_depends this (OS.fromList $ this_deps))
831+
(addToUniqMap_C OS.union external_depends this (OS.fromList this_deps))
836832
rest
837833
where
838834
external_depends = mapUniqMap (OS.fromList . unitDepends)
@@ -1154,7 +1150,7 @@ setOptions cfp (ComponentOptions theOpts compRoot _) dflags rootDir = do
11541150
-- This works because there won't be any dependencies on the
11551151
-- executable unit.
11561152
"main" ->
1157-
let hash = B.unpack $ B16.encode $ H.finalize $ H.updates H.init (map B.pack $ this_opts)
1153+
let hash = B.unpack $ B16.encode $ H.finalize $ H.updates H.init (map B.pack this_opts)
11581154
hashed_uid = Compat.toUnitId (Compat.stringToUnit ("main-"++hash))
11591155
in setHomeUnitId_ hashed_uid dflags'
11601156
_ -> dflags'

ghcide/src/Development/IDE/Core/Compile.hs

Lines changed: 49 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -39,71 +39,79 @@ module Development.IDE.Core.Compile
3939
) where
4040

4141
import Control.Concurrent.Extra
42-
import Control.Concurrent.STM.Stats hiding (orElse)
43-
import Control.DeepSeq (NFData (..), force, rnf)
44-
import Control.Exception (evaluate)
42+
import Control.Concurrent.STM.Stats hiding (orElse)
43+
import Control.DeepSeq (NFData (..), force,
44+
rnf)
45+
import Control.Exception (evaluate)
4546
import Control.Exception.Safe
46-
import Control.Lens hiding (List, pre, (<.>))
47+
import Control.Lens hiding (List, pre,
48+
(<.>))
4749
import Control.Monad.Extra
4850
import Control.Monad.IO.Class
4951
import Control.Monad.Trans.Except
50-
import qualified Control.Monad.Trans.State.Strict as S
51-
import Data.Aeson (toJSON)
52-
import Data.Bifunctor (first, second)
52+
import qualified Control.Monad.Trans.State.Strict as S
53+
import Data.Aeson (toJSON)
54+
import Data.Bifunctor (first, second)
5355
import Data.Binary
54-
import qualified Data.ByteString as BS
56+
import qualified Data.ByteString as BS
5557
import Data.Coerce
56-
import qualified Data.DList as DL
58+
import qualified Data.DList as DL
5759
import Data.Functor
5860
import Data.Generics.Aliases
5961
import Data.Generics.Schemes
60-
import qualified Data.HashMap.Strict as HashMap
61-
import Data.IntMap (IntMap)
62+
import qualified Data.HashMap.Strict as HashMap
63+
import Data.IntMap (IntMap)
6264
import Data.IORef
6365
import Data.List.Extra
64-
import qualified Data.Map.Strict as Map
66+
import qualified Data.Map.Strict as Map
6567
import Data.Maybe
66-
import Data.Proxy (Proxy (Proxy))
67-
import qualified Data.Text as T
68-
import Data.Time (UTCTime (..))
69-
import Data.Tuple.Extra (dupe)
68+
import Data.Proxy (Proxy (Proxy))
69+
import qualified Data.Text as T
70+
import Data.Time (UTCTime (..))
71+
import Data.Tuple.Extra (dupe)
7072
import Debug.Trace
71-
import Development.IDE.Core.FileStore (resetInterfaceStore)
73+
import Development.IDE.Core.FileStore (resetInterfaceStore)
7274
import Development.IDE.Core.Preprocessor
75+
import Development.IDE.Core.ProgressReporting (ProgressReporting (..),
76+
progressReportingOutsideState,
77+
progressUpdate)
7378
import Development.IDE.Core.RuleTypes
7479
import Development.IDE.Core.Shake
75-
import Development.IDE.Core.Tracing (withTrace)
76-
import Development.IDE.GHC.Compat hiding (assert,
77-
loadInterface, parseHeader,
78-
parseModule, tcRnModule,
79-
writeHieFile)
80-
import qualified Development.IDE.GHC.Compat as Compat
81-
import qualified Development.IDE.GHC.Compat as GHC
82-
import qualified Development.IDE.GHC.Compat.Util as Util
83-
import Development.IDE.Core.ProgressReporting (progressUpdate)
80+
import Development.IDE.Core.Tracing (withTrace)
81+
import Development.IDE.GHC.Compat hiding (assert,
82+
loadInterface,
83+
parseHeader,
84+
parseModule,
85+
tcRnModule,
86+
writeHieFile)
87+
import qualified Development.IDE.GHC.Compat as Compat
88+
import qualified Development.IDE.GHC.Compat as GHC
89+
import qualified Development.IDE.GHC.Compat.Util as Util
8490
import Development.IDE.GHC.CoreFile
8591
import Development.IDE.GHC.Error
86-
import Development.IDE.GHC.Orphans ()
92+
import Development.IDE.GHC.Orphans ()
8793
import Development.IDE.GHC.Util
8894
import Development.IDE.GHC.Warnings
8995
import Development.IDE.Types.Diagnostics
9096
import Development.IDE.Types.Location
9197
import Development.IDE.Types.Options
92-
import GHC (ForeignHValue,
93-
GetDocsFailure (..),
94-
parsedSource)
95-
import qualified GHC.LanguageExtensions as LangExt
98+
import GHC (ForeignHValue,
99+
GetDocsFailure (..),
100+
parsedSource)
101+
import qualified GHC.LanguageExtensions as LangExt
96102
import GHC.Serialized
97-
import HieDb hiding (withHieDb)
98-
import qualified Language.LSP.Protocol.Message as LSP
99-
import Language.LSP.Protocol.Types (DiagnosticTag (..))
100-
import qualified Language.LSP.Server as LSP
101-
import Prelude hiding (mod)
103+
import HieDb hiding (withHieDb)
104+
import qualified Language.LSP.Protocol.Message as LSP
105+
import Language.LSP.Protocol.Types (DiagnosticTag (..))
106+
import qualified Language.LSP.Server as LSP
107+
import Prelude hiding (mod)
102108
import System.Directory
103109
import System.FilePath
104-
import System.IO.Extra (fixIO, newTempFileWithin)
110+
import System.IO.Extra (fixIO,
111+
newTempFileWithin)
105112

106-
import qualified GHC as G
113+
import qualified Data.Set as Set
114+
import qualified GHC as G
107115
import GHC.Tc.Gen.Splice
108116
import GHC.Types.ForeignStubs
109117
import GHC.Types.HpcInfo
@@ -112,18 +120,16 @@ import GHC.Types.TypeEnv
112120
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
113121

114122

115-
import qualified Data.Set as Set
116-
117123
#if MIN_VERSION_ghc(9,5,0)
118124
import GHC.Core.Lint.Interactive
119125
import GHC.Driver.Config.CoreToStg.Prep
120126
#endif
121127

122128
#if MIN_VERSION_ghc(9,7,0)
123-
import Data.Foldable (toList)
129+
import Data.Foldable (toList)
124130
import GHC.Unit.Module.Warnings
125131
#else
126-
import Development.IDE.Core.FileStore (shareFilePath)
132+
import Development.IDE.Core.FileStore (shareFilePath)
127133
#endif
128134

129135
--Simple constants to make sure the source is consistently named
@@ -292,7 +298,7 @@ captureSplicesAndDeps TypecheckHelpers{..} env k = do
292298

293299
{- load it -}
294300
; (fv_hvs, lbss, pkgs) <- loadDecls (hscInterp hsc_env') hsc_env' srcspan bcos
295-
; let hval = ((expectJust "hscCompileCoreExpr'" $ lookup (idName binding_id) fv_hvs), lbss, pkgs)
301+
; let hval = (expectJust "hscCompileCoreExpr'" $ lookup (idName binding_id) fv_hvs, lbss, pkgs)
296302

297303
; modifyIORef' var (flip extendModuleEnvList [(mi_module $ hm_iface hm, linkableHash lb) | lb <- lbs, let hm = linkableHomeMod lb])
298304
; return hval }

ghcide/src/Development/IDE/Core/Preprocessor.hs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,10 @@ import Development.IDE.GHC.Error
2828
import Development.IDE.Types.Diagnostics
2929
import Development.IDE.Types.Location
3030
import qualified GHC.LanguageExtensions as LangExt
31+
import GHC.Utils.Logger (LogFlags (..))
3132
import System.FilePath
3233
import System.IO.Extra
3334

34-
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
35-
36-
import GHC.Utils.Logger (LogFlags (..))
37-
3835
-- | Given a file and some contents, apply any necessary preprocessors,
3936
-- e.g. unlit/cpp. Return the resulting buffer and the DynFlags it implies.
4037
preprocessor :: HscEnv -> FilePath -> Maybe Util.StringBuffer -> ExceptT [FileDiagnostic] IO (Util.StringBuffer, [String], HscEnv, Util.Fingerprint)

ghcide/src/Development/IDE/Core/Rules.hs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,13 +167,8 @@ import System.Directory (doesFileExist)
167167
import System.Info.Extra (isWindows)
168168

169169

170-
import GHC.Fingerprint
171-
172-
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
173-
174-
175170
import qualified Data.IntMap as IM
176-
171+
import GHC.Fingerprint
177172

178173

179174
data Log

ghcide/src/Development/IDE/Core/Shake.hs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ import Development.IDE.Core.RuleTypes
126126
import Development.IDE.Core.Tracing
127127
import Development.IDE.Core.WorkerThread
128128
import Development.IDE.GHC.Compat (NameCache,
129+
NameCacheUpdater,
129130
initNameCache,
130131
knownKeyNames)
131132
import Development.IDE.GHC.Orphans ()
@@ -174,10 +175,6 @@ import System.FilePath hiding (makeRelative)
174175
import System.IO.Unsafe (unsafePerformIO)
175176
import System.Time.Extra
176177

177-
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
178-
179-
180-
import Development.IDE.GHC.Compat (NameCacheUpdater)
181178

182179
data Log
183180
= LogCreateHieDbExportsMapStart

ghcide/src/Development/IDE/Core/Tracing.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ withTelemetryRecorder k = withSpan "Logger" $ \sp ->
6161
-- | Returns a logger that produces telemetry events in a single span.
6262
telemetryLogRecorder :: SpanInFlight -> Recorder (WithPriority (Doc a))
6363
telemetryLogRecorder sp = Recorder $ \WithPriority {..} ->
64-
liftIO $ addEvent sp (fromString $ show priority) (encodeUtf8 $ trim $ renderStrict $ layoutCompact $ payload)
64+
liftIO $ addEvent sp (fromString $ show priority) (encodeUtf8 $ trim $ renderStrict $ layoutCompact payload)
6565
where
6666
-- eventlog message size is limited by EVENT_PAYLOAD_SIZE_MAX = STG_WORD16_MAX
6767
trim = T.take (fromIntegral(maxBound :: Word16) - 10)

ghcide/src/Development/IDE/GHC/CPP.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import GHC.Settings
2222

2323
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
2424

25-
2625
#if !MIN_VERSION_ghc(9,5,0)
2726
import qualified GHC.Driver.Pipeline.Execute as Pipeline
2827
#endif

ghcide/src/Development/IDE/GHC/Compat.hs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ import GHC.Builtin.Uniques
169169
import GHC.ByteCode.Types
170170
import GHC.CoreToStg
171171
import GHC.Data.Maybe
172+
import GHC.Driver.Config.Stg.Pipeline
172173
import GHC.Driver.Env as Env
173174
import GHC.Iface.Env
174175
import GHC.Linker.Loader (loadDecls, loadExpr)
@@ -181,15 +182,12 @@ import GHC.Types.IPE
181182
import GHC.Types.SrcLoc (combineRealSrcSpans)
182183
import GHC.Unit.Home.ModInfo (HomePackageTable,
183184
lookupHpt)
185+
import GHC.Unit.Module.Deps (Dependencies (dep_direct_mods),
186+
Usage (..))
184187
import GHC.Unit.Module.ModIface
185188

186189
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
187190

188-
189-
import GHC.Driver.Config.Stg.Pipeline
190-
import GHC.Unit.Module.Deps (Dependencies (dep_direct_mods),
191-
Usage (..))
192-
193191
#if !MIN_VERSION_ghc(9,5,0)
194192
import GHC.Core.Lint (lintInteractiveExpr)
195193
#endif

ghcide/src/Development/IDE/GHC/Compat/Core.hs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -487,12 +487,15 @@ import qualified GHC.Utils.Panic.Plain as Plain
487487
import Data.Foldable (toList)
488488
import GHC.Core.Multiplicity (scaledThing)
489489
import GHC.Data.Bag
490+
import qualified GHC.Data.Strict as Strict
491+
import qualified GHC.Driver.Config.Finder as GHC
492+
import qualified GHC.Driver.Config.Tidy as GHC
490493
import GHC.Driver.Env
491-
import GHC.Hs (HsModule (..))
492-
#if !MIN_VERSION_ghc(9,9,0)
493-
import GHC.Hs (SrcSpanAnn')
494-
#endif
495-
import GHC.Hs.Decls hiding (FunDep)
494+
import GHC.Driver.Env as GHCi
495+
import GHC.Driver.Env.KnotVars
496+
import GHC.Driver.Errors.Types
497+
import GHC.Hs (HsModule (..))
498+
import GHC.Hs.Decls hiding (FunDep)
496499
import GHC.Hs.Doc
497500
import GHC.Hs.Expr
498501
import GHC.Hs.Extension
@@ -516,39 +519,36 @@ import GHC.Types.SourceText
516519
import GHC.Types.Target (Target (..), TargetId (..))
517520
import GHC.Types.TyThing
518521
import GHC.Types.TyThing.Ppr
522+
import GHC.Types.Unique
523+
import GHC.Types.Unique.Map
524+
import GHC.Unit.Env
519525
import GHC.Unit.Finder hiding (mkHomeModLocation)
526+
import qualified GHC.Unit.Finder as GHC
527+
import GHC.Unit.Finder.Types
520528
import GHC.Unit.Home.ModInfo
529+
import GHC.Unit.Module.Graph
521530
import GHC.Unit.Module.Imported
522531
import GHC.Unit.Module.ModDetails
523532
import GHC.Unit.Module.ModGuts
524533
import GHC.Unit.Module.ModIface (IfaceExport, ModIface,
525534
ModIface_ (..), mi_fix)
526535
import GHC.Unit.Module.ModSummary (ModSummary (..))
536+
import GHC.Utils.Error (mkPlainErrorMsgEnvelope)
537+
import GHC.Utils.Panic
538+
import GHC.Utils.TmpFs
527539
import Language.Haskell.Syntax hiding (FunDep)
528540

529541
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
530542

531543

532-
import qualified GHC.Data.Strict as Strict
533-
import qualified GHC.Driver.Config.Finder as GHC
534-
import qualified GHC.Driver.Config.Tidy as GHC
535-
import GHC.Driver.Env as GHCi
536-
import GHC.Driver.Env.KnotVars
537-
import GHC.Driver.Errors.Types
538-
import GHC.Types.Unique
539-
import GHC.Types.Unique.Map
540-
import GHC.Unit.Env
541-
import qualified GHC.Unit.Finder as GHC
542-
import GHC.Unit.Finder.Types
543-
import GHC.Unit.Module.Graph
544-
import GHC.Utils.Error (mkPlainErrorMsgEnvelope)
545-
import GHC.Utils.Panic
546-
import GHC.Utils.TmpFs
547-
548544
#if !MIN_VERSION_ghc(9,7,0)
549545
import GHC.Types.Avail (greNamePrintableName)
550546
#endif
551547

548+
#if !MIN_VERSION_ghc(9,9,0)
549+
import GHC.Hs (SrcSpanAnn')
550+
#endif
551+
552552
mkHomeModLocation :: DynFlags -> ModuleName -> FilePath -> IO Module.ModLocation
553553
mkHomeModLocation df mn f = pure $ GHC.mkHomeModLocation (GHC.initFinderOpts df) mn f
554554

ghcide/src/Development/IDE/GHC/Compat/Env.hs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ module Development.IDE.GHC.Compat.Env (
5757
import GHC (setInteractiveDynFlags)
5858

5959
import GHC.Driver.Backend as Backend
60+
import GHC.Driver.Env (HscEnv, hscSetActiveUnitId)
6061
import qualified GHC.Driver.Env as Env
6162
import GHC.Driver.Hooks (Hooks)
6263
import GHC.Driver.Session
@@ -69,12 +70,6 @@ import GHC.Unit.Types (UnitId)
6970
import GHC.Utils.Logger
7071
import GHC.Utils.TmpFs
7172

72-
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
73-
74-
75-
import GHC.Driver.Env (HscEnv, hscSetActiveUnitId)
76-
77-
7873

7974
hsc_EPS :: HscEnv -> UnitEnv
8075
hsc_EPS = Env.hsc_unit_env

ghcide/src/Development/IDE/GHC/Compat/Iface.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@ module Development.IDE.GHC.Compat.Iface (
99
import Development.IDE.GHC.Compat.Env
1010
import Development.IDE.GHC.Compat.Outputable
1111
import GHC
12+
import GHC.Driver.Session (targetProfile)
1213
import qualified GHC.Iface.Load as Iface
1314
import GHC.Unit.Finder.Types (FindResult)
1415

1516
-- See Note [Guidelines For Using CPP In GHCIDE Import Statements]
1617

17-
import GHC.Driver.Session (targetProfile)
18-
1918
#if MIN_VERSION_ghc(9,7,0)
2019
import GHC.Iface.Errors.Ppr (missingInterfaceErrorDiagnostic)
2120
import GHC.Iface.Errors.Types (IfaceMessage)

0 commit comments

Comments
 (0)