From a0cf585939e2285e3c4c46ea17bb128db8e8ad01 Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Fri, 3 Jul 2015 19:12:04 +0300 Subject: [PATCH] Bugfix: canonicalize filename before trying to unload --- Language/Haskell/GhcMod/FileMapping.hs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Language/Haskell/GhcMod/FileMapping.hs b/Language/Haskell/GhcMod/FileMapping.hs index e0eb773..8904efa 100644 --- a/Language/Haskell/GhcMod/FileMapping.hs +++ b/Language/Haskell/GhcMod/FileMapping.hs @@ -24,11 +24,8 @@ loadMappedFiles = do mapM_ (uncurry loadMappedFile) fileMappings loadMappedFile :: IOish m => FilePath -> FileMapping -> GhcModT m () -loadMappedFile from fm = do - crdl <- cradle - let ccfn = cradleCurrentDir crdl from - cfn <- liftIO $ canonicalizePath ccfn - addMMappedFile cfn fm +loadMappedFile from fm = + getCanonicalFileName from >>= (`addMMappedFile` fm) mapFile :: (IOish m, GmState m, GhcMonad m) => HscEnv -> Target -> m Target @@ -51,5 +48,11 @@ mkMappedTarget tid taoc (Just (MemoryMapping (Just src))) = do return $ mkTarget tid taoc $ Just (sb, ct) mkMappedTarget tid taoc _ = return $ mkTarget tid taoc Nothing +getCanonicalFileName :: IOish m => FilePath -> GhcModT m FilePath +getCanonicalFileName fn = do + crdl <- cradle + let ccfn = cradleCurrentDir crdl fn + liftIO $ canonicalizePath ccfn + unloadMappedFile :: IOish m => FilePath -> GhcModT m () -unloadMappedFile = delMMappedFile +unloadMappedFile = (delMMappedFile =<<) . getCanonicalFileName