summaryrefslogtreecommitdiff
path: root/compiler/GHC/Unit/Module
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Unit/Module')
-rw-r--r--compiler/GHC/Unit/Module/Graph.hs2
-rw-r--r--compiler/GHC/Unit/Module/Location.hs27
-rw-r--r--compiler/GHC/Unit/Module/ModSummary.hs4
3 files changed, 28 insertions, 5 deletions
diff --git a/compiler/GHC/Unit/Module/Graph.hs b/compiler/GHC/Unit/Module/Graph.hs
index 027cbef51b..bf7abfea99 100644
--- a/compiler/GHC/Unit/Module/Graph.hs
+++ b/compiler/GHC/Unit/Module/Graph.hs
@@ -204,7 +204,7 @@ showModMsg dflags recomp (ModuleNode (ExtendedModSummary mod_summary _)) =
op = normalise
mod = moduleName (ms_mod mod_summary)
mod_str = showPpr dflags mod ++ hscSourceString (ms_hsc_src mod_summary)
- dyn_file = op $ msDynObjFilePath mod_summary dflags
+ dyn_file = op $ msDynObjFilePath mod_summary
obj_file = case backend dflags of
Interpreter | recomp -> "interpreted"
NoBackend -> "nothing"
diff --git a/compiler/GHC/Unit/Module/Location.hs b/compiler/GHC/Unit/Module/Location.hs
index ff5354bfdb..866ccf127a 100644
--- a/compiler/GHC/Unit/Module/Location.hs
+++ b/compiler/GHC/Unit/Module/Location.hs
@@ -16,7 +16,7 @@ import GHC.Utils.Outputable
-- | Module Location
--
-- Where a module lives on the file system: the actual locations
--- of the .hs, .hi and .o files, if we have them.
+-- of the .hs, .hi, .dyn_hi, .o, .dyn_o and .hie files, if we have them.
--
-- For a module in another unit, the ml_hs_file and ml_obj_file components of
-- ModLocation are undefined.
@@ -25,6 +25,16 @@ import GHC.Utils.Outputable
-- correspond to actual files yet: for example, even if the object
-- file doesn't exist, the ModLocation still contains the path to
-- where the object file will reside if/when it is created.
+--
+-- The paths of anything which can affect recompilation should be placed inside
+-- ModLocation.
+--
+-- When a ModLocation is created none of the filepaths will have -boot suffixes.
+-- This is because in --make mode the ModLocation is put in the finder cache which
+-- is indexed by ModuleName, when a ModLocation is retrieved from the FinderCache
+-- the boot suffixes are appended.
+-- The other case is in -c mode, there the ModLocation immediately gets given the
+-- boot suffixes in mkOneShotModLocation.
data ModLocation
= ModLocation {
@@ -37,12 +47,20 @@ data ModLocation
-- yet. Always of form foo.hi, even if there is an
-- hi-boot file (we add the -boot suffix later)
+ ml_dyn_hi_file :: FilePath,
+ -- ^ Where the .dyn_hi file is, whether or not it exists
+ -- yet.
+
ml_obj_file :: FilePath,
-- ^ Where the .o file is, whether or not it exists yet.
-- (might not exist either because the module hasn't
-- been compiled yet, or because it is part of a
-- unit with a .a file)
+ ml_dyn_obj_file :: FilePath,
+ -- ^ Where the .dy file is, whether or not it exists
+ -- yet.
+
ml_hie_file :: FilePath
-- ^ Where the .hie file is, whether or not it exists
-- yet.
@@ -73,7 +91,9 @@ addBootSuffixLocn :: ModLocation -> ModLocation
addBootSuffixLocn locn
= locn { ml_hs_file = fmap addBootSuffix (ml_hs_file locn)
, ml_hi_file = addBootSuffix (ml_hi_file locn)
+ , ml_dyn_hi_file = addBootSuffix (ml_dyn_hi_file locn)
, ml_obj_file = addBootSuffix (ml_obj_file locn)
+ , ml_dyn_obj_file = addBootSuffix (ml_dyn_obj_file locn)
, ml_hie_file = addBootSuffix (ml_hie_file locn) }
-- | Add the @-boot@ suffix to all output file paths associated with the
@@ -81,7 +101,10 @@ addBootSuffixLocn locn
addBootSuffixLocnOut :: ModLocation -> ModLocation
addBootSuffixLocnOut locn
= locn { ml_hi_file = addBootSuffix (ml_hi_file locn)
+ , ml_dyn_hi_file = addBootSuffix (ml_dyn_hi_file locn)
, ml_obj_file = addBootSuffix (ml_obj_file locn)
- , ml_hie_file = addBootSuffix (ml_hie_file locn) }
+ , ml_dyn_obj_file = addBootSuffix (ml_dyn_obj_file locn)
+ , ml_hie_file = addBootSuffix (ml_hie_file locn)
+ }
diff --git a/compiler/GHC/Unit/Module/ModSummary.hs b/compiler/GHC/Unit/Module/ModSummary.hs
index 1a8cddec61..9cf736a37a 100644
--- a/compiler/GHC/Unit/Module/ModSummary.hs
+++ b/compiler/GHC/Unit/Module/ModSummary.hs
@@ -156,8 +156,8 @@ msHsFilePath ms = expectJust "msHsFilePath" (ml_hs_file (ms_location ms))
msHiFilePath ms = ml_hi_file (ms_location ms)
msObjFilePath ms = ml_obj_file (ms_location ms)
-msDynObjFilePath :: ModSummary -> DynFlags -> FilePath
-msDynObjFilePath ms dflags = dynamicOutputFile dflags (msObjFilePath ms)
+msDynObjFilePath :: ModSummary -> FilePath
+msDynObjFilePath ms = ml_dyn_obj_file (ms_location ms)
-- | Did this 'ModSummary' originate from a hs-boot file?
isBootSummary :: ModSummary -> IsBootInterface