From 314b2075ba3acef440d5020cedc07dfaad2eb2e1 Mon Sep 17 00:00:00 2001 From: Fendor Date: Thu, 9 Dec 2021 14:08:38 +0100 Subject: [PATCH 1/2] Join nested IO actions of the form `IO (IO ())` --- ghcide/session-loader/Development/IDE/Session.hs | 7 ++++--- ghcide/src/Development/IDE/Core/FileStore.hs | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ghcide/session-loader/Development/IDE/Session.hs b/ghcide/session-loader/Development/IDE/Session.hs index cf6214a868..95b304554e 100644 --- a/ghcide/session-loader/Development/IDE/Session.hs +++ b/ghcide/session-loader/Development/IDE/Session.hs @@ -245,9 +245,10 @@ loadSessionWithOptions SessionLoadingOptions{..} dir = do return $ do extras@ShakeExtras{logger, restartShakeSession, ideNc, knownTargetsVar, lspEnv } <- getShakeExtras - let invalidateShakeCache = do + let invalidateShakeCache :: IO () + invalidateShakeCache = do void $ modifyVar' version succ - atomically $ recordDirtyKeys extras GhcSessionIO [emptyFilePath] + join $ atomically $ recordDirtyKeys extras GhcSessionIO [emptyFilePath] IdeOptions{ optTesting = IdeTesting optTesting , optCheckProject = getCheckProject @@ -264,7 +265,7 @@ loadSessionWithOptions SessionLoadingOptions{..} dir = do TargetModule _ -> do found <- filterM (IO.doesFileExist . fromNormalizedFilePath) targetLocations return (targetTarget, found) - atomically $ recordDirtyKeys extras GetKnownTargets [emptyFilePath] + join $ atomically $ recordDirtyKeys extras GetKnownTargets [emptyFilePath] modifyVarIO' knownTargetsVar $ traverseHashed $ \known -> do let known' = HM.unionWith (<>) known $ HM.fromList $ map (second Set.fromList) knownTargets when (known /= known') $ diff --git a/ghcide/src/Development/IDE/Core/FileStore.hs b/ghcide/src/Development/IDE/Core/FileStore.hs index 74baa4fac2..9a37663f37 100644 --- a/ghcide/src/Development/IDE/Core/FileStore.hs +++ b/ghcide/src/Development/IDE/Core/FileStore.hs @@ -263,7 +263,7 @@ setFileModified state saved nfp = do VFSHandle{..} <- getIdeGlobalState state when (isJust setVirtualFileContents) $ fail "setFileModified can't be called on this type of VFSHandle" - atomically $ recordDirtyKeys (shakeExtras state) GetModificationTime [nfp] + join $ atomically $ recordDirtyKeys (shakeExtras state) GetModificationTime [nfp] restartShakeSession (shakeExtras state) (fromNormalizedFilePath nfp ++ " (modified)") [] when checkParents $ typecheckParents state nfp From 6c624249399edb57f760ca1bc5052fc75c02c19d Mon Sep 17 00:00:00 2001 From: Fendor Date: Fri, 10 Dec 2021 16:33:45 +0100 Subject: [PATCH 2/2] Disable ApplicativeDo Language Extension --- ghcide/ghcide.cabal | 1 - ghcide/src/Development/IDE/Core/Actions.hs | 1 - ghcide/src/Development/IDE/Core/Shake.hs | 2 +- ghcide/src/Development/IDE/Core/Tracing.hs | 1 - 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/ghcide/ghcide.cabal b/ghcide/ghcide.cabal index 2471bf0e38..ee558b7062 100644 --- a/ghcide/ghcide.cabal +++ b/ghcide/ghcide.cabal @@ -117,7 +117,6 @@ library unix default-extensions: - ApplicativeDo BangPatterns DeriveFunctor DeriveGeneric diff --git a/ghcide/src/Development/IDE/Core/Actions.hs b/ghcide/src/Development/IDE/Core/Actions.hs index 5d27facf54..da7d310111 100644 --- a/ghcide/src/Development/IDE/Core/Actions.hs +++ b/ghcide/src/Development/IDE/Core/Actions.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE NoApplicativeDo #-} {-# LANGUAGE TypeFamilies #-} module Development.IDE.Core.Actions ( getAtPoint diff --git a/ghcide/src/Development/IDE/Core/Shake.hs b/ghcide/src/Development/IDE/Core/Shake.hs index 4ed7084d95..9413f5bbb4 100644 --- a/ghcide/src/Development/IDE/Core/Shake.hs +++ b/ghcide/src/Development/IDE/Core/Shake.hs @@ -526,7 +526,7 @@ shakeOpen lspEnv defaultConfig logger debouncer _ <- async $ do logDebug logger "Initializing exports map from hiedb" em <- createExportsMapHieDb hiedb - modifyVar' exportsMap (<> em) + _ <- modifyVar' exportsMap (<> em) logDebug logger $ "Done initializing exports map from hiedb (" <> pack(show (ExportsMap.size em)) <> ")" progress <- do diff --git a/ghcide/src/Development/IDE/Core/Tracing.hs b/ghcide/src/Development/IDE/Core/Tracing.hs index d4bc94b09e..629e0956b0 100644 --- a/ghcide/src/Development/IDE/Core/Tracing.hs +++ b/ghcide/src/Development/IDE/Core/Tracing.hs @@ -1,5 +1,4 @@ {-# LANGUAGE CPP #-} -{-# LANGUAGE NoApplicativeDo #-} {-# LANGUAGE PackageImports #-} {-# LANGUAGE PatternSynonyms #-} {-# HLINT ignore #-}