Safe Haskell | None |
---|---|
Language | GHC2021 |
Typechecking patterns
Synopsis
- tcLetPat :: (Name -> Maybe TcId) -> LetBndrSpec -> LPat GhcRn -> Scaled ExpSigmaTypeFRR -> TcM a -> TcM (LPat GhcTc, a)
- newLetBndr :: LetBndrSpec -> Name -> Mult -> TcType -> TcM TcId
- data LetBndrSpec
- tcCheckPat :: HsMatchContextRn -> LPat GhcRn -> Scaled TcSigmaTypeFRR -> TcM a -> TcM (LPat GhcTc, a)
- tcCheckPat_O :: HsMatchContextRn -> CtOrigin -> LPat GhcRn -> Scaled TcSigmaTypeFRR -> TcM a -> TcM (LPat GhcTc, a)
- tcInferPat :: FixedRuntimeRepContext -> HsMatchContextRn -> LPat GhcRn -> TcM a -> TcM ((LPat GhcTc, a), TcSigmaTypeFRR)
- tcMatchPats :: HsMatchContextRn -> [LPat GhcRn] -> [ExpPatType] -> TcM a -> TcM ([LPat GhcTc], a)
- addDataConStupidTheta :: DataCon -> [TcType] -> TcM ()
- isIrrefutableHsPatRnTcM :: Bool -> LPat GhcRn -> TcM Bool
Documentation
tcLetPat :: (Name -> Maybe TcId) -> LetBndrSpec -> LPat GhcRn -> Scaled ExpSigmaTypeFRR -> TcM a -> TcM (LPat GhcTc, a) Source #
newLetBndr :: LetBndrSpec -> Name -> Mult -> TcType -> TcM TcId Source #
data LetBndrSpec Source #
Instances
Outputable LetBndrSpec Source # | |
Defined in GHC.Tc.Gen.Pat ppr :: LetBndrSpec -> SDoc Source # |
tcCheckPat :: HsMatchContextRn -> LPat GhcRn -> Scaled TcSigmaTypeFRR -> TcM a -> TcM (LPat GhcTc, a) Source #
:: HsMatchContextRn | |
-> CtOrigin | origin to use if the type needs inst'ing |
-> LPat GhcRn | |
-> Scaled TcSigmaTypeFRR | |
-> TcM a | |
-> TcM (LPat GhcTc, a) |
A variant of tcPat
that takes a custom origin
tcInferPat :: FixedRuntimeRepContext -> HsMatchContextRn -> LPat GhcRn -> TcM a -> TcM ((LPat GhcTc, a), TcSigmaTypeFRR) Source #
:: HsMatchContextRn | |
-> [LPat GhcRn] | patterns |
-> [ExpPatType] | types of the patterns |
-> TcM a | checker for the body |
-> TcM ([LPat GhcTc], a) |
isIrrefutableHsPatRnTcM :: Bool -> LPat GhcRn -> TcM Bool Source #
Very similar to GHC.Tc.Pat.isIrrefutableHsPat, but doesn't typecheck the pattern
It does depend on the type checker monad (TcM
) however as we need to check ConPat case in more detail.
Specifically, we call tcLookupGlobal
to obtain constructor details from global packages
for a comprehensive irrefutability check and avoid false negatives. (testcase pattern-fails.hs)