From beffb29099bf79fe1672d1d8b97f25a36382101e Mon Sep 17 00:00:00 2001 From: Guillaume Bouchard Date: Sun, 28 May 2023 00:21:43 +0200 Subject: [PATCH] fix: remove the `Indexing` progress message when exeption in withHieDb If any exception was happening in `withHieDb`, the `post` action was never called, leading to a stale `Indexing` message in the client. By using `bracket`, we ensure that the `post` message is called in the event of an exception, cleaning the confusing message in the client. It does not change the well behaving of the indexing (i.e. if it was crashing, it is still crashing), but at least user won't be confused by a stale `Indexing` message. --- ghcide/src/Development/IDE/Core/Compile.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ghcide/src/Development/IDE/Core/Compile.hs b/ghcide/src/Development/IDE/Core/Compile.hs index 1f70e9653b..07db951a72 100644 --- a/ghcide/src/Development/IDE/Core/Compile.hs +++ b/ghcide/src/Development/IDE/Core/Compile.hs @@ -901,9 +901,10 @@ indexHieFile se mod_summary srcPath !hash hf = do -- If the hash in the pending list doesn't match the current hash, then skip Just pendingHash -> pendingHash /= hash unless newerScheduled $ do - pre optProgressStyle - withHieDb (\db -> HieDb.addRefsFromLoaded db targetPath (HieDb.RealFile $ fromNormalizedFilePath srcPath) hash hf') - post + -- Using bracket, so even if an exception happen during withHieDb call, + -- the `post` (which clean the progress indicator) will still be called. + bracket_ (pre optProgressStyle) post $ + withHieDb (\db -> HieDb.addRefsFromLoaded db targetPath (HieDb.RealFile $ fromNormalizedFilePath srcPath) hash hf') where mod_location = ms_location mod_summary targetPath = Compat.ml_hie_file mod_location