GHC.Tc.Gen.Head

ghc-9.2.7: The GHC API

Safe Haskell | Safe-Inferred
Language | Haskell2010

GHC.Tc.Gen.Head

Synopsis

- data HsExprArg (p :: TcPass)
  - = EValArg {
    - eva_ctxt :: AppCtxt
    - eva_arg :: EValArg p
    - eva_arg_ty :: !(XEVAType p)
    }
  - | ETypeArg {
    - eva_ctxt :: AppCtxt
    - eva_hs_ty :: LHsWcType GhcRn
    - eva_ty :: !(XETAType p)
    }
  - | EPrag AppCtxt (HsPragE (GhcPass (XPass p)))
  - | EWrap EWrap
- data EValArg (p :: TcPass) where
  - ValArg :: LHsExpr (GhcPass (XPass p)) -> EValArg p
  - ValArgQL :: {..} -> EValArg 'TcpInst
- data TcPass
  - = TcpRn
  - | TcpInst
  - | TcpTc
- data AppCtxt
  - = VAExpansion (HsExpr GhcRn) SrcSpan
  - | VACall (HsExpr GhcRn) Int SrcSpan
- appCtxtLoc :: AppCtxt -> SrcSpan
- insideExpansion :: AppCtxt -> Bool
- splitHsApps :: HsExpr GhcRn -> ((HsExpr GhcRn, AppCtxt), [HsExprArg 'TcpRn])
- rebuildHsApps :: HsExpr GhcTc -> AppCtxt -> [HsExprArg 'TcpTc] -> HsExpr GhcTc
- addArgWrap :: HsWrapper -> [HsExprArg 'TcpInst] -> [HsExprArg 'TcpInst]
- isHsValArg :: HsExprArg id -> Bool
- countLeadingValArgs :: [HsExprArg id] -> Int
- isVisibleArg :: HsExprArg id -> Bool
- pprHsExprArgTc :: HsExprArg 'TcpInst -> SDoc
- tcInferAppHead :: (HsExpr GhcRn, AppCtxt) -> [HsExprArg 'TcpRn] -> Maybe TcRhoType -> TcM (HsExpr GhcTc, TcSigmaType)
- tcInferAppHead_maybe :: HsExpr GhcRn -> [HsExprArg 'TcpRn] -> Maybe TcRhoType -> TcM (Maybe (HsExpr GhcTc, TcSigmaType))
- tcInferId :: Name -> TcM (HsExpr GhcTc, TcSigmaType)
- tcCheckId :: Name -> ExpRhoType -> TcM (HsExpr GhcTc)
- obviousSig :: HsExpr GhcRn -> Maybe (LHsSigWcType GhcRn)
- addAmbiguousNameErr :: RdrName -> TcM ()
- tyConOf :: FamInstEnvs -> TcSigmaType -> Maybe TyCon
- tyConOfET :: FamInstEnvs -> ExpRhoType -> Maybe TyCon
- lookupParents :: Bool -> RdrName -> RnM [(RecSelParent, GlobalRdrElt)]
- fieldNotInType :: RecSelParent -> RdrName -> SDoc
- notSelector :: Name -> SDoc
- nonBidirectionalErr :: Outputable name => name -> SDoc
- addExprCtxt :: HsExpr GhcRn -> TcRn a -> TcRn a
- addFunResCtxt :: HsExpr GhcRn -> [HsExprArg 'TcpRn] -> TcType -> ExpRhoType -> TcM a -> TcM a

# Documentation

data HsExprArg (p :: TcPass) Source #

Constructors

EValArg |
Fields eva_ctxt :: AppCtxt eva_arg :: EValArg p eva_arg_ty :: !(XEVAType p)
ETypeArg |
Fields eva_ctxt :: AppCtxt eva_hs_ty :: LHsWcType GhcRn eva_ty :: !(XETAType p)
EPrag AppCtxt (HsPragE (GhcPass (XPass p))) |
EWrap EWrap |

#### Instances

Instances details

OutputableBndrId (XPass p) => Outputable (HsExprArg p) Source # |
Instance details Defined in GHC.Tc.Gen.Head Methods ppr :: HsExprArg p -> SDoc Source #

data EValArg (p :: TcPass) where Source #

Constructors

ValArg :: LHsExpr (GhcPass (XPass p)) -> EValArg p |
ValArgQL |
Fields :: { va_expr :: LHsExpr GhcRn , va_fun :: (HsExpr GhcTc, AppCtxt) , va_args :: [HsExprArg 'TcpInst] , va_ty :: TcRhoType } -> EValArg 'TcpInst

#### Instances

Instances details

OutputableBndrId (XPass p) => Outputable (EValArg p) Source # |
Instance details Defined in GHC.Tc.Gen.Head Methods ppr :: EValArg p -> SDoc Source #

data TcPass Source #

Constructors

TcpRn |
TcpInst |
TcpTc |

data AppCtxt Source #

Constructors

VAExpansion (HsExpr GhcRn) SrcSpan |
VACall (HsExpr GhcRn) Int SrcSpan |

#### Instances

Instances details

Outputable AppCtxt Source # |
Instance details Defined in GHC.Tc.Gen.Head Methods ppr :: AppCtxt -> SDoc Source #

appCtxtLoc :: AppCtxt -> SrcSpan Source #

insideExpansion :: AppCtxt -> Bool Source #

splitHsApps :: HsExpr GhcRn -> ((HsExpr GhcRn, AppCtxt), [HsExprArg 'TcpRn]) Source #

rebuildHsApps :: HsExpr GhcTc -> AppCtxt -> [HsExprArg 'TcpTc] -> HsExpr GhcTc Source #

addArgWrap :: HsWrapper -> [HsExprArg 'TcpInst] -> [HsExprArg 'TcpInst] Source #

isHsValArg :: HsExprArg id -> Bool Source #

countLeadingValArgs :: [HsExprArg id] -> Int Source #

isVisibleArg :: HsExprArg id -> Bool Source #

pprHsExprArgTc :: HsExprArg 'TcpInst -> SDoc Source #

tcInferAppHead :: (HsExpr GhcRn, AppCtxt) -> [HsExprArg 'TcpRn] -> Maybe TcRhoType -> TcM (HsExpr GhcTc, TcSigmaType) Source #

tcInferAppHead_maybe :: HsExpr GhcRn -> [HsExprArg 'TcpRn] -> Maybe TcRhoType -> TcM (Maybe (HsExpr GhcTc, TcSigmaType)) Source #

tcInferId :: Name -> TcM (HsExpr GhcTc, TcSigmaType) Source #

tcCheckId :: Name -> ExpRhoType -> TcM (HsExpr GhcTc) Source #

obviousSig :: HsExpr GhcRn -> Maybe (LHsSigWcType GhcRn) Source #

addAmbiguousNameErr :: RdrName -> TcM () Source #

This name really is ambiguous, so add a suitable "ambiguous occurrence" error, then continue

tyConOf :: FamInstEnvs -> TcSigmaType -> Maybe TyCon Source #

tyConOfET :: FamInstEnvs -> ExpRhoType -> Maybe TyCon Source #

lookupParents :: Bool -> RdrName -> RnM [(RecSelParent, GlobalRdrElt)] Source #

fieldNotInType :: RecSelParent -> RdrName -> SDoc Source #

notSelector :: Name -> SDoc Source #

nonBidirectionalErr :: Outputable name => name -> SDoc Source #

addExprCtxt :: HsExpr GhcRn -> TcRn a -> TcRn a Source #

addFunResCtxt :: HsExpr GhcRn -> [HsExprArg 'TcpRn] -> TcType -> ExpRhoType -> TcM a -> TcM a Source #