ghc-9.6.3: The GHC API

Safe Haskell | Safe-Inferred
Language | Haskell2010

GHC.HsToCore.Pmc.Utils

Description

Utility module for the pattern-match coverage checker.

Synopsis

- tracePm :: String -> SDoc -> DsM ()
- traceWhenFailPm :: String -> SDoc -> MaybeT DsM a -> MaybeT DsM a
- mkPmId :: Type -> DsM Id
- allPmCheckWarnings :: [WarningFlag]
- overlapping :: DynFlags -> HsMatchContext id -> Bool
- exhaustive :: DynFlags -> HsMatchContext id -> Bool
- redundantBang :: DynFlags -> Bool
- exhaustiveWarningFlag :: HsMatchContext id -> Maybe WarningFlag
- isMatchContextPmChecked :: DynFlags -> Origin -> HsMatchContext id -> Bool
- needToRunPmCheck :: DynFlags -> Origin -> Bool

# Documentation

tracePm :: String -> SDoc -> DsM () Source #

traceWhenFailPm :: String -> SDoc -> MaybeT DsM a -> MaybeT DsM a Source #

mkPmId :: Type -> DsM Id Source #

Generate a fresh `Id` of a given type

allPmCheckWarnings :: [WarningFlag] Source #

All warning flags that need to run the pattern match checker.

overlapping :: DynFlags -> HsMatchContext id -> Bool Source #

Check whether the redundancy checker should run (redundancy only)

exhaustive :: DynFlags -> HsMatchContext id -> Bool Source #

Check whether the exhaustiveness checker should run (exhaustiveness only)

redundantBang :: DynFlags -> Bool Source #

Check whether unnecessary bangs should be warned about

exhaustiveWarningFlag :: HsMatchContext id -> Maybe WarningFlag Source #

Denotes whether an exhaustiveness check is supported, and if so, via which `WarningFlag` it's controlled. Returns `Nothing` if check is not supported.

isMatchContextPmChecked :: DynFlags -> Origin -> HsMatchContext id -> Bool Source #

Check whether any part of pattern match checking is enabled for this `HsMatchContext` (does not matter whether it is the redundancy check or the exhaustiveness check).

needToRunPmCheck :: DynFlags -> Origin -> Bool Source #

Return True when any of the pattern match warnings (`allPmCheckWarnings`) are enabled, in which case we need to run the pattern match checker.