ghc-9.6.3: The GHC API

Safe Haskell | Safe-Inferred
Language | Haskell2010

GHC.Driver.Phases

Synopsis

- data Phase
  - = Unlit HscSource
  - | Cpp HscSource
  - | HsPp HscSource
  - | Hsc HscSource
  - | Ccxx
  - | Cc
  - | Cobjc
  - | Cobjcxx
  - | HCc
  - | As Bool
  - | LlvmOpt
  - | LlvmLlc
  - | LlvmMangle
  - | CmmCpp
  - | Cmm
  - | MergeForeign
  - | Js
  - | StopLn
- happensBefore :: Platform -> Phase -> Phase -> Bool
- eqPhase :: Phase -> Phase -> Bool
- isStopLn :: Phase -> Bool
- startPhase :: String -> Phase
- phaseInputExt :: Phase -> String
- data StopPhase
  - = StopPreprocess
  - | StopC
  - | StopAs
  - | NoStop
- stopPhaseToPhase :: StopPhase -> Phase
- isHaskellishSuffix :: String -> Bool
- isHaskellSrcSuffix :: String -> Bool
- isBackpackishSuffix :: String -> Bool
- isObjectSuffix :: Platform -> String -> Bool
- isCishSuffix :: String -> Bool
- isDynLibSuffix :: Platform -> String -> Bool
- isHaskellUserSrcSuffix :: String -> Bool
- isHaskellSigSuffix :: String -> Bool
- isSourceSuffix :: String -> Bool
- isHaskellishTarget :: (String, Maybe Phase) -> Bool
- isHaskellishFilename :: FilePath -> Bool
- isHaskellSrcFilename :: FilePath -> Bool
- isHaskellSigFilename :: FilePath -> Bool
- isObjectFilename :: Platform -> FilePath -> Bool
- isCishFilename :: FilePath -> Bool
- isDynLibFilename :: Platform -> FilePath -> Bool
- isHaskellUserSrcFilename :: FilePath -> Bool
- isSourceFilename :: FilePath -> Bool
- phaseForeignLanguage :: Phase -> Maybe ForeignSrcLang

# Documentation

data Phase Source #

Untyped Phase description

Constructors

Unlit HscSource |
Cpp HscSource |
HsPp HscSource |
Hsc HscSource |
Ccxx |
Cc |
Cobjc |
Cobjcxx |
HCc |
As Bool |
LlvmOpt |
LlvmLlc |
LlvmMangle |
CmmCpp |
Cmm |
MergeForeign |
Js |
StopLn |

#### Instances

Instances details

Show Phase Source # |
Instance details Defined in GHC.Driver.Phases Methods showsPrec :: Int -> Phase -> ShowS Source # show :: Phase -> String Source # showList :: [Phase] -> ShowS Source #
Outputable Phase Source # |
Instance details Defined in GHC.Driver.Phases Methods ppr :: Phase -> SDoc Source #
Eq Phase Source # |
Instance details Defined in GHC.Driver.Phases Methods (==) :: Phase -> Phase -> Bool # (/=) :: Phase -> Phase -> Bool #

happensBefore :: Platform -> Phase -> Phase -> Bool Source #

eqPhase :: Phase -> Phase -> Bool Source #

isStopLn :: Phase -> Bool Source #

startPhase :: String -> Phase Source #

phaseInputExt :: Phase -> String Source #

data StopPhase Source #

Constructors

StopPreprocess

    -E

StopC

    -C

StopAs

    -S

NoStop

    -c

stopPhaseToPhase :: StopPhase -> Phase Source #

isHaskellishSuffix :: String -> Bool Source #

isHaskellSrcSuffix :: String -> Bool Source #

isBackpackishSuffix :: String -> Bool Source #

isObjectSuffix :: Platform -> String -> Bool Source #

isCishSuffix :: String -> Bool Source #

isDynLibSuffix :: Platform -> String -> Bool Source #

isHaskellUserSrcSuffix :: String -> Bool Source #

isHaskellSigSuffix :: String -> Bool Source #

isSourceSuffix :: String -> Bool Source #

isHaskellishTarget :: (String, Maybe Phase) -> Bool Source #

When we are given files (modified by -x arguments) we need to determine if they are Haskellish or not to figure out how we should try to compile it. The rules are:

1. If no -x flag was specified, we check to see if the file looks like a module name, has no extension, or has a Haskell source extension.
2. If an -x flag was specified, we just make sure the specified suffix is a Haskell one.

isHaskellishFilename :: FilePath -> Bool Source #

isHaskellSrcFilename :: FilePath -> Bool Source #

isHaskellSigFilename :: FilePath -> Bool Source #

isObjectFilename :: Platform -> FilePath -> Bool Source #

isCishFilename :: FilePath -> Bool Source #

isDynLibFilename :: Platform -> FilePath -> Bool Source #

isHaskellUserSrcFilename :: FilePath -> Bool Source #

isSourceFilename :: FilePath -> Bool Source #

phaseForeignLanguage :: Phase -> Maybe ForeignSrcLang Source #

Foreign language of the phase if the phase deals with a foreign code