| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Skeletest.Internal.GHC
Description
Provide a pure API for GHC internals.
All GHC operations should go through this API, to isolate the rest of the logic from GHC internals logic, which can include breaking changes between versions.
Synopsis
- type Plugin = Plugin
- data PluginDef = PluginDef {
- isPure :: Bool
- modifyParsed :: [CommandLineOption] -> ModuleName -> ParsedModule -> ParsedModule
- onRename :: [CommandLineOption] -> Ctx -> ModuleName -> HsExpr GhcRn -> HsExpr GhcRn
- data Ctx = Ctx {}
- type GhcRn = GhcPass 'Renamed
- mkPlugin :: PluginDef -> Plugin
- data ParsedModule = ParsedModule {
- moduleFuncs :: [(HsName GhcPs, Maybe FunDef)]
- data FunDef = FunDef {}
- data HsExpr p
- data HsExprData p
- = HsExprCon (HsName p)
- | HsExprVar (HsName p)
- | HsExprApps (HsExpr p) [HsExpr p]
- | HsExprOp (HsExpr p) (HsExpr p) (HsExpr p)
- | HsExprList [HsExpr p]
- | HsExprRecordCon (HsName p) [(HsName p, HsExpr p)]
- | HsExprLitString Text
- | HsExprLam [HsPat p] (HsExpr p)
- | HsExprCase (HsExpr p) [(HsPat p, HsExpr p)]
- | HsExprOther
- hsExprCon :: HsName p -> HsExpr p
- hsExprVar :: HsName p -> HsExpr p
- hsExprApps :: HsExpr p -> [HsExpr p] -> HsExpr p
- hsExprList :: [HsExpr p] -> HsExpr p
- hsExprRecordCon :: HsName p -> [(HsName p, HsExpr p)] -> HsExpr p
- hsExprLitString :: Text -> HsExpr p
- hsExprLam :: [HsPat p] -> HsExpr p -> HsExpr p
- hsExprCase :: HsExpr p -> [(HsPat p, HsExpr p)] -> HsExpr p
- getExpr :: HsExpr p -> HsExprData p
- getLoc :: HsExpr p -> Maybe SrcSpan
- renderHsExpr :: HsExpr GhcRn -> Text
- data HsType p
- = HsTypeCon (HsName p)
- | HsTypeApps (HsType p) [HsType p]
- | HsTypeTuple [HsType p]
- data HsPat p
- data HsName p
- hsName :: Name -> HsName p
- hsVarName :: Text -> HsName p
- hsFieldName :: Name -> String -> HsName p
- getHsName :: HsName p -> Text
Documentation
Our pure definition of PluginDef, agnostic of GHC version.
Constructors
| PluginDef | |
Fields
| |
ParsedModule
data ParsedModule Source #
Constructors
| ParsedModule | |
Fields
| |
Expressions
A Haskell expression that is either: 1. A parsed expression from the compiler * ghcExpr is Just * hsExpr is not HsExprOther if the expression is something we care about parsing, otherwise HsExprOther 3. A new expression we're creating * ghcExpr is Nothing * hsExpr is not HsExprOther
Invariants: * If ghcExpr is Just, hsExpr must not have been modified * if ghcExpr is Nothing, hsExpr is not HsExprOther
data HsExprData p Source #
Constructors
| HsExprCon (HsName p) | |
| HsExprVar (HsName p) | |
| HsExprApps (HsExpr p) [HsExpr p] | |
| HsExprOp (HsExpr p) (HsExpr p) (HsExpr p) | |
| HsExprList [HsExpr p] | |
| HsExprRecordCon (HsName p) [(HsName p, HsExpr p)] | |
| HsExprLitString Text | |
| HsExprLam [HsPat p] (HsExpr p) | |
| HsExprCase (HsExpr p) [(HsPat p, HsExpr p)] | |
| HsExprOther |
Instances
| Show (HsExprData p) Source # | |
Defined in Skeletest.Internal.GHC Methods showsPrec :: Int -> HsExprData p -> ShowS # show :: HsExprData p -> String # showList :: [HsExprData p] -> ShowS # | |
hsExprList :: [HsExpr p] -> HsExpr p Source #
hsExprLitString :: Text -> HsExpr p Source #
getExpr :: HsExpr p -> HsExprData p Source #
Types
Constructors
| HsTypeCon (HsName p) | |
| HsTypeApps (HsType p) [HsType p] | |
| HsTypeTuple [HsType p] |