Skip to content

Commit 3be343a

Browse files
authored
Add hls-graph abstracting over shake (#1748)
* Add a new project hls-graph, shadowing Shake and reexporting it * Make hls-graph use explicit exports rather than module-level exports * Cut down on what hls-graph exports Delete unnecesssary hiding
1 parent 37622d8 commit 3be343a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+362
-57
lines changed

cabal.project

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ packages:
22
./
33
./hie-compat
44
./shake-bench
5+
./hls-graph
56
./ghcide
67
./hls-plugin-api
78
./hls-test-utils

ghcide/exe/Main.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import qualified Development.IDE.Main as Main
2626
import qualified Development.IDE.Plugin.HLS.GhcIde as GhcIde
2727
import qualified Development.IDE.Plugin.Test as Test
2828
import Development.IDE.Types.Options
29-
import Development.Shake (ShakeOptions (shakeThreads))
29+
import Development.IDE.Graph (ShakeOptions (shakeThreads))
3030
import Ide.Plugin.Config (Config (checkParents, checkProject))
3131
import Ide.Plugin.ConfigUtils (pluginsToDefaultConfig,
3232
pluginsToVSCodeExtensionSchema)
@@ -109,4 +109,3 @@ main = do
109109
, optCheckProject = pure $ checkProject config
110110
}
111111
}
112-

