@@ -15,6 +15,7 @@ import qualified Data.Set as S
1515import qualified Language.PureScript as P
1616import Language.PureScript.Errors.JSON
1717import Language.PureScript.Ide.Error
18+import Language.PureScript.Ide.Logging
1819import Language.PureScript.Ide.State
1920import Language.PureScript.Ide.Types
2021import System.IO.UTF8 (readUTF8FileT)
@@ -51,7 +52,7 @@ rebuildFile path = do
5152
5253 -- Externs files must be sorted ahead of time, so that they get applied
5354 -- correctly to the 'Environment'.
54− externs <- sortExterns m =<< getExternFiles
55+ externs <- logPerf (labelTimespec "Sorting externs") (sortExterns m =<< getExternFiles)
5556
5657 outputDirectory <- confOutputPath . ideConfiguration <$> ask
5758
@@ -62,25 +63,28 @@ rebuildFile path = do
6263
6364 let makeEnv = MakeActionsEnv outputDirectory filePathMap foreigns False
6465 -- Rebuild the single module using the cached externs
65− (result, warnings) <- liftIO
66+ (result, warnings) <- logPerf (labelTimespec "Rebuilding Module") $
67+ liftIO
6668 . P.runMake P.defaultOptions
6769 . P.rebuildModule (buildMakeActions
6870 >>= shushProgress $ makeEnv) externs $ m
6971 case result of
7072 Left errors -> throwError (RebuildError (toJSONErrors False P.Error errors))
7173 Right _ -> do
72− rebuildModuleOpen makeEnv externs m
74+ env <- ask
75+ let ll = confLogLevel (ideConfiguration env)
76+ _ <- liftIO (async (runLogger ll (runReaderT (rebuildModuleOpen makeEnv externs m) env)))
7377 pure (RebuildSuccess (toJSONErrors False P.Warning warnings))
7478
7579-- | Rebuilds a module but opens up its export list first and stores the result
7680-- inside the rebuild cache
7781rebuildModuleOpen
78− :: (Ide m, MonadLogger m, MonadError PscIdeError m)
82+ :: (Ide m, MonadLogger m)
7983 => MakeActionsEnv
8084 -> [P.ExternsFile]
8185 -> P.Module
8286 -> m ()
83−rebuildModuleOpen makeEnv externs m = do
87+rebuildModuleOpen makeEnv externs m = void $ runExceptT $ do
8488 (openResult, _) <- liftIO
8589 . P.runMake P.defaultOptions
8690 . P.rebuildModule (buildMakeActions