on master help sign in
Make Priority in hie-core independent of DAML (#1983)
2bbde91Moritz Kiefer
src/Development/IDE/Core/Rules.hs+12−9
@@ -12,6 +12,9 @@
12module Development.IDE.Core.Rules(
12module Development.IDE.Core.Rules(
13 IdeState, GetDependencies(..), GetParsedModule(..), TransitiveDependencies(..),
13 IdeState, GetDependencies(..), GetParsedModule(..), TransitiveDependencies(..),
14 Priority(..),
14 Priority(..),
15+ priorityTypeCheck,
16+ priorityGenerateCore,
17+ priorityFilesOfInterest,
15 runAction, useE, usesE,
18 runAction, useE, usesE,
16 toIdeResult, defineNoFile,
19 toIdeResult, defineNoFile,
17 mainRule,
20 mainRule,
@@ -117,14 +120,14 @@ getParsedModule file = use GetParsedModule file
117-- Rules
120-- Rules
118-- These typically go from key to value and are oracles.
121-- These typically go from key to value and are oracles.
119
122
120−-- TODO (MK) This should be independent of DAML or move out of hie-core.
123+priorityTypeCheck :: Priority
121−-- | We build artefacts based on the following high-to-low priority order.
124+priorityTypeCheck = Priority 0
122−data Priority
123− = PriorityTypeCheck
124− | PriorityGenerateDalf
125− | PriorityFilesOfInterest
126− deriving (Eq, Ord, Show, Enum)
127
125
126+priorityGenerateCore :: Priority
127+priorityGenerateCore = Priority (-1)
128+
129+priorityFilesOfInterest :: Priority
130+priorityFilesOfInterest = Priority (-2)
128
131
129getParsedModuleRule :: Rules ()
132getParsedModuleRule :: Rules ()
130getParsedModuleRule =
133getParsedModuleRule =
@@ -240,7 +243,7 @@ typeCheckRule =
240 pm <- use_ GetParsedModule file
243 pm <- use_ GetParsedModule file
241 deps <- use_ GetDependencies file
244 deps <- use_ GetDependencies file
242 tms <- uses_ TypeCheck (transitiveModuleDeps deps)
245 tms <- uses_ TypeCheck (transitiveModuleDeps deps)
243− setPriority PriorityTypeCheck
246+ setPriority priorityTypeCheck
244 packageState <- use_ GhcSession ""
247 packageState <- use_ GhcSession ""
245 opt <- getIdeOptions
248 opt <- getIdeOptions
246 liftIO $ Compile.typecheckModule opt packageState tms pm
249 liftIO $ Compile.typecheckModule opt packageState tms pm
@@ -252,7 +255,7 @@ generateCoreRule =
252 deps <- use_ GetDependencies file
255 deps <- use_ GetDependencies file
253 (tm:tms) <- uses_ TypeCheck (file:transitiveModuleDeps deps)
256 (tm:tms) <- uses_ TypeCheck (file:transitiveModuleDeps deps)
254 let pm = tm_parsed_module . Compile.tmrModule $ tm
257 let pm = tm_parsed_module . Compile.tmrModule $ tm
255− setPriority PriorityGenerateDalf
258+ setPriority priorityGenerateCore
256 packageState <- use_ GhcSession ""
259 packageState <- use_ GhcSession ""
257 liftIO $ Compile.compileModule pm packageState tms tm
260 liftIO $ Compile.compileModule pm packageState tms tm
258
261
src/Development/IDE/Core/Shake.hs+7−5
@@ -38,7 +38,8 @@ module Development.IDE.Core.Shake(
38 sendEvent,
38 sendEvent,
39 ideLogger,
39 ideLogger,
40 actionLogger,
40 actionLogger,
41− FileVersion(..)
41+ FileVersion(..),
42+ Priority(..)
42 ) where
43 ) where
43
44
44import Development.Shake
45import Development.Shake
@@ -53,7 +54,7 @@ import Data.Maybe
53import Data.Either.Extra
54import Data.Either.Extra
54import Data.List.Extra
55import Data.List.Extra
55import qualified Data.Text as T
56import qualified Data.Text as T
56−import Development.IDE.Types.Logger
57+import Development.IDE.Types.Logger hiding (Priority)
57import Language.Haskell.LSP.Diagnostics
58import Language.Haskell.LSP.Diagnostics
58import qualified Data.SortedList as SL
59import qualified Data.SortedList as SL
59import Development.IDE.Types.Diagnostics
60import Development.IDE.Types.Diagnostics
@@ -399,9 +400,10 @@ publishDiagnosticsNotification fp diags =
399 LSP.NotificationMessage "2.0" LSP.TextDocumentPublishDiagnostics $
400 LSP.NotificationMessage "2.0" LSP.TextDocumentPublishDiagnostics $
400 LSP.PublishDiagnosticsParams (fromNormalizedUri $ filePathToUri' fp) (List diags)
401 LSP.PublishDiagnosticsParams (fromNormalizedUri $ filePathToUri' fp) (List diags)
401
402
403+newtype Priority = Priority Double
404+
402−setPriority :: (Enum a) => a -> Action ()
405+setPriority :: Priority -> Action ()
403−setPriority p =
406+setPriority (Priority p) = deprioritize p
404− deprioritize (fromIntegral . negate $ fromEnum p)
405
407
406sendEvent :: LSP.FromServerMessage -> Action ()
408sendEvent :: LSP.FromServerMessage -> Action ()
407sendEvent e = do
409sendEvent e = do