Module Location
Where a module lives on the file system: the actual locations 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.
The locations specified by a ModLocation may or may not 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.
Constructors
ModLocationml_hs_file :: Maybe FilePathThe source file, if we have one. Package modules probably don't have source files.
ml_hi_file :: FilePathWhere the .hi file is, whether or not it exists yet. Always of form foo.hi, even if there is an hi-boot file (we add the -boot suffix later)
ml_dyn_hi_file :: FilePathWhere the .dyn_hi file is, whether or not it exists yet.
ml_obj_file :: FilePathWhere 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 :: FilePathWhere the .dy file is, whether or not it exists yet.
ml_hie_file :: FilePathWhere the .hie file is, whether or not it exists yet.
Instances2Show, Outputable
Show ModLocationDefined in ghc-9.10.3 · GHC.Unit.Module.LocationOutputable ModLocationDefined in ghc-9.10.3 · GHC.Unit.Module.Location