ghc-lib-parser-9.14.1.20251220: The GHC API, decoupled from GHC versions

Safe Haskell | Ignore
Language | GHC2021

GHC.Unit.Module.Location

Description

Module location

Synopsis

- data ModLocation = OsPathModLocation {
  - ml_hs_file_ospath :: Maybe OsPath
  - ml_hi_file_ospath :: OsPath
  - ml_dyn_hi_file_ospath :: OsPath
  - ml_obj_file_ospath :: OsPath
  - ml_dyn_obj_file_ospath :: OsPath
  - ml_hie_file_ospath :: OsPath
  }
- pattern ModLocation :: Maybe FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> ModLocation
- addBootSuffix :: OsPath -> OsPath
- addBootSuffixLocn :: ModLocation -> ModLocation
- addBootSuffixLocnOut :: ModLocation -> ModLocation
- removeBootSuffix :: OsPath -> OsPath
- mkFileSrcSpan :: ModLocation -> SrcSpan

# Documentation

data ModLocation #

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_ospath and ml_obj_file_ospath 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

OsPathModLocation |
Fields ml_hs_file_ospath :: Maybe OsPath The source file, if we have one. Package modules probably don't have source files. ml_hi_file_ospath :: OsPath Where 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_ospath :: OsPath Where the .dyn_hi file is, whether or not it exists yet. ml_obj_file_ospath :: OsPath 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_ospath :: OsPath Where the .dy file is, whether or not it exists yet. ml_hie_file_ospath :: OsPath Where the .hie file is, whether or not it exists yet.

#### Instances

Instances details

Show ModLocation # |
Instance details Defined in GHC.Unit.Module.Location Methods showsPrec :: Int -> ModLocation -> ShowS # show :: ModLocation -> String # showList :: [ModLocation] -> ShowS #
Outputable ModLocation # |
Instance details Defined in GHC.Unit.Module.Location Methods ppr :: ModLocation -> SDoc #

pattern ModLocation :: Maybe FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> ModLocation #

addBootSuffix :: OsPath -> OsPath #

Add the `-boot` suffix to .hs, .hi and .o files

addBootSuffixLocn :: ModLocation -> ModLocation #

Add the `-boot` suffix to all file paths associated with the module

addBootSuffixLocnOut :: ModLocation -> ModLocation #

Add the `-boot` suffix to all output file paths associated with the module, not including the input file itself

removeBootSuffix :: OsPath -> OsPath #

Remove the `-boot` suffix to .hs, .hi and .o files

mkFileSrcSpan :: ModLocation -> SrcSpan #

Compute a `SrcSpan` from a `ModLocation`.