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 :: ModuleName -> ParsedModule -> ParsedModule
- onRename :: 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
- 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
- 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] |