[Git][ghc/ghc][wip/torsten.schmits/mwb-26-01/mp-backports] 3 commits: Don't store boot locations in finder cache
Torsten Schmits pushed to branch wip/torsten.schmits/mwb-26-01/mp-backports at Glasgow Haskell Compiler / GHC Commits: ff5e16b0 by Sjoerd Visscher at 2026-03-13T16:20:54+01:00 Don't store boot locations in finder cache Partially reverts commit fff55592a7b Amends add(Home)ModuleToFinder so that locations for boot files are not stored in the finder cache. Removes InstalledModule field from InstalledFound constructor since it's the same as the key that was searched for. - - - - - ffceb7e6 by Sjoerd Visscher at 2026-03-13T16:36:00+01:00 Concentrate boot extension logic in Finder With new mkHomeModLocation that takes an extra HscSource to add boot extensions if required. - - - - - 65d1ec83 by Torsten Schmits at 2026-03-13T16:39:40+01:00 Add a complete pragma for `ModLocation` - - - - - 10 changed files: - compiler/GHC/Driver/Backpack.hs - compiler/GHC/Driver/Make.hs - compiler/GHC/Driver/MakeFile.hs - compiler/GHC/Driver/Phases.hs - compiler/GHC/Driver/Pipeline/Execute.hs - compiler/GHC/Iface/Load.hs - compiler/GHC/Linker/Loader.hs - compiler/GHC/Unit/Finder.hs - compiler/GHC/Unit/Finder/Types.hs - compiler/GHC/Unit/Module/Location.hs Changes: ===================================== compiler/GHC/Driver/Backpack.hs ===================================== @@ -788,7 +788,7 @@ summariseRequirement pn mod_name = do let loc = srcLocSpan (mkSrcLoc (mkFastString (bkp_filename env)) 1 1) let fc = hsc_FC hsc_env - mod <- liftIO $ addHomeModuleToFinder fc home_unit mod_name location + mod <- liftIO $ addHomeModuleToFinder fc home_unit mod_name location HsigFile extra_sig_imports <- liftIO $ findExtraSigImports hsc_env HsigFile mod_name @@ -862,17 +862,14 @@ hsModuleToModSummary home_keys pn hsc_src modname -- To add insult to injury, we don't even actually use -- these filenames to figure out where the hi files go. -- A travesty! - let location0 = mkHomeModLocation2 fopts modname + let location = mkHomeModLocation fopts modname (unsafeEncodeUtf $ unpackFS unit_fs > moduleNameSlashes modname) - (case hsc_src of + (case hsc_src of HsigFile -> os "hsig" HsBootFile -> os "hs-boot" HsSrcFile -> os "hs") - -- DANGEROUS: bootifying can POISON the module finder cache - let location = case hsc_src of - HsBootFile -> addBootSuffixLocnOut location0 - _ -> location0 + hsc_src -- This duplicates a pile of logic in GHC.Driver.Make hi_timestamp <- liftIO $ modificationTimeIfExists (ml_hi_file location) hie_timestamp <- liftIO $ modificationTimeIfExists (ml_hie_file location) @@ -903,7 +900,7 @@ hsModuleToModSummary home_keys pn hsc_src modname this_mod <- liftIO $ do let home_unit = hsc_home_unit hsc_env let fc = hsc_FC hsc_env - addHomeModuleToFinder fc home_unit modname location + addHomeModuleToFinder fc home_unit modname location hsc_src let ms = ModSummary { ms_mod = this_mod, ms_hsc_src = hsc_src, ===================================== compiler/GHC/Driver/Make.hs ===================================== @@ -2122,16 +2122,23 @@ summariseFile hsc_env' home_unit old_summaries src_fn mb_phase maybe_buf <- getPreprocessedImports hsc_env src_fn mb_phase maybe_buf let fopts = initFinderOpts (hsc_dflags hsc_env) + (basename, extension) = splitExtension src_fn - -- Make a ModLocation for this file - let location = mkHomeModLocation fopts pi_mod_name (unsafeEncodeUtf src_fn) + hsc_src + | isHaskellSigSuffix (drop 1 extension) = HsigFile + | isHaskellBootSuffix (drop 1 extension) = HsBootFile + | otherwise = HsSrcFile + + -- Make a ModLocation for this file, adding the @-boot@ suffix to + -- all paths if the original was a boot file. + location = mkHomeModLocation fopts pi_mod_name (unsafeEncodeUtf basename) (unsafeEncodeUtf extension) hsc_src -- Tell the Finder cache where it is, so that subsequent calls -- to findModule will find it, even if it's not on any search path mod <- liftIO $ do let home_unit = hsc_home_unit hsc_env let fc = hsc_FC hsc_env - addHomeModuleToFinder fc home_unit pi_mod_name location + addHomeModuleToFinder fc home_unit pi_mod_name location hsc_src liftIO $ makeNewModSummary hsc_env $ MakeNewModSummary { nms_src_fn = src_fn @@ -2166,13 +2173,10 @@ checkSummaryHash -- and it was likely flushed in depanal. This is not technically -- needed when we're called from sumariseModule but it shouldn't -- hurt. - -- Also, only add to finder cache for non-boot modules as the finder cache - -- makes sure to add a boot suffix for boot files. - _ <- do - let fc = hsc_FC hsc_env - case ms_hsc_src old_summary of - HsSrcFile -> addModuleToFinder fc (ms_mod old_summary) location - _ -> return () + let fc = hsc_FC hsc_env + mod = ms_mod old_summary + hsc_src = ms_hsc_src old_summary + addModuleToFinder fc mod location hsc_src hi_timestamp <- modificationTimeIfExists (ml_hi_file location) hie_timestamp <- modificationTimeIfExists (ml_hie_file location) @@ -2224,7 +2228,7 @@ summariseModule hsc_env' home_unit old_summary_map is_boot (L _ wanted_mod) mb_p find_it :: IO SummariseResult find_it = do - found <- findImportedModule hsc_env wanted_mod mb_pkg + found <- findImportedModuleWithIsBoot hsc_env wanted_mod is_boot mb_pkg case found of Found location mod | isJust (ml_hs_file location) -> @@ -2242,10 +2246,7 @@ summariseModule hsc_env' home_unit old_summary_map is_boot (L _ wanted_mod) mb_p just_found location mod = do -- Adjust location to point to the hs-boot source file, -- hi file, object file, when is_boot says so - let location' = case is_boot of - IsBoot -> addBootSuffixLocn location - NotBoot -> location - src_fn = expectJust "summarise2" (ml_hs_file location') + let src_fn = expectJust "summarise2" (ml_hs_file location) -- Check that it exists -- It might have been deleted since the Finder last found it @@ -2255,7 +2256,7 @@ summariseModule hsc_env' home_unit old_summary_map is_boot (L _ wanted_mod) mb_p -- .hs-boot file doesn't exist. Nothing -> return NotThere Just h -> do - fresult <- new_summary_cache_check location' mod src_fn h + fresult <- new_summary_cache_check location mod src_fn h return $ case fresult of Left err -> FoundHomeWithError (moduleUnitId mod, err) Right ms -> FoundHome ms ===================================== compiler/GHC/Driver/MakeFile.hs ===================================== @@ -307,7 +307,7 @@ findDependency :: HscEnv findDependency hsc_env srcloc pkg imp dep_boot = do -- Find the module; this will be fast because -- we've done it once during downsweep - findImportedModule hsc_env imp pkg >>= \case + findImportedModuleWithIsBoot hsc_env imp dep_boot pkg >>= \case Found loc dep_mod -> pure DepHi { dep_mod, @@ -356,10 +356,9 @@ writeDependencies include_pkgs root hdl suffixes node deps = -- e.g. A.o : B.hi -- A.x_o : B.x_hi import_dep = \case - DepHi {dep_path, dep_boot, dep_unit} + DepHi {dep_path, dep_unit} | isNothing dep_unit || include_pkgs - , let path = addBootSuffix_maybe dep_boot dep_path - -> [([obj], hi) | (obj, hi) <- zip obj_files (suffixed path)] + -> [([obj], hi) | (obj, hi) <- zip obj_files (suffixed dep_path)] | otherwise -> [] ===================================== compiler/GHC/Driver/Phases.hs ===================================== @@ -23,6 +23,7 @@ module GHC.Driver.Phases ( isDynLibSuffix, isHaskellUserSrcSuffix, isHaskellSigSuffix, + isHaskellBootSuffix, isSourceSuffix, isHaskellishTarget, @@ -234,7 +235,7 @@ phaseInputExt Js = "js" phaseInputExt StopLn = "o" haskellish_src_suffixes, backpackish_suffixes, haskellish_suffixes, cish_suffixes, - js_suffixes, haskellish_user_src_suffixes, haskellish_sig_suffixes + js_suffixes, haskellish_user_src_suffixes, haskellish_sig_suffixes, haskellish_boot_suffixes :: [String] -- When a file with an extension in the haskellish_src_suffixes group is -- loaded in --make mode, its imports will be loaded too. @@ -247,7 +248,8 @@ js_suffixes = [ "js" ] -- Will not be deleted as temp files: haskellish_user_src_suffixes = - haskellish_sig_suffixes ++ [ "hs", "lhs", "hs-boot", "lhs-boot" ] + haskellish_sig_suffixes ++ haskellish_boot_suffixes ++ [ "hs", "lhs" ] +haskellish_boot_suffixes = [ "hs-boot", "lhs-boot" ] haskellish_sig_suffixes = [ "hsig", "lhsig" ] backpackish_suffixes = [ "bkp" ] @@ -265,11 +267,12 @@ dynlib_suffixes platform = case platformOS platform of _ -> ["so"] isHaskellishSuffix, isBackpackishSuffix, isHaskellSrcSuffix, isCishSuffix, - isHaskellUserSrcSuffix, isJsSuffix, isHaskellSigSuffix + isHaskellUserSrcSuffix, isJsSuffix, isHaskellSigSuffix, isHaskellBootSuffix :: String -> Bool isHaskellishSuffix s = s `elem` haskellish_suffixes isBackpackishSuffix s = s `elem` backpackish_suffixes isHaskellSigSuffix s = s `elem` haskellish_sig_suffixes +isHaskellBootSuffix s = s `elem` haskellish_boot_suffixes isHaskellSrcSuffix s = s `elem` haskellish_src_suffixes isCishSuffix s = s `elem` cish_suffixes isJsSuffix s = s `elem` js_suffixes ===================================== compiler/GHC/Driver/Pipeline/Execute.hs ===================================== @@ -725,7 +725,7 @@ runHscPhase pipe_env hsc_env0 input_fn src_flavour = do mod <- do let home_unit = hsc_home_unit hsc_env let fc = hsc_FC hsc_env - addHomeModuleToFinder fc home_unit mod_name location + addHomeModuleToFinder fc home_unit mod_name location src_flavour -- Make the ModSummary to hand to hscMain let @@ -769,24 +769,18 @@ mkOneShotModLocation :: PipeEnv -> DynFlags -> HscSource -> ModuleName -> IO Mod mkOneShotModLocation pipe_env dflags src_flavour mod_name = do let PipeEnv{ src_basename=basename, src_suffix=suff } = pipe_env - let location1 = mkHomeModLocation2 fopts mod_name (unsafeEncodeUtf basename) (unsafeEncodeUtf suff) - - -- Boot-ify it if necessary - let location2 - | HsBootFile <- src_flavour = addBootSuffixLocnOut location1 - | otherwise = location1 - + let location1 = mkHomeModLocation fopts mod_name (unsafeEncodeUtf basename) (unsafeEncodeUtf suff) src_flavour -- Take -ohi into account if present -- This can't be done in mkHomeModuleLocation because -- it only applies to the module being compiles let ohi = outputHi dflags - location3 | Just fn <- ohi = location2{ ml_hi_file_ospath = unsafeEncodeUtf fn } - | otherwise = location2 + location2 | Just fn <- ohi = location1{ ml_hi_file_ospath = unsafeEncodeUtf fn } + | otherwise = location1 let dynohi = dynOutputHi dflags - location4 | Just fn <- dynohi = location3{ ml_dyn_hi_file_ospath = unsafeEncodeUtf fn } - | otherwise = location3 + location3 | Just fn <- dynohi = location2{ ml_dyn_hi_file_ospath = unsafeEncodeUtf fn } + | otherwise = location2 -- Take -o into account if present -- Very like -ohi, but we must *only* do this if we aren't linking @@ -799,11 +793,11 @@ mkOneShotModLocation pipe_env dflags src_flavour mod_name = do location5 | Just ofile <- expl_o_file , let dyn_ofile = fromMaybe (ofile -<.> dynObjectSuf_ dflags) expl_dyn_o_file , isNoLink (ghcLink dflags) - = location4 { ml_obj_file_ospath = unsafeEncodeUtf ofile + = location3 { ml_obj_file_ospath = unsafeEncodeUtf ofile , ml_dyn_obj_file_ospath = unsafeEncodeUtf dyn_ofile } | Just dyn_ofile <- expl_dyn_o_file - = location4 { ml_dyn_obj_file_ospath = unsafeEncodeUtf dyn_ofile } - | otherwise = location4 + = location3 { ml_dyn_obj_file_ospath = unsafeEncodeUtf dyn_ofile } + | otherwise = location3 return location5 where fopts = initFinderOpts dflags ===================================== compiler/GHC/Iface/Load.hs ===================================== @@ -928,9 +928,9 @@ findAndReadIface hsc_env doc_str mod wanted_mod hi_boot_file = do else do let fopts = initFinderOpts dflags -- Look for the file - mb_found <- liftIO (findExactModule fc fopts other_fopts unit_state mhome_unit mod) + mb_found <- liftIO (findExactModule fc fopts other_fopts unit_state mhome_unit mod hi_boot_file) case mb_found of - InstalledFound (addBootSuffixLocn_maybe hi_boot_file -> loc) mod -> do + InstalledFound loc -> do -- See Note [Home module load error] case mhome_unit of Just home_unit ===================================== compiler/GHC/Linker/Loader.hs ===================================== @@ -663,7 +663,7 @@ initLinkDepsOpts hsc_env = opts Maybe.Failed err -> pure (Maybe.Failed err) Maybe.Succeeded iface -> find_location mod <&> \case - InstalledFound loc _ -> Maybe.Succeeded (iface, loc) + InstalledFound loc -> Maybe.Succeeded (iface, loc) err -> Maybe.Failed $ cannotFindInterface unit_state home_unit (targetProfile dflags) (moduleName mod) err @@ -671,7 +671,7 @@ initLinkDepsOpts hsc_env = opts find_location mod = liftIO $ findExactModule (hsc_FC hsc_env) (initFinderOpts dflags) - other_fopts unit_state home_unit (toUnitId <$> mod) + other_fopts unit_state home_unit (toUnitId <$> mod) NotBoot other_fopts = initFinderOpts . homeUnitEnv_dflags <$> hsc_HUG hsc_env ===================================== compiler/GHC/Unit/Finder.hs ===================================== @@ -15,6 +15,7 @@ module GHC.Unit.Finder ( initFinderCache, flushFinderCaches, findImportedModule, + findImportedModuleWithIsBoot, findPluginModule, findExactModule, findHomeModule, @@ -62,6 +63,7 @@ import GHC.Utils.Panic import GHC.Linker.Types import GHC.Types.PkgQual +import GHC.Types.SourceFile import GHC.Fingerprint import Data.IORef @@ -171,6 +173,13 @@ findImportedModule hsc_env mod pkg_qual = query <- hscUnitIndexQuery hsc_env findImportedModuleNoHsc fc fopts (hsc_unit_env hsc_env) query home_module_map mhome_unit mod pkg_qual +findImportedModuleWithIsBoot :: HscEnv -> ModuleName -> IsBootInterface -> PkgQual -> IO FindResult +findImportedModuleWithIsBoot hsc_env mod is_boot pkg_qual = do + res <- findImportedModule hsc_env mod pkg_qual + case (res, is_boot) of + (Found loc mod, IsBoot) -> return (Found (addBootSuffixLocn loc) mod) + _ -> return res + findImportedModuleNoHsc :: FinderCache -> FinderOpts @@ -261,15 +270,19 @@ findPluginModule fc fopts units query Nothing mod_name = -- reading the interface for a module mentioned by another interface, -- for example (a "system import"). -findExactModule :: FinderCache -> FinderOpts -> UnitEnvGraph FinderOpts -> UnitState -> Maybe HomeUnit -> InstalledModule -> IO InstalledFindResult -findExactModule fc fopts other_fopts unit_state mhome_unit mod = do - case mhome_unit of +findExactModule :: FinderCache -> FinderOpts -> UnitEnvGraph FinderOpts -> UnitState -> Maybe HomeUnit -> InstalledModule -> IsBootInterface -> IO InstalledFindResult +findExactModule fc fopts other_fopts unit_state mhome_unit mod is_boot = do + res <- case mhome_unit of Just home_unit | isHomeInstalledModule home_unit mod -> findInstalledHomeModule fc fopts (homeUnitId home_unit) (moduleName mod) | Just home_fopts <- HUG.unitEnv_lookup_maybe (moduleUnit mod) other_fopts -> findInstalledHomeModule fc home_fopts (moduleUnit mod) (moduleName mod) _ -> findPackageModule fc unit_state fopts mod + case (res, is_boot) of + (InstalledFound loc, IsBoot) -> return (InstalledFound (addBootSuffixLocn loc)) + _ -> return res + -- ----------------------------------------------------------------------------- -- Helpers @@ -329,7 +342,7 @@ findLookupResult fc fopts r = case r of -- with just the location of the thing that was -- instantiated; you probably also need all of the -- implicit locations from the instances - InstalledFound loc _ -> return (Found loc m) + InstalledFound loc -> return (Found loc m) InstalledNoPackage _ -> return (NoPackage (moduleUnit m)) InstalledNotFound fp _ -> return (NotFound{ fr_paths = fmap unsafeDecodeUtf fp, fr_pkg = Just (moduleUnit m) , fr_pkgs_hidden = [] @@ -374,16 +387,18 @@ modLocationCache fc mod do_this = do addToFinderCache fc mod result return result -addModuleToFinder :: FinderCache -> Module -> ModLocation -> IO () -addModuleToFinder fc mod loc = do +addModuleToFinder :: FinderCache -> Module -> ModLocation -> HscSource -> IO () +addModuleToFinder fc mod loc src_flavour = do let imod = toUnitId <$> mod - addToFinderCache fc imod (InstalledFound loc imod) + unless (src_flavour == HsBootFile) $ + addToFinderCache fc imod (InstalledFound loc) -- This returns a module because it's more convenient for users -addHomeModuleToFinder :: FinderCache -> HomeUnit -> ModuleName -> ModLocation -> IO Module -addHomeModuleToFinder fc home_unit mod_name loc = do +addHomeModuleToFinder :: FinderCache -> HomeUnit -> ModuleName -> ModLocation -> HscSource -> IO Module +addHomeModuleToFinder fc home_unit mod_name loc src_flavour = do let mod = mkHomeInstalledModule home_unit mod_name - addToFinderCache fc mod (InstalledFound loc mod) + unless (src_flavour == HsBootFile) $ + addToFinderCache fc mod (InstalledFound loc) return (mkHomeModule home_unit mod_name) uncacheModule :: FinderCache -> HomeUnit -> ModuleName -> IO () @@ -399,7 +414,7 @@ findHomeModule fc fopts home_unit mod_name = do let uid = homeUnitAsUnit home_unit r <- findInstalledHomeModule fc fopts (homeUnitId home_unit) mod_name return $ case r of - InstalledFound loc _ -> Found loc (mkHomeModule home_unit mod_name) + InstalledFound loc -> Found loc (mkHomeModule home_unit mod_name) InstalledNoPackage _ -> NoPackage uid -- impossible InstalledNotFound fps _ -> NotFound { fr_paths = fmap unsafeDecodeUtf fps, @@ -424,7 +439,7 @@ findHomePackageModule fc fopts home_unit mod_name = do let uid = RealUnit (Definite home_unit) r <- findInstalledHomeModule fc fopts home_unit mod_name return $ case r of - InstalledFound loc _ -> Found loc (mkModule uid mod_name) + InstalledFound loc -> Found loc (mkModule uid mod_name) InstalledNoPackage _ -> NoPackage uid -- impossible InstalledNotFound fps _ -> NotFound { fr_paths = fmap unsafeDecodeUtf fps, @@ -494,7 +509,7 @@ findInstalledHomeModule fc fopts home_unit mod_name = do -- This is important only when compiling the base package (where GHC.Prim -- is a home module). if mod `installedModuleEq` gHC_PRIM - then return (InstalledFound (error "GHC.Prim ModLocation") mod) + then return (InstalledFound (error "GHC.Prim ModLocation")) else searchPathExts search_dirs mod exts -- | Prepend the working directory to the search path. @@ -527,7 +542,7 @@ findPackageModule_ fc fopts mod pkg_conf = do -- special case for GHC.Prim; we won't find it in the filesystem. if mod `installedModuleEq` gHC_PRIM - then return (InstalledFound (error "GHC.Prim ModLocation") mod) + then return (InstalledFound (error "GHC.Prim ModLocation")) else let @@ -551,7 +566,7 @@ findPackageModule_ fc fopts mod pkg_conf = do -- don't bother looking for it. let basename = unsafeEncodeUtf $ moduleNameSlashes (moduleName mod) loc = mk_hi_loc one basename - in return $ InstalledFound loc mod + in return $ InstalledFound loc _otherwise -> searchPathExts import_dirs mod [(package_hisuf, mk_hi_loc)] @@ -585,7 +600,7 @@ searchPathExts paths mod exts = search to_search search ((file, loc) : rest) = do b <- doesFileExist file if b - then return $ InstalledFound loc mod + then return $ InstalledFound loc else search rest mkHomeModLocationSearched :: FinderOpts -> ModuleName -> FileExt @@ -627,10 +642,12 @@ mkHomeModLocationSearched fopts mod suff path basename = -- ext -- The filename extension of the source file (usually "hs" or "lhs"). -mkHomeModLocation :: FinderOpts -> ModuleName -> OsPath -> ModLocation -mkHomeModLocation dflags mod src_filename = - let (basename,extension) = OsPath.splitExtension src_filename - in mkHomeModLocation2 dflags mod basename extension +mkHomeModLocation :: FinderOpts -> ModuleName -> OsPath -> FileExt -> HscSource -> ModLocation +mkHomeModLocation dflags mod src_basename ext hsc_src = + let loc = mkHomeModLocation2 dflags mod src_basename ext + in case hsc_src of + HsBootFile -> addBootSuffixLocnOut loc + _ -> loc mkHomeModLocation2 :: FinderOpts -> ModuleName ===================================== compiler/GHC/Unit/Finder/Types.hs ===================================== @@ -30,7 +30,7 @@ data FinderCache = FinderCache { fcModuleCache :: (IORef FinderCacheState) } data InstalledFindResult - = InstalledFound ModLocation InstalledModule + = InstalledFound ModLocation | InstalledNoPackage UnitId | InstalledNotFound [OsPath] (Maybe UnitId) ===================================== compiler/GHC/Unit/Module/Location.hs ===================================== @@ -13,8 +13,6 @@ module GHC.Unit.Module.Location ) , pattern ModLocation , addBootSuffix - , addBootSuffix_maybe - , addBootSuffixLocn_maybe , addBootSuffixLocn , addBootSuffixLocnOut , removeBootSuffix @@ -24,7 +22,6 @@ where import GHC.Prelude import GHC.Data.OsPath -import GHC.Unit.Types import GHC.Utils.Outputable import qualified System.OsString as OsString @@ -96,26 +93,10 @@ removeBootSuffix pathWithBootSuffix = Just path -> path Nothing -> error "removeBootSuffix: no -boot suffix" --- | Add the @-boot@ suffix if the @Bool@ argument is @True@ -addBootSuffix_maybe :: IsBootInterface -> OsPath -> OsPath -addBootSuffix_maybe is_boot path = case is_boot of - IsBoot -> addBootSuffix path - NotBoot -> path - -addBootSuffixLocn_maybe :: IsBootInterface -> ModLocation -> ModLocation -addBootSuffixLocn_maybe is_boot locn = case is_boot of - IsBoot -> addBootSuffixLocn locn - _ -> locn - -- | Add the @-boot@ suffix to all file paths associated with the module addBootSuffixLocn :: ModLocation -> ModLocation addBootSuffixLocn locn - = locn { ml_hs_file_ospath = fmap addBootSuffix (ml_hs_file_ospath locn) - , ml_hi_file_ospath = addBootSuffix (ml_hi_file_ospath locn) - , ml_dyn_hi_file_ospath = addBootSuffix (ml_dyn_hi_file_ospath locn) - , ml_obj_file_ospath = addBootSuffix (ml_obj_file_ospath locn) - , ml_dyn_obj_file_ospath = addBootSuffix (ml_dyn_obj_file_ospath locn) - , ml_hie_file_ospath = addBootSuffix (ml_hie_file_ospath locn) } + = addBootSuffixLocnOut locn { ml_hs_file_ospath = fmap addBootSuffix (ml_hs_file_ospath locn) } -- | Add the @-boot@ suffix to all output file paths associated with the -- module, not including the input file itself @@ -157,3 +138,5 @@ pattern ModLocation , ml_dyn_obj_file_ospath = unsafeEncodeUtf ml_dyn_obj_file , ml_hie_file_ospath = unsafeEncodeUtf ml_hie_file } + +{-# complete ModLocation #-} View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/b989904c813530b7f7c11da9de0ba64... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/b989904c813530b7f7c11da9de0ba64... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Torsten Schmits (@torsten.schmits)