on master help sign in
Make Priority in hie-core independent of DAML (#1983)
commit2bbde912c5770402b902aff632645e7144c08d36 authorMoritz Kiefer <moritz.kiefer@purelyfunctional.org> dateWed 3 Jul 2019, 12:03 (7 years ago) parent2ba7d08
2 files changed+19−14
src/Development/IDE/Core/Rules.hs+12−9 src/Development/IDE/Core/Shake.hs+7−5
src/Development/IDE/Core/Rules.hs+12−9
@@ -12,6 +12,9 @@
1212module Development.IDE.Core.Rules(
1313 IdeState, GetDependencies(..), GetParsedModule(..), TransitiveDependencies(..),
1414 Priority(..),
15+ priorityTypeCheck,
16+ priorityGenerateCore,
17+ priorityFilesOfInterest,
1518 runAction, useE, usesE,
1619 toIdeResult, defineNoFile,
1720 mainRule,
@@ -117,14 +120,14 @@ getParsedModule file = use GetParsedModule file
117120-- Rules
118121-- These typically go from key to value and are oracles.
119122
120−-- TODO (MK) This should be independent of DAML or move out of hie-core.
121−-- | We build artefacts based on the following high-to-low priority order.
122−data Priority
123− = PriorityTypeCheck
124− | PriorityGenerateDalf
125− | PriorityFilesOfInterest
126− deriving (Eq, Ord, Show, Enum)
123+priorityTypeCheck :: Priority
124+priorityTypeCheck = Priority 0
127125
126+priorityGenerateCore :: Priority
127+priorityGenerateCore = Priority (-1)
128+
129+priorityFilesOfInterest :: Priority
130+priorityFilesOfInterest = Priority (-2)
128131
129132getParsedModuleRule :: Rules ()
130133getParsedModuleRule =
@@ -240,7 +243,7 @@ typeCheckRule =
240243 pm <- use_ GetParsedModule file
241244 deps <- use_ GetDependencies file
242245 tms <- uses_ TypeCheck (transitiveModuleDeps deps)
243− setPriority PriorityTypeCheck
246+ setPriority priorityTypeCheck
244247 packageState <- use_ GhcSession ""
245248 opt <- getIdeOptions
246249 liftIO $ Compile.typecheckModule opt packageState tms pm
@@ -252,7 +255,7 @@ generateCoreRule =
252255 deps <- use_ GetDependencies file
253256 (tm:tms) <- uses_ TypeCheck (file:transitiveModuleDeps deps)
254257 let pm = tm_parsed_module . Compile.tmrModule $ tm
255− setPriority PriorityGenerateDalf
258+ setPriority priorityGenerateCore
256259 packageState <- use_ GhcSession ""
257260 liftIO $ Compile.compileModule pm packageState tms tm
258261
src/Development/IDE/Core/Shake.hs+7−5
@@ -38,7 +38,8 @@ module Development.IDE.Core.Shake(
3838 sendEvent,
3939 ideLogger,
4040 actionLogger,
41− FileVersion(..)
41+ FileVersion(..),
42+ Priority(..)
4243 ) where
4344
4445import Development.Shake
@@ -53,7 +54,7 @@ import Data.Maybe
5354import Data.Either.Extra
5455import Data.List.Extra
5556import qualified Data.Text as T
56−import Development.IDE.Types.Logger
57+import Development.IDE.Types.Logger hiding (Priority)
5758import Language.Haskell.LSP.Diagnostics
5859import qualified Data.SortedList as SL
5960import Development.IDE.Types.Diagnostics
@@ -399,9 +400,10 @@ publishDiagnosticsNotification fp diags =
399400 LSP.NotificationMessage "2.0" LSP.TextDocumentPublishDiagnostics $
400401 LSP.PublishDiagnosticsParams (fromNormalizedUri $ filePathToUri' fp) (List diags)
401402
402−setPriority :: (Enum a) => a -> Action ()
403−setPriority p =
404− deprioritize (fromIntegral . negate $ fromEnum p)
403+newtype Priority = Priority Double
404+
405+setPriority :: Priority -> Action ()
406+setPriority (Priority p) = deprioritize p
405407
406408sendEvent :: LSP.FromServerMessage -> Action ()
407409sendEvent e = do