ghcide/ghcide.cabal

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ library
7474
rope-utf16-splay,
7575
safe,
7676
safe-exceptions,
77-
shake >= 0.18.4,
77+
hls-graph,
7878
sorted-list,
7979
sqlite-simple,
8080
stm,
@@ -288,7 +288,7 @@ executable ghcide
288288
ghcide,
289289
lens,
290290
optparse-applicative,
291-
shake,
291+
hls-graph,
292292
text,
293293
unordered-containers,
294294
aeson-pretty
@@ -358,6 +358,7 @@ test-suite ghcide-tests
358358
safe,
359359
safe-exceptions,
360360
shake,
361+
hls-graph,
361362
tasty,
362363
tasty-expected-failure,
363364
tasty-hunit,
@@ -410,6 +411,7 @@ executable ghcide-bench
410411
optparse-applicative,
411412
process,
412413
safe-exceptions,
414+
hls-graph,
413415
shake,
414416
text
415417
hs-source-dirs: bench/lib bench/exe

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ import Development.IDE.Types.HscEnvEq (HscEnvEq, newHscEnvEq,
5656
import Development.IDE.Types.Location
5757
import Development.IDE.Types.Logger
5858
import Development.IDE.Types.Options
59-
import Development.Shake (Action)
59+
import Development.IDE.Graph (Action)
6060
import GHC.Check
6161
import qualified HIE.Bios as HieBios
6262
import HIE.Bios.Environment hiding (getCacheDir)

ghcide/src/Development/IDE.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,5 @@ import Development.IDE.Types.HscEnvEq as X (HscEnvEq (..),
5151
hscEnvWithImportPaths)
5252
import Development.IDE.Types.Location as X
5353
import Development.IDE.Types.Logger as X
54-
import Development.Shake as X (Action, RuleResult,
54+
import Development.IDE.Graph as X (Action, RuleResult,
5555
Rules, action)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import Development.IDE.GHC.Compat hiding (TargetFile,
3030
writeHieFile)
3131
import qualified Development.IDE.Spans.AtPoint as AtPoint
3232
import Development.IDE.Types.Location
33-
import Development.Shake hiding (Diagnostic)
33+
import Development.IDE.Graph
3434
import qualified HieDb
3535
import Language.LSP.Types (DocumentHighlight (..),
3636
SymbolInformation (..))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Development.IDE.Core.RuleTypes
2424
import Development.IDE.Core.Shake
2525
import Development.IDE.Types.Location
2626
import Development.IDE.Types.Options
27-
import Development.Shake
27+
import Development.IDE.Graph
2828
import Language.LSP.Server hiding (getVirtualFile)
2929
import Language.LSP.Types
3030
import Language.LSP.Types.Capabilities

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import Development.IDE.Import.DependencyInformation
4646
import Development.IDE.Types.Diagnostics
4747
import Development.IDE.Types.Location
4848
import Development.IDE.Types.Options
49-
import Development.Shake
49+
import Development.IDE.Graph
5050
import HieDb.Create (deleteMissingRealFiles)
5151
import Ide.Plugin.Config (CheckParents (..))
5252
import System.IO.Error

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import Data.Hashable (Hashed, hashed, unhashed)
2121
import Data.Text (Text, isPrefixOf)
2222
import Development.IDE.Core.Shake
2323
import Development.IDE.Types.Location
24-
import Development.Shake
24+
import Development.IDE.Graph
2525
import Language.LSP.Types
2626
import System.FilePath (isRelative)
2727

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import qualified Data.HashMap.Strict as HashMap
2424
import Data.Hashable
2525
import qualified Data.Text as T
2626
import Data.Typeable
27-
import Development.Shake
27+
import Development.IDE.Graph
2828
import GHC.Generics
2929

3030
import Control.Monad.Trans.Class
@@ -117,4 +117,3 @@ kick = do
117117
void $ liftIO $ modifyVar' exportsMap $ (exportsMap'' <>) . (exportsMap' <>)
118118

119119
liftIO $ progressUpdate KickCompleted
120-

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import Development.IDE.GHC.Util
2828
import Development.IDE.Import.DependencyInformation
2929
import Development.IDE.Types.HscEnvEq (HscEnvEq)
3030
import Development.IDE.Types.KnownTargets
31-
import Development.Shake
31+
import Development.IDE.Graph
3232
import GHC.Generics (Generic)
3333

3434
import HscTypes (HomeModInfo,

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,8 @@ import Development.IDE.Types.HscEnvEq
123123
import Development.IDE.Types.Location
124124
import qualified Development.IDE.Types.Logger as L
125125
import Development.IDE.Types.Options
126-
import Development.Shake hiding
127-
(Diagnostic)
128-
import Development.Shake.Classes hiding (get, put)
126+
import Development.IDE.Graph
127+
import Development.IDE.Graph.Classes hiding (get, put)
129128
import Fingerprint
130129
import GHC.Generics (Generic)
131130
import GHC.IO.Encoding

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import Development.IDE.Core.FileExists (fileExistsRules)
2323
import Development.IDE.Core.OfInterest
2424
import Development.IDE.Types.Logger as Logger
2525
import Development.IDE.Types.Options (IdeOptions (..))
26-
import Development.Shake
26+
import Development.IDE.Graph
2727
import Ide.Plugin.Config
2828
import qualified Language.LSP.Server as LSP
2929
import qualified Language.LSP.Types as LSP

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,11 @@ import Development.IDE.Types.Logger hiding (Priority)
119119
import qualified Development.IDE.Types.Logger as Logger
120120
import Development.IDE.Types.Options
121121
import Development.IDE.Types.Shake
122-
import Development.Shake hiding (Info, ShakeValue,
123-
doesFileExist)
124-
import qualified Development.Shake as Shake
125-
import Development.Shake.Classes
126-
import Development.Shake.Database
127-
import Development.Shake.Rule
122+
import Development.IDE.Graph hiding (ShakeValue)
123+
import qualified Development.IDE.Graph as Shake
124+
import Development.IDE.Graph.Classes
125+
import Development.IDE.Graph.Database
126+
import Development.IDE.Graph.Rule
128127
import GHC.Generics
129128
import Language.LSP.Diagnostics
130129
import qualified Language.LSP.Server as LSP

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import Development.IDE.Types.Logger (Logger, logDebug, logInfo)
3838
import Development.IDE.Types.Shake (Key (..), Value,
3939
ValueWithDiagnostics (..),
4040
Values)
41-
import Development.Shake (Action, actionBracket)
41+
import Development.IDE.Graph (Action, actionBracket)
4242
import Foreign.Storable (Storable (sizeOf))
4343
import HeapSize (recursiveSize, runHeapsize)
4444
import Ide.PluginUtils (installSigUsr1Handler)
@@ -230,4 +230,3 @@ repeatUntilJust nattempts action = do
230230
case res of
231231
Nothing -> repeatUntilJust (nattempts-1) action
232232
Just{} -> return res
233-

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ import Development.IDE.Core.Service (runAction)
5050
import Development.IDE.Core.Shake
5151
import Development.IDE.GHC.Compat hiding (parseExpr)
5252
import Development.IDE.Types.Location
53-
import Development.Shake (RuleResult, Rules)
54-
import Development.Shake.Classes
53+
import Development.IDE.Graph (RuleResult, Rules)
54+
import Development.IDE.Graph.Classes
5555
import qualified GHC.Generics as GHC
5656
import Generics.SYB
5757
import Generics.SYB.GHC

ghcide/src/Development/IDE/Main.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ import Development.IDE.Types.Options (IdeGhcSession,
6161
clientSupportsProgress,
6262
defaultIdeOptions)
6363
import Development.IDE.Types.Shake (Key (Key))
64-
import Development.Shake (action)
64+
import Development.IDE.Graph (action)
6565
import GHC.IO.Encoding (setLocaleEncoding)
6666
import GHC.IO.Handle (hDuplicate)
6767
import HIE.Bios.Cradle (findCradle)

ghcide/src/Development/IDE/Plugin.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Development.IDE.Plugin ( Plugin(..) ) where
22

33
import Data.Default
4-
import Development.Shake
4+
import Development.IDE.Graph
55

66
import Development.IDE.LSP.Server
77
import qualified Language.LSP.Server as LSP

ghcide/src/Development/IDE/Plugin/CodeAction/RuleTypes.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Data.Hashable (Hashable)
1010
import Data.Typeable (Typeable)
1111
import Development.IDE.Types.Exports
1212
import Development.IDE.Types.HscEnvEq (HscEnvEq)
13-
import Development.Shake (RuleResult)
13+
import Development.IDE.Graph (RuleResult)
1414
import GHC.Generics (Generic)
1515

1616
-- Rule type for caching Package Exports

ghcide/src/Development/IDE/Plugin/Completions.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ import Development.IDE.Plugin.Completions.Logic
3131
import Development.IDE.Plugin.Completions.Types
3232
import Development.IDE.Types.HscEnvEq (hscEnv)
3333
import Development.IDE.Types.Location
34-
import Development.Shake
35-
import Development.Shake.Classes
34+
import Development.IDE.Graph
35+
import Development.IDE.Graph.Classes
3636
import GHC.Exts (toList)
3737
import GHC.Generics
3838
import Ide.Plugin.Config (Config)

ghcide/src/Development/IDE/Plugin/HLS.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import Development.IDE.Core.Tracing
2727
import Development.IDE.LSP.Server
2828
import Development.IDE.Plugin
2929
import Development.IDE.Types.Logger
30-
import Development.Shake (Rules)
30+
import Development.IDE.Graph (Rules)
3131
import Ide.Plugin.Config
3232
import Ide.PluginUtils (getClientConfig)
3333
import Ide.Types as HLS

ghcide/src/Development/IDE/Plugin/Test.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import Development.IDE.Plugin
3030
import Development.IDE.Types.Action
3131
import Development.IDE.Types.HscEnvEq (HscEnvEq (hscEnv))
3232
import Development.IDE.Types.Location (fromUri)
33-
import Development.Shake (Action)
33+
import Development.IDE.Graph (Action)
3434
import GHC.Generics (Generic)
3535
import GhcPlugins (HscEnv (hsc_dflags))
3636
import Ide.Types

ghcide/src/Development/IDE/Plugin/TypeLenses.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import Development.IDE.Types.Location (Position (Position, _chara
4141
Range (Range, _end, _start),
4242
toNormalizedFilePath',
4343
uriToFilePath')
44-
import Development.Shake.Classes
44+
import Development.IDE.Graph.Classes
4545
import GHC.Generics (Generic)
4646
import GhcPlugins (GlobalRdrEnv,
4747
HscEnv (hsc_dflags), SDoc,

ghcide/src/Development/IDE/Types/Action.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import qualified Data.HashSet as Set
1616
import Data.Hashable (Hashable (..))
1717
import Data.Unique (Unique)
1818
import Development.IDE.Types.Logger
19-
import Development.Shake (Action)
19+
import Development.IDE.Graph (Action)
2020
import Numeric.Natural
2121

2222
data DelayedAction a = DelayedAction

ghcide/src/Development/IDE/Types/HscEnvEq.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import Development.IDE.GHC.Compat
2525
import Development.IDE.GHC.Error (catchSrcErrors)
2626
import Development.IDE.GHC.Util (lookupPackageConfig)
2727
import Development.IDE.Types.Exports (ExportsMap, createExportsMap)
28-
import Development.Shake.Classes
28+
import Development.IDE.Graph.Classes
2929
import GhcPlugins (HscEnv (hsc_dflags),
3030
InstalledPackageInfo (exposedModules),
3131
Module (..),
@@ -164,4 +164,3 @@ onceAsync act = do
164164
pure (OnceRunning x, unmask $ run x)
165165

166166
data Once a = OncePending | OnceRunning (Async a)
167-

ghcide/src/Development/IDE/Types/Options.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import qualified Data.Text as T
2323
import Data.Typeable
2424
import Development.IDE.Core.RuleTypes
2525
import Development.IDE.Types.Diagnostics
26-
import Development.Shake
26+
import Development.IDE.Graph
2727
import GHC hiding (parseModule,
2828
typecheckModule)
2929
import GhcPlugins as GHC hiding (fst3, (<>))

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ import Data.Vector (Vector)
2626
import Development.IDE.Core.PositionMapping
2727
import Development.IDE.Types.Diagnostics
2828
import Development.IDE.Types.Location
29-
import Development.Shake (RuleResult,
29+
import Development.IDE.Graph (RuleResult,
3030
ShakeException (shakeExceptionInner))
31-
import Development.Shake.Classes
31+
import Development.IDE.Graph.Classes
3232
import GHC.Generics
3333
import Language.LSP.Types
3434

ghcide/src/Generics/SYB/GHC.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import Control.Monad
1414
import Data.Functor.Compose (Compose(Compose))
1515
import Data.Monoid (Any(Any))
1616
import Development.IDE.GHC.Compat
17-
import Development.Shake.Classes
17+
import Development.IDE.Graph.Classes
1818
import Generics.SYB
1919

2020

@@ -122,4 +122,3 @@ gmapMQ f = runMonadicQuery . gfoldl k pure
122122
where
123123
k :: Data d => MonadicQuery r f (d -> b) -> d -> MonadicQuery r f b
124124
k c x = c <*> MonadicQuery (f x)
125-

haskell-language-server.cabal

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ library
7373
, optparse-applicative
7474
, optparse-simple
7575
, process
76-
, shake
76+
, hls-graph
7777
, safe-exceptions
7878
, sqlite-simple
7979
, unordered-containers
@@ -332,7 +332,7 @@ executable haskell-language-server
332332
, mtl
333333
, regex-tdfa
334334
, safe-exceptions
335-
, shake
335+
, hls-graph
336336
, sqlite-simple
337337
, temporary
338338
, transformers

0 commit comments

Comments
 (0)