GHC.Types.Basic

ghc-9.10.0.20240328: The GHC API

Safe Haskell | None
Language | GHC2021

GHC.Types.Basic

Contents

- The OneShotInfo type
- Orphan instances

Synopsis

- data LeftOrRight
  - = CLeft
  - | CRight
- pickLR :: LeftOrRight -> (a, a) -> a
- type ConTag = Int
- type ConTagZ = Int
- fIRST_TAG :: ConTag
- type Arity = Int
- type VisArity = Int
- type RepArity = Int
- type JoinArity = Int
- type FullArgCount = Int
- data JoinPointHood
  - = JoinPoint !Int
  - | NotJoinPoint
- isJoinPoint :: JoinPointHood -> Bool
- data Alignment
- mkAlignment :: Int -> Alignment
- alignmentOf :: Int -> Alignment
- alignmentBytes :: Alignment -> Int
- data PromotionFlag
  - = NotPromoted
  - | IsPromoted
- isPromoted :: PromotionFlag -> Bool
- data FunctionOrData
  - = IsFunction
  - | IsData
- data RecFlag
  - = Recursive
  - | NonRecursive
- isRec :: RecFlag -> Bool
- isNonRec :: RecFlag -> Bool
- boolToRecFlag :: Bool -> RecFlag
- data Origin
  - = FromSource
  - | Generated GenReason DoPmc
- isGenerated :: Origin -> Bool
- data DoPmc
  - = SkipPmc
  - | DoPmc
- requiresPMC :: Origin -> Bool
- data GenReason
  - = DoExpansion HsDoFlavour
  - | OtherExpansion
- isDoExpansionGenerated :: Origin -> Bool
- doExpansionFlavour :: Origin -> Maybe HsDoFlavour
- doExpansionOrigin :: HsDoFlavour -> Origin
- type RuleName = FastString
- pprRuleName :: RuleName -> SDoc
- data TopLevelFlag
  - = TopLevel
  - | NotTopLevel
- isTopLevel :: TopLevelFlag -> Bool
- isNotTopLevel :: TopLevelFlag -> Bool
- data OverlapFlag = OverlapFlag {
  - overlapMode :: OverlapMode
  - isSafeOverlap :: Bool
  }
- data OverlapMode
  - = NoOverlap SourceText
  - | Overlappable SourceText
  - | Overlapping SourceText
  - | Overlaps SourceText
  - | Incoherent SourceText
  - | NonCanonical SourceText
- setOverlapModeMaybe :: OverlapFlag -> Maybe OverlapMode -> OverlapFlag
- hasOverlappingFlag :: OverlapMode -> Bool
- hasOverlappableFlag :: OverlapMode -> Bool
- hasIncoherentFlag :: OverlapMode -> Bool
- hasNonCanonicalFlag :: OverlapMode -> Bool
- data Boxity
  - = Boxed
  - | Unboxed
- isBoxed :: Boxity -> Bool
- data CbvMark
  - = MarkedCbv
  - | NotMarkedCbv
- isMarkedCbv :: CbvMark -> Bool
- newtype PprPrec = PprPrec Int
- topPrec :: PprPrec
- sigPrec :: PprPrec
- opPrec :: PprPrec
- funPrec :: PprPrec
- starPrec :: PprPrec
- appPrec :: PprPrec
- maxPrec :: PprPrec
- maybeParen :: PprPrec -> PprPrec -> SDoc -> SDoc
- data TupleSort
  - = BoxedTuple
  - | UnboxedTuple
  - | ConstraintTuple
- tupleSortBoxity :: TupleSort -> Boxity
- boxityTupleSort :: Boxity -> TupleSort
- tupleParens :: TupleSort -> SDoc -> SDoc
- data UnboxedTupleOrSum
  - = UnboxedTupleType
  - | UnboxedSumType
- unboxedTupleOrSumExtension :: UnboxedTupleOrSum -> Extension
- sumParens :: SDoc -> SDoc
- pprAlternative :: (a -> SDoc) -> a -> ConTag -> Arity -> SDoc
- data OneShotInfo
  - = NoOneShotInfo
  - | OneShotLam
- noOneShotInfo :: OneShotInfo
- hasNoOneShotInfo :: OneShotInfo -> Bool
- isOneShotInfo :: OneShotInfo -> Bool
- bestOneShot :: OneShotInfo -> OneShotInfo -> OneShotInfo
- worstOneShot :: OneShotInfo -> OneShotInfo -> OneShotInfo
- data OccInfo
  - = ManyOccs {
    - occ_tail :: !TailCallInfo
    }
  - | IAmDead
  - | OneOcc {
    - occ_in_lam :: !InsideLam
    - occ_n_br :: !BranchCount
    - occ_int_cxt :: !InterestingCxt
    - occ_tail :: !TailCallInfo
    }
  - | IAmALoopBreaker {
    - occ_rules_only :: !RulesOnly
    - occ_tail :: !TailCallInfo
    }
- noOccInfo :: OccInfo
- seqOccInfo :: OccInfo -> ()
- zapFragileOcc :: OccInfo -> OccInfo
- isOneOcc :: OccInfo -> Bool
- isDeadOcc :: OccInfo -> Bool
- isStrongLoopBreaker :: OccInfo -> Bool
- isWeakLoopBreaker :: OccInfo -> Bool
- isManyOccs :: OccInfo -> Bool
- isNoOccInfo :: OccInfo -> Bool
- strongLoopBreaker :: OccInfo
- weakLoopBreaker :: OccInfo
- data InsideLam
  - = IsInsideLam
  - | NotInsideLam
- type BranchCount = Int
- oneBranch :: BranchCount
- data InterestingCxt
  - = IsInteresting
  - | NotInteresting
- data TailCallInfo
  - = AlwaysTailCalled !JoinArity
  - | NoTailCallInfo
- tailCallInfo :: OccInfo -> TailCallInfo
- zapOccTailCallInfo :: OccInfo -> OccInfo
- isAlwaysTailCalled :: OccInfo -> Bool
- data EP a = EP {
  - fromEP :: a
  - toEP :: a
  }
- data DefMethSpec ty
  - = VanillaDM
  - | GenericDM ty
- data SwapFlag
  - = NotSwapped
  - | IsSwapped
- flipSwap :: SwapFlag -> SwapFlag
- unSwap :: SwapFlag -> (a -> a -> b) -> a -> a -> b
- isSwapped :: SwapFlag -> Bool
- data CompilerPhase
  - = InitialPhase
  - | Phase PhaseNum
  - | FinalPhase
- type PhaseNum = Int
- beginPhase :: Activation -> CompilerPhase
- nextPhase :: CompilerPhase -> CompilerPhase
- laterPhase :: CompilerPhase -> CompilerPhase -> CompilerPhase
- data Activation
  - = AlwaysActive
  - | ActiveBefore SourceText PhaseNum
  - | ActiveAfter SourceText PhaseNum
  - | FinalActive
  - | NeverActive
- isActive :: CompilerPhase -> Activation -> Bool
- competesWith :: Activation -> Activation -> Bool
- isNeverActive :: Activation -> Bool
- isAlwaysActive :: Activation -> Bool
- activeInFinalPhase :: Activation -> Bool
- activateAfterInitial :: Activation
- activateDuringFinal :: Activation
- activeAfter :: CompilerPhase -> Activation
- data RuleMatchInfo
  - = ConLike
  - | FunLike
- isConLike :: RuleMatchInfo -> Bool
- isFunLike :: RuleMatchInfo -> Bool
- data InlineSpec
  - = Inline SourceText
  - | Inlinable SourceText
  - | NoInline SourceText
  - | Opaque SourceText
  - | NoUserInlinePrag
- noUserInlineSpec :: InlineSpec -> Bool
- data InlinePragma = InlinePragma {
  - inl_src :: SourceText
  - inl_inline :: InlineSpec
  - inl_sat :: Maybe Arity
  - inl_act :: Activation
  - inl_rule :: RuleMatchInfo
  }
- defaultInlinePragma :: InlinePragma
- alwaysInlinePragma :: InlinePragma
- neverInlinePragma :: InlinePragma
- dfunInlinePragma :: InlinePragma
- isDefaultInlinePragma :: InlinePragma -> Bool
- isInlinePragma :: InlinePragma -> Bool
- isInlinablePragma :: InlinePragma -> Bool
- isNoInlinePragma :: InlinePragma -> Bool
- isOpaquePragma :: InlinePragma -> Bool
- isAnyInlinePragma :: InlinePragma -> Bool
- alwaysInlineConLikePragma :: InlinePragma
- inlinePragmaSource :: InlinePragma -> SourceText
- inlinePragmaName :: InlineSpec -> SDoc
- inlineSpecSource :: InlineSpec -> SourceText
- inlinePragmaSpec :: InlinePragma -> InlineSpec
- inlinePragmaSat :: InlinePragma -> Maybe Arity
- inlinePragmaActivation :: InlinePragma -> Activation
- inlinePragmaRuleMatchInfo :: InlinePragma -> RuleMatchInfo
- setInlinePragmaActivation :: InlinePragma -> Activation -> InlinePragma
- setInlinePragmaRuleMatchInfo :: InlinePragma -> RuleMatchInfo -> InlinePragma
- pprInline :: InlinePragma -> SDoc
- pprInlineDebug :: InlinePragma -> SDoc
- data UnfoldingSource
  - = VanillaSrc
  - | StableUserSrc
  - | StableSystemSrc
  - | CompulsorySrc
- isStableSource :: UnfoldingSource -> Bool
- isStableUserSource :: UnfoldingSource -> Bool
- isStableSystemSource :: UnfoldingSource -> Bool
- isCompulsorySource :: UnfoldingSource -> Bool
- data SuccessFlag
  - = Succeeded
  - | Failed
- succeeded :: SuccessFlag -> Bool
- failed :: SuccessFlag -> Bool
- successIf :: Bool -> SuccessFlag
- data IntWithInf
- infinity :: IntWithInf
- treatZeroAsInf :: Int -> IntWithInf
- subWithInf :: IntWithInf -> Int -> IntWithInf
- mkIntWithInf :: Int -> IntWithInf
- intGtLimit :: Int -> IntWithInf -> Bool
- data TypeOrKind
  - = TypeLevel
  - | KindLevel
- isTypeLevel :: TypeOrKind -> Bool
- isKindLevel :: TypeOrKind -> Bool
- data Levity
  - = Lifted
  - | Unlifted
- mightBeLifted :: Maybe Levity -> Bool
- mightBeUnlifted :: Maybe Levity -> Bool
- data TypeOrConstraint
  - = TypeLike
  - | ConstraintLike
- data TyConFlavour tc
  - = ClassFlavour
  - | TupleFlavour Boxity
  - | SumFlavour
  - | DataTypeFlavour
  - | NewtypeFlavour
  - | AbstractTypeFlavour
  - | OpenFamilyFlavour TypeOrData (Maybe tc)
  - | ClosedTypeFamilyFlavour
  - | TypeSynonymFlavour
  - | BuiltInTypeFlavour
  - | PromotedDataConFlavour
- data TypeOrData
  - = IAmData
  - | IAmType
- tyConFlavourAssoc_maybe :: TyConFlavour tc -> Maybe tc
- data NonStandardDefaultingStrategy
  - = DefaultNonStandardTyVars
  - | TryNotToDefaultNonStandardTyVars
- data DefaultingStrategy
  - = DefaultKindVars
  - | NonStandardDefaulting NonStandardDefaultingStrategy
- defaultNonStandardTyVars :: DefaultingStrategy -> Bool
- data ForeignSrcLang
  - = LangC
  - | LangCxx
  - | LangObjc
  - | LangObjcxx
  - | LangAsm
  - | LangJs
  - | RawObject

# Documentation

data LeftOrRight Source #

Constructors

CLeft |
CRight |

#### Instances

Instances details

Binary LeftOrRight Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> LeftOrRight -> IO () Source # put :: BinHandle -> LeftOrRight -> IO (Bin LeftOrRight) Source # get :: BinHandle -> IO LeftOrRight Source #
Outputable LeftOrRight Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: LeftOrRight -> SDoc Source #
Data LeftOrRight Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LeftOrRight -> c LeftOrRight # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LeftOrRight # toConstr :: LeftOrRight -> Constr # dataTypeOf :: LeftOrRight -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LeftOrRight) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LeftOrRight) # gmapT :: (forall b. Data b => b -> b) -> LeftOrRight -> LeftOrRight # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LeftOrRight -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LeftOrRight -> r # gmapQ :: (forall d. Data d => d -> u) -> LeftOrRight -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> LeftOrRight -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> LeftOrRight -> m LeftOrRight # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LeftOrRight -> m LeftOrRight # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LeftOrRight -> m LeftOrRight #
Eq LeftOrRight Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: LeftOrRight -> LeftOrRight -> Bool # (/=) :: LeftOrRight -> LeftOrRight -> Bool #

pickLR :: LeftOrRight -> (a, a) -> a Source #

type ConTag = Int Source #

A *one-index* constructor tag

Type of the tags associated with each constructor possibility or superclass selector

type ConTagZ = Int Source #

A *zero-indexed* constructor tag

fIRST_TAG :: ConTag Source #

Tags are allocated from here for real constructors or for superclass selectors

type Arity = Int Source #

The number of value arguments that can be applied to a value before it does "real work". So: fib 100 has arity 0 x -> fib x has arity 1 See also Note [Definition of arity] in GHC.Core.Opt.Arity

type VisArity = Int Source #

Syntactic (visibility) arity, i.e. the number of visible arguments. See Note [Visibility and arity]

type RepArity = Int Source #

Representation Arity

The number of represented arguments that can be applied to a value before it does "real work". So: fib 100 has representation arity 0 x -> fib x has representation arity 1 (# x, y #) -> fib (x + y) has representation arity 2

type JoinArity = Int Source #

The number of arguments that a join point takes. Unlike the arity of a function, this is a purely syntactic property and is fixed when the join point is created (or converted from a value). Both type and value arguments are counted.

type FullArgCount = Int Source #

FullArgCount is the number of type or value arguments in an application, or the number of type or value binders in a lambda. Note: it includes both type and value arguments!

data JoinPointHood Source #

Constructors

JoinPoint !Int |
NotJoinPoint |

#### Instances

Instances details

NFData JoinPointHood Source # |
Instance details Defined in GHC.Utils.Outputable Methods rnf :: JoinPointHood -> () Source #
Binary JoinPointHood Source # |
Instance details Defined in GHC.Utils.Binary Methods put_ :: BinHandle -> JoinPointHood -> IO () Source # put :: BinHandle -> JoinPointHood -> IO (Bin JoinPointHood) Source # get :: BinHandle -> IO JoinPointHood Source #
Outputable JoinPointHood Source # |
Instance details Defined in GHC.Utils.Outputable Methods ppr :: JoinPointHood -> SDoc Source #
Eq JoinPointHood Source # |
Instance details Defined in GHC.Utils.Outputable Methods (==) :: JoinPointHood -> JoinPointHood -> Bool # (/=) :: JoinPointHood -> JoinPointHood -> Bool #

isJoinPoint :: JoinPointHood -> Bool Source #

data Alignment Source #

A power-of-two alignment

#### Instances

Instances details

Outputable Alignment Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: Alignment -> SDoc Source #
Eq Alignment Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: Alignment -> Alignment -> Bool # (/=) :: Alignment -> Alignment -> Bool #
Ord Alignment Source # |
Instance details Defined in GHC.Types.Basic Methods compare :: Alignment -> Alignment -> Ordering # (<) :: Alignment -> Alignment -> Bool # (<=) :: Alignment -> Alignment -> Bool # (>) :: Alignment -> Alignment -> Bool # (>=) :: Alignment -> Alignment -> Bool # max :: Alignment -> Alignment -> Alignment # min :: Alignment -> Alignment -> Alignment #
OutputableP env Alignment Source # |
Instance details Defined in GHC.Types.Basic Methods pdoc :: env -> Alignment -> SDoc Source #

mkAlignment :: Int -> Alignment Source #

alignmentOf :: Int -> Alignment Source #

alignmentBytes :: Alignment -> Int Source #

data PromotionFlag Source #

Constructors

NotPromoted |
IsPromoted |

#### Instances

Instances details

Binary PromotionFlag Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> PromotionFlag -> IO () Source # put :: BinHandle -> PromotionFlag -> IO (Bin PromotionFlag) Source # get :: BinHandle -> IO PromotionFlag Source #
Outputable PromotionFlag Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: PromotionFlag -> SDoc Source #
Data PromotionFlag Source # |
Instance details Defined in Language.Haskell.Syntax.Type Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PromotionFlag -> c PromotionFlag # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PromotionFlag # toConstr :: PromotionFlag -> Constr # dataTypeOf :: PromotionFlag -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PromotionFlag) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PromotionFlag) # gmapT :: (forall b. Data b => b -> b) -> PromotionFlag -> PromotionFlag # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PromotionFlag -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PromotionFlag -> r # gmapQ :: (forall d. Data d => d -> u) -> PromotionFlag -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> PromotionFlag -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> PromotionFlag -> m PromotionFlag # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PromotionFlag -> m PromotionFlag # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PromotionFlag -> m PromotionFlag #
Eq PromotionFlag Source # |
Instance details Defined in Language.Haskell.Syntax.Type Methods (==) :: PromotionFlag -> PromotionFlag -> Bool # (/=) :: PromotionFlag -> PromotionFlag -> Bool #

isPromoted :: PromotionFlag -> Bool Source #

data FunctionOrData Source #

Constructors

IsFunction |
IsData |

#### Instances

Instances details

Binary FunctionOrData Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> FunctionOrData -> IO () Source # put :: BinHandle -> FunctionOrData -> IO (Bin FunctionOrData) Source # get :: BinHandle -> IO FunctionOrData Source #
Outputable FunctionOrData Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: FunctionOrData -> SDoc Source #
Data FunctionOrData Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FunctionOrData -> c FunctionOrData # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FunctionOrData # toConstr :: FunctionOrData -> Constr # dataTypeOf :: FunctionOrData -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FunctionOrData) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FunctionOrData) # gmapT :: (forall b. Data b => b -> b) -> FunctionOrData -> FunctionOrData # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FunctionOrData -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FunctionOrData -> r # gmapQ :: (forall d. Data d => d -> u) -> FunctionOrData -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FunctionOrData -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FunctionOrData -> m FunctionOrData # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FunctionOrData -> m FunctionOrData # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FunctionOrData -> m FunctionOrData #
Eq FunctionOrData Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: FunctionOrData -> FunctionOrData -> Bool # (/=) :: FunctionOrData -> FunctionOrData -> Bool #
Ord FunctionOrData Source # |
Instance details Defined in GHC.Types.Basic Methods compare :: FunctionOrData -> FunctionOrData -> Ordering # (<) :: FunctionOrData -> FunctionOrData -> Bool # (<=) :: FunctionOrData -> FunctionOrData -> Bool # (>) :: FunctionOrData -> FunctionOrData -> Bool # (>=) :: FunctionOrData -> FunctionOrData -> Bool # max :: FunctionOrData -> FunctionOrData -> FunctionOrData # min :: FunctionOrData -> FunctionOrData -> FunctionOrData #

data RecFlag Source #

Recursivity Flag

Constructors

Recursive |
NonRecursive |

#### Instances

Instances details

Binary RecFlag Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> RecFlag -> IO () Source # put :: BinHandle -> RecFlag -> IO (Bin RecFlag) Source # get :: BinHandle -> IO RecFlag Source #
Outputable RecFlag Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: RecFlag -> SDoc Source #
Data RecFlag Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RecFlag -> c RecFlag # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RecFlag # toConstr :: RecFlag -> Constr # dataTypeOf :: RecFlag -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RecFlag) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RecFlag) # gmapT :: (forall b. Data b => b -> b) -> RecFlag -> RecFlag # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RecFlag -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RecFlag -> r # gmapQ :: (forall d. Data d => d -> u) -> RecFlag -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> RecFlag -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RecFlag -> m RecFlag # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RecFlag -> m RecFlag # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RecFlag -> m RecFlag #
Eq RecFlag Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: RecFlag -> RecFlag -> Bool # (/=) :: RecFlag -> RecFlag -> Bool #

isRec :: RecFlag -> Bool Source #

isNonRec :: RecFlag -> Bool Source #

boolToRecFlag :: Bool -> RecFlag Source #

data Origin Source #

Was this piece of code user-written or generated by the compiler?

See Note [Generated code and pattern-match checking].

Constructors

FromSource |
Generated GenReason DoPmc |

#### Instances

Instances details

Outputable Origin Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: Origin -> SDoc Source #
Data Origin Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Origin -> c Origin # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Origin # toConstr :: Origin -> Constr # dataTypeOf :: Origin -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Origin) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Origin) # gmapT :: (forall b. Data b => b -> b) -> Origin -> Origin # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Origin -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Origin -> r # gmapQ :: (forall d. Data d => d -> u) -> Origin -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Origin -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Origin -> m Origin # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Origin -> m Origin # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Origin -> m Origin #
Eq Origin Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: Origin -> Origin -> Bool # (/=) :: Origin -> Origin -> Bool #

isGenerated :: Origin -> Bool Source #

data DoPmc Source #

Whether to run pattern-match checks in generated code.

See Note [Generated code and pattern-match checking].

Constructors

SkipPmc |
DoPmc |

#### Instances

Instances details

Outputable DoPmc Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: DoPmc -> SDoc Source #
Data DoPmc Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DoPmc -> c DoPmc # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DoPmc # toConstr :: DoPmc -> Constr # dataTypeOf :: DoPmc -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DoPmc) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DoPmc) # gmapT :: (forall b. Data b => b -> b) -> DoPmc -> DoPmc # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DoPmc -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DoPmc -> r # gmapQ :: (forall d. Data d => d -> u) -> DoPmc -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> DoPmc -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DoPmc -> m DoPmc # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DoPmc -> m DoPmc # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DoPmc -> m DoPmc #
Eq DoPmc Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: DoPmc -> DoPmc -> Bool # (/=) :: DoPmc -> DoPmc -> Bool #

requiresPMC :: Origin -> Bool Source #

Does this `Origin` require us to run pattern-match checking, or should we skip these checks?

See Note [Generated code and pattern-match checking].

data GenReason Source #

This metadata stores the information as to why was the piece of code generated It is useful for generating the right error context See Part 3 in Note [Expanding HsDo with XXExprGhcRn] in `Do`

Constructors

DoExpansion HsDoFlavour |
OtherExpansion |

#### Instances

Instances details

Outputable GenReason Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: GenReason -> SDoc Source #
Data GenReason Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GenReason -> c GenReason # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c GenReason # toConstr :: GenReason -> Constr # dataTypeOf :: GenReason -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c GenReason) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c GenReason) # gmapT :: (forall b. Data b => b -> b) -> GenReason -> GenReason # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GenReason -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GenReason -> r # gmapQ :: (forall d. Data d => d -> u) -> GenReason -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> GenReason -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> GenReason -> m GenReason # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GenReason -> m GenReason # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GenReason -> m GenReason #
Eq GenReason Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: GenReason -> GenReason -> Bool # (/=) :: GenReason -> GenReason -> Bool #

isDoExpansionGenerated :: Origin -> Bool Source #

doExpansionFlavour :: Origin -> Maybe HsDoFlavour Source #

doExpansionOrigin :: HsDoFlavour -> Origin Source #

type RuleName = FastString Source #

pprRuleName :: RuleName -> SDoc Source #

data TopLevelFlag Source #

Constructors

TopLevel |
NotTopLevel |

#### Instances

Instances details

Outputable TopLevelFlag Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: TopLevelFlag -> SDoc Source #
Data TopLevelFlag Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TopLevelFlag -> c TopLevelFlag # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TopLevelFlag # toConstr :: TopLevelFlag -> Constr # dataTypeOf :: TopLevelFlag -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TopLevelFlag) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TopLevelFlag) # gmapT :: (forall b. Data b => b -> b) -> TopLevelFlag -> TopLevelFlag # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TopLevelFlag -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TopLevelFlag -> r # gmapQ :: (forall d. Data d => d -> u) -> TopLevelFlag -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> TopLevelFlag -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TopLevelFlag -> m TopLevelFlag # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TopLevelFlag -> m TopLevelFlag # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TopLevelFlag -> m TopLevelFlag #

isTopLevel :: TopLevelFlag -> Bool Source #

isNotTopLevel :: TopLevelFlag -> Bool Source #

data OverlapFlag Source #

The semantics allowed for overlapping instances for a particular instance. See Note [Safe Haskell isSafeOverlap] in GHC.Core.InstEnv for a explanation of the `isSafeOverlap` field.

- `AnnKeywordId` : `AnnOpen` `'{-# OVERLAPPABLE'` or `'{-# OVERLAPPING'` or `'{-# OVERLAPS'` or `'{-# INCOHERENT'`, `AnnClose` ``#-}``,

Constructors

OverlapFlag |
Fields overlapMode :: OverlapMode isSafeOverlap :: Bool

#### Instances

Instances details

Binary OverlapFlag Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> OverlapFlag -> IO () Source # put :: BinHandle -> OverlapFlag -> IO (Bin OverlapFlag) Source # get :: BinHandle -> IO OverlapFlag Source #
Outputable OverlapFlag Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: OverlapFlag -> SDoc Source #
Data OverlapFlag Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OverlapFlag -> c OverlapFlag # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OverlapFlag # toConstr :: OverlapFlag -> Constr # dataTypeOf :: OverlapFlag -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c OverlapFlag) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OverlapFlag) # gmapT :: (forall b. Data b => b -> b) -> OverlapFlag -> OverlapFlag # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OverlapFlag -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OverlapFlag -> r # gmapQ :: (forall d. Data d => d -> u) -> OverlapFlag -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> OverlapFlag -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> OverlapFlag -> m OverlapFlag # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OverlapFlag -> m OverlapFlag # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OverlapFlag -> m OverlapFlag #
Eq OverlapFlag Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: OverlapFlag -> OverlapFlag -> Bool # (/=) :: OverlapFlag -> OverlapFlag -> Bool #

data OverlapMode Source #

Constructors

NoOverlap SourceText | This instance must not overlap another `NoOverlap` instance. However, it may be overlapped by `Overlapping` instances, and it may overlap `Overlappable` instances.
Overlappable SourceText | Silently ignore this instance if you find a more specific one that matches the constraint you are trying to resolve Example: constraint (Foo [Int]) instance Foo [Int] instance {-# OVERLAPPABLE #-} Foo [a] Since the second instance has the Overlappable flag, the first instance will be chosen (otherwise its ambiguous which to choose)
Overlapping SourceText | Silently ignore any more general instances that may be used to solve the constraint. Example: constraint (Foo [Int]) instance {-# OVERLAPPING #-} Foo [Int] instance Foo [a] Since the first instance has the Overlapping flag, the second---more general---instance will be ignored (otherwise it is ambiguous which to choose)
Overlaps SourceText | Equivalent to having both `Overlapping` and `Overlappable` flags.
Incoherent SourceText | Behave like Overlappable and Overlapping, and in addition pick an arbitrary one if there are multiple matching candidates, and don't worry about later instantiation Example: constraint (Foo [b]) instance {-# INCOHERENT -} Foo [Int] instance Foo [a] Without the Incoherent flag, we'd complain that instantiating `b` would change which instance was chosen. See also Note [Incoherent instances] in GHC.Core.InstEnv
NonCanonical SourceText | Behave like Incoherent, but the instance choice is observable by the program behaviour. See Note [Coherence and specialisation: overview]. We don't have surface syntax for the distinction between Incoherent and NonCanonical instances; instead, the flag `-f{no-}specialise-incoherents` (on by default) controls whether `INCOHERENT` instances are regarded as Incoherent or NonCanonical.

#### Instances

Instances details

Binary OverlapMode Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> OverlapMode -> IO () Source # put :: BinHandle -> OverlapMode -> IO (Bin OverlapMode) Source # get :: BinHandle -> IO OverlapMode Source #
Outputable OverlapMode Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: OverlapMode -> SDoc Source #
Data OverlapMode Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OverlapMode -> c OverlapMode # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OverlapMode # toConstr :: OverlapMode -> Constr # dataTypeOf :: OverlapMode -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c OverlapMode) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OverlapMode) # gmapT :: (forall b. Data b => b -> b) -> OverlapMode -> OverlapMode # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OverlapMode -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OverlapMode -> r # gmapQ :: (forall d. Data d => d -> u) -> OverlapMode -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> OverlapMode -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> OverlapMode -> m OverlapMode # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OverlapMode -> m OverlapMode # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OverlapMode -> m OverlapMode #
Eq OverlapMode Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: OverlapMode -> OverlapMode -> Bool # (/=) :: OverlapMode -> OverlapMode -> Bool #
type Anno OverlapMode Source # |
Instance details Defined in GHC.Hs.Decls type Anno OverlapMode = SrcSpanAnnP
type Anno OverlapMode Source # |
Instance details Defined in GHC.Hs.Decls type Anno OverlapMode = SrcSpanAnnP

setOverlapModeMaybe :: OverlapFlag -> Maybe OverlapMode -> OverlapFlag Source #

hasOverlappingFlag :: OverlapMode -> Bool Source #

hasOverlappableFlag :: OverlapMode -> Bool Source #

hasIncoherentFlag :: OverlapMode -> Bool Source #

hasNonCanonicalFlag :: OverlapMode -> Bool Source #

data Boxity Source #

Constructors

Boxed |
Unboxed |

#### Instances

Instances details

Binary Boxity Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> Boxity -> IO () Source # put :: BinHandle -> Boxity -> IO (Bin Boxity) Source # get :: BinHandle -> IO Boxity Source #
Outputable Boxity Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: Boxity -> SDoc Source #
Data Boxity Source # |
Instance details Defined in Language.Haskell.Syntax.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Boxity -> c Boxity # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Boxity # toConstr :: Boxity -> Constr # dataTypeOf :: Boxity -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Boxity) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Boxity) # gmapT :: (forall b. Data b => b -> b) -> Boxity -> Boxity # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Boxity -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Boxity -> r # gmapQ :: (forall d. Data d => d -> u) -> Boxity -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Boxity -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Boxity -> m Boxity # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Boxity -> m Boxity # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Boxity -> m Boxity #
Eq Boxity Source # |
Instance details Defined in Language.Haskell.Syntax.Basic Methods (==) :: Boxity -> Boxity -> Bool # (/=) :: Boxity -> Boxity -> Bool #

isBoxed :: Boxity -> Bool Source #

data CbvMark Source #

Should an argument be passed evaluated *and* tagged.

Constructors

MarkedCbv |
NotMarkedCbv |

#### Instances

Instances details

Binary CbvMark Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> CbvMark -> IO () Source # put :: BinHandle -> CbvMark -> IO (Bin CbvMark) Source # get :: BinHandle -> IO CbvMark Source #
Outputable CbvMark Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: CbvMark -> SDoc Source #
Eq CbvMark Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: CbvMark -> CbvMark -> Bool # (/=) :: CbvMark -> CbvMark -> Bool #

isMarkedCbv :: CbvMark -> Bool Source #

newtype PprPrec Source #

A general-purpose pretty-printing precedence type.

Constructors

PprPrec Int |

#### Instances

Instances details

Show PprPrec Source # |
Instance details Defined in GHC.Types.Basic Methods showsPrec :: Int -> PprPrec -> ShowS # show :: PprPrec -> String # showList :: [PprPrec] -> ShowS #
Eq PprPrec Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: PprPrec -> PprPrec -> Bool # (/=) :: PprPrec -> PprPrec -> Bool #
Ord PprPrec Source # |
Instance details Defined in GHC.Types.Basic Methods compare :: PprPrec -> PprPrec -> Ordering # (<) :: PprPrec -> PprPrec -> Bool # (<=) :: PprPrec -> PprPrec -> Bool # (>) :: PprPrec -> PprPrec -> Bool # (>=) :: PprPrec -> PprPrec -> Bool # max :: PprPrec -> PprPrec -> PprPrec # min :: PprPrec -> PprPrec -> PprPrec #

topPrec :: PprPrec Source #

sigPrec :: PprPrec Source #

opPrec :: PprPrec Source #

funPrec :: PprPrec Source #

starPrec :: PprPrec Source #

appPrec :: PprPrec Source #

maxPrec :: PprPrec Source #

maybeParen :: PprPrec -> PprPrec -> SDoc -> SDoc Source #

data TupleSort Source #

Constructors

BoxedTuple |
UnboxedTuple |
ConstraintTuple |

#### Instances

Instances details

Binary TupleSort Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> TupleSort -> IO () Source # put :: BinHandle -> TupleSort -> IO (Bin TupleSort) Source # get :: BinHandle -> IO TupleSort Source #
Outputable TupleSort Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: TupleSort -> SDoc Source #
Data TupleSort Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TupleSort -> c TupleSort # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TupleSort # toConstr :: TupleSort -> Constr # dataTypeOf :: TupleSort -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TupleSort) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TupleSort) # gmapT :: (forall b. Data b => b -> b) -> TupleSort -> TupleSort # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TupleSort -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TupleSort -> r # gmapQ :: (forall d. Data d => d -> u) -> TupleSort -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> TupleSort -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TupleSort -> m TupleSort # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TupleSort -> m TupleSort # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TupleSort -> m TupleSort #
Eq TupleSort Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: TupleSort -> TupleSort -> Bool # (/=) :: TupleSort -> TupleSort -> Bool #

tupleSortBoxity :: TupleSort -> Boxity Source #

boxityTupleSort :: Boxity -> TupleSort Source #

tupleParens :: TupleSort -> SDoc -> SDoc Source #

data UnboxedTupleOrSum Source #

Are we dealing with an unboxed tuple or an unboxed sum?

Used when validity checking, see `check_ubx_tuple_or_sum`.

Constructors

UnboxedTupleType |
UnboxedSumType |

#### Instances

Instances details

Outputable UnboxedTupleOrSum Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: UnboxedTupleOrSum -> SDoc Source #
Eq UnboxedTupleOrSum Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: UnboxedTupleOrSum -> UnboxedTupleOrSum -> Bool # (/=) :: UnboxedTupleOrSum -> UnboxedTupleOrSum -> Bool #

unboxedTupleOrSumExtension :: UnboxedTupleOrSum -> Extension Source #

sumParens :: SDoc -> SDoc Source #

pprAlternative Source #

Arguments

:: (a -> SDoc) | The pretty printing function to use
-> a | The things to be pretty printed
-> ConTag | Alternative (one-based)
-> Arity | Arity
-> SDoc | `SDoc` where the alternative havs been pretty printed and finally packed into a paragraph.

Pretty print an alternative in an unboxed sum e.g. "| a | |".

## The OneShotInfo type

data OneShotInfo Source #

If the `Id` is a lambda-bound variable then it may have lambda-bound variable info. Sometimes we know whether the lambda binding this variable is a "one-shot" lambda; that is, whether it is applied at most once.

This information may be useful in optimisation, as computations may safely be floated inside such a lambda without risk of duplicating work.

See also Note [OneShotInfo overview] above.

Constructors

NoOneShotInfo | No information
OneShotLam | The lambda is applied at most once.

#### Instances

Instances details

Outputable OneShotInfo Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: OneShotInfo -> SDoc Source #
Eq OneShotInfo Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: OneShotInfo -> OneShotInfo -> Bool # (/=) :: OneShotInfo -> OneShotInfo -> Bool #

noOneShotInfo :: OneShotInfo Source #

It is always safe to assume that an `Id` has no lambda-bound variable information

hasNoOneShotInfo :: OneShotInfo -> Bool Source #

isOneShotInfo :: OneShotInfo -> Bool Source #

bestOneShot :: OneShotInfo -> OneShotInfo -> OneShotInfo Source #

worstOneShot :: OneShotInfo -> OneShotInfo -> OneShotInfo Source #

data OccInfo Source #

identifier Occurrence Information

Constructors

ManyOccs | There are many occurrences, or unknown occurrences
Fields occ_tail :: !TailCallInfo
IAmDead | Marks unused variables. Sometimes useful for lambda and case-bound variables.
OneOcc | Occurs exactly once (per branch), not inside a rule
Fields occ_in_lam :: !InsideLam occ_n_br :: !BranchCount occ_int_cxt :: !InterestingCxt occ_tail :: !TailCallInfo
IAmALoopBreaker | This identifier breaks a loop of mutually recursive functions. The field marks whether it is only a loop breaker due to a reference in a rule
Fields occ_rules_only :: !RulesOnly occ_tail :: !TailCallInfo

#### Instances

Instances details

Outputable OccInfo Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: OccInfo -> SDoc Source #
Eq OccInfo Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: OccInfo -> OccInfo -> Bool # (/=) :: OccInfo -> OccInfo -> Bool #

noOccInfo :: OccInfo Source #

seqOccInfo :: OccInfo -> () Source #

zapFragileOcc :: OccInfo -> OccInfo Source #

isOneOcc :: OccInfo -> Bool Source #

isDeadOcc :: OccInfo -> Bool Source #

isStrongLoopBreaker :: OccInfo -> Bool Source #

isWeakLoopBreaker :: OccInfo -> Bool Source #

isManyOccs :: OccInfo -> Bool Source #

isNoOccInfo :: OccInfo -> Bool Source #

strongLoopBreaker :: OccInfo Source #

weakLoopBreaker :: OccInfo Source #

data InsideLam Source #

Inside Lambda

Constructors

IsInsideLam | Occurs inside a non-linear lambda Substituting a redex for this occurrence is dangerous because it might duplicate work.
NotInsideLam |

#### Instances

Instances details

Monoid InsideLam Source # |
Instance details Defined in GHC.Types.Basic Methods mempty :: InsideLam # mappend :: InsideLam -> InsideLam -> InsideLam # mconcat :: [InsideLam] -> InsideLam #
Semigroup InsideLam Source # | If any occurrence of an identifier is inside a lambda, then the occurrence info of that identifier marks it as occurring inside a lambda
Instance details Defined in GHC.Types.Basic Methods (<>) :: InsideLam -> InsideLam -> InsideLam # sconcat :: NonEmpty InsideLam -> InsideLam # stimes :: Integral b => b -> InsideLam -> InsideLam #
Eq InsideLam Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: InsideLam -> InsideLam -> Bool # (/=) :: InsideLam -> InsideLam -> Bool #

type BranchCount = Int Source #

oneBranch :: BranchCount Source #

data InterestingCxt Source #

Interesting Context

Constructors

IsInteresting | Function: is applied Data value: scrutinised by a case with at least one non-DEFAULT branch
NotInteresting |

#### Instances

Instances details

Monoid InterestingCxt Source # |
Instance details Defined in GHC.Types.Basic Methods mempty :: InterestingCxt # mappend :: InterestingCxt -> InterestingCxt -> InterestingCxt # mconcat :: [InterestingCxt] -> InterestingCxt #
Semigroup InterestingCxt Source # | If there is any `interesting` identifier occurrence, then the aggregated occurrence info of that identifier is considered interesting.
Instance details Defined in GHC.Types.Basic Methods (<>) :: InterestingCxt -> InterestingCxt -> InterestingCxt # sconcat :: NonEmpty InterestingCxt -> InterestingCxt # stimes :: Integral b => b -> InterestingCxt -> InterestingCxt #
Eq InterestingCxt Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: InterestingCxt -> InterestingCxt -> Bool # (/=) :: InterestingCxt -> InterestingCxt -> Bool #

data TailCallInfo Source #

Constructors

AlwaysTailCalled !JoinArity |
NoTailCallInfo |

#### Instances

Instances details

Outputable TailCallInfo Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: TailCallInfo -> SDoc Source #
Eq TailCallInfo Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: TailCallInfo -> TailCallInfo -> Bool # (/=) :: TailCallInfo -> TailCallInfo -> Bool #

tailCallInfo :: OccInfo -> TailCallInfo Source #

zapOccTailCallInfo :: OccInfo -> OccInfo Source #

isAlwaysTailCalled :: OccInfo -> Bool Source #

data EP a Source #

Embedding Projection pair

Constructors

EP |
Fields fromEP :: a toEP :: a

data DefMethSpec ty Source #

Default Method Specification

Constructors

VanillaDM |
GenericDM ty |

#### Instances

Instances details

Binary (DefMethSpec IfaceType) Source # |
Instance details Defined in GHC.Iface.Type Methods put_ :: BinHandle -> DefMethSpec IfaceType -> IO () Source # put :: BinHandle -> DefMethSpec IfaceType -> IO (Bin (DefMethSpec IfaceType)) Source # get :: BinHandle -> IO (DefMethSpec IfaceType) Source #
Outputable (DefMethSpec ty) Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: DefMethSpec ty -> SDoc Source #

data SwapFlag Source #

Constructors

NotSwapped |
IsSwapped |

#### Instances

Instances details

Outputable SwapFlag Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: SwapFlag -> SDoc Source #

flipSwap :: SwapFlag -> SwapFlag Source #

unSwap :: SwapFlag -> (a -> a -> b) -> a -> a -> b Source #

isSwapped :: SwapFlag -> Bool Source #

data CompilerPhase Source #

Constructors

InitialPhase |
Phase PhaseNum |
FinalPhase |

#### Instances

Instances details

Outputable CompilerPhase Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: CompilerPhase -> SDoc Source #
Eq CompilerPhase Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: CompilerPhase -> CompilerPhase -> Bool # (/=) :: CompilerPhase -> CompilerPhase -> Bool #

type PhaseNum = Int Source #

Phase Number

beginPhase :: Activation -> CompilerPhase Source #

nextPhase :: CompilerPhase -> CompilerPhase Source #

laterPhase :: CompilerPhase -> CompilerPhase -> CompilerPhase Source #

data Activation Source #

Constructors

AlwaysActive |
ActiveBefore SourceText PhaseNum |
ActiveAfter SourceText PhaseNum |
FinalActive |
NeverActive |

#### Instances

Instances details

Binary Activation Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> Activation -> IO () Source # put :: BinHandle -> Activation -> IO (Bin Activation) Source # get :: BinHandle -> IO Activation Source #
Outputable Activation Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: Activation -> SDoc Source #
Data Activation Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Activation -> c Activation # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Activation # toConstr :: Activation -> Constr # dataTypeOf :: Activation -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Activation) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Activation) # gmapT :: (forall b. Data b => b -> b) -> Activation -> Activation # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Activation -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Activation -> r # gmapQ :: (forall d. Data d => d -> u) -> Activation -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Activation -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Activation -> m Activation # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Activation -> m Activation # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Activation -> m Activation #
Eq Activation Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: Activation -> Activation -> Bool # (/=) :: Activation -> Activation -> Bool #

isActive :: CompilerPhase -> Activation -> Bool Source #

competesWith :: Activation -> Activation -> Bool Source #

isNeverActive :: Activation -> Bool Source #

isAlwaysActive :: Activation -> Bool Source #

activeInFinalPhase :: Activation -> Bool Source #

activateAfterInitial :: Activation Source #

activateDuringFinal :: Activation Source #

activeAfter :: CompilerPhase -> Activation Source #

data RuleMatchInfo Source #

Rule Match Information

Constructors

ConLike |
FunLike |

#### Instances

Instances details

Binary RuleMatchInfo Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> RuleMatchInfo -> IO () Source # put :: BinHandle -> RuleMatchInfo -> IO (Bin RuleMatchInfo) Source # get :: BinHandle -> IO RuleMatchInfo Source #
Outputable RuleMatchInfo Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: RuleMatchInfo -> SDoc Source #
Data RuleMatchInfo Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RuleMatchInfo -> c RuleMatchInfo # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RuleMatchInfo # toConstr :: RuleMatchInfo -> Constr # dataTypeOf :: RuleMatchInfo -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RuleMatchInfo) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RuleMatchInfo) # gmapT :: (forall b. Data b => b -> b) -> RuleMatchInfo -> RuleMatchInfo # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RuleMatchInfo -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RuleMatchInfo -> r # gmapQ :: (forall d. Data d => d -> u) -> RuleMatchInfo -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> RuleMatchInfo -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RuleMatchInfo -> m RuleMatchInfo # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleMatchInfo -> m RuleMatchInfo # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RuleMatchInfo -> m RuleMatchInfo #
Show RuleMatchInfo Source # |
Instance details Defined in GHC.Types.Basic Methods showsPrec :: Int -> RuleMatchInfo -> ShowS # show :: RuleMatchInfo -> String # showList :: [RuleMatchInfo] -> ShowS #
Eq RuleMatchInfo Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: RuleMatchInfo -> RuleMatchInfo -> Bool # (/=) :: RuleMatchInfo -> RuleMatchInfo -> Bool #

isConLike :: RuleMatchInfo -> Bool Source #

isFunLike :: RuleMatchInfo -> Bool Source #

data InlineSpec Source #

Inline Specification

Constructors

Inline SourceText |
Inlinable SourceText |
NoInline SourceText |
Opaque SourceText |
NoUserInlinePrag |

#### Instances

Instances details

Binary InlineSpec Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> InlineSpec -> IO () Source # put :: BinHandle -> InlineSpec -> IO (Bin InlineSpec) Source # get :: BinHandle -> IO InlineSpec Source #
Outputable InlineSpec Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: InlineSpec -> SDoc Source #
Data InlineSpec Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InlineSpec -> c InlineSpec # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c InlineSpec # toConstr :: InlineSpec -> Constr # dataTypeOf :: InlineSpec -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c InlineSpec) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c InlineSpec) # gmapT :: (forall b. Data b => b -> b) -> InlineSpec -> InlineSpec # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InlineSpec -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InlineSpec -> r # gmapQ :: (forall d. Data d => d -> u) -> InlineSpec -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> InlineSpec -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> InlineSpec -> m InlineSpec # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InlineSpec -> m InlineSpec # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InlineSpec -> m InlineSpec #
Show InlineSpec Source # |
Instance details Defined in GHC.Types.Basic Methods showsPrec :: Int -> InlineSpec -> ShowS # show :: InlineSpec -> String # showList :: [InlineSpec] -> ShowS #
Eq InlineSpec Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: InlineSpec -> InlineSpec -> Bool # (/=) :: InlineSpec -> InlineSpec -> Bool #

noUserInlineSpec :: InlineSpec -> Bool Source #

data InlinePragma Source #

Constructors

InlinePragma |
Fields inl_src :: SourceText inl_inline :: InlineSpec inl_sat :: Maybe Arity inl_act :: Activation inl_rule :: RuleMatchInfo

#### Instances

Instances details

Binary InlinePragma Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> InlinePragma -> IO () Source # put :: BinHandle -> InlinePragma -> IO (Bin InlinePragma) Source # get :: BinHandle -> IO InlinePragma Source #
Outputable InlinePragma Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: InlinePragma -> SDoc Source #
Data InlinePragma Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InlinePragma -> c InlinePragma # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c InlinePragma # toConstr :: InlinePragma -> Constr # dataTypeOf :: InlinePragma -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c InlinePragma) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c InlinePragma) # gmapT :: (forall b. Data b => b -> b) -> InlinePragma -> InlinePragma # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InlinePragma -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InlinePragma -> r # gmapQ :: (forall d. Data d => d -> u) -> InlinePragma -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> InlinePragma -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> InlinePragma -> m InlinePragma # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InlinePragma -> m InlinePragma # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InlinePragma -> m InlinePragma #
Eq InlinePragma Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: InlinePragma -> InlinePragma -> Bool # (/=) :: InlinePragma -> InlinePragma -> Bool #

defaultInlinePragma :: InlinePragma Source #

alwaysInlinePragma :: InlinePragma Source #

neverInlinePragma :: InlinePragma Source #

dfunInlinePragma :: InlinePragma Source #

isDefaultInlinePragma :: InlinePragma -> Bool Source #

isInlinePragma :: InlinePragma -> Bool Source #

isInlinablePragma :: InlinePragma -> Bool Source #

isNoInlinePragma :: InlinePragma -> Bool Source #

isOpaquePragma :: InlinePragma -> Bool Source #

isAnyInlinePragma :: InlinePragma -> Bool Source #

alwaysInlineConLikePragma :: InlinePragma Source #

inlinePragmaSource :: InlinePragma -> SourceText Source #

inlinePragmaName :: InlineSpec -> SDoc Source #

Outputs string for pragma name for any of INLINEINLINABLENOINLINE. This differs from the Outputable instance for the InlineSpec type where the pragma name string as well as the accompanying SourceText (if any) is printed.

inlineSpecSource :: InlineSpec -> SourceText Source #

inlinePragmaSpec :: InlinePragma -> InlineSpec Source #

inlinePragmaSat :: InlinePragma -> Maybe Arity Source #

inlinePragmaActivation :: InlinePragma -> Activation Source #

inlinePragmaRuleMatchInfo :: InlinePragma -> RuleMatchInfo Source #

setInlinePragmaActivation :: InlinePragma -> Activation -> InlinePragma Source #

setInlinePragmaRuleMatchInfo :: InlinePragma -> RuleMatchInfo -> InlinePragma Source #

pprInline :: InlinePragma -> SDoc Source #

Pretty-print without displaying the user-specified `InlineSpec`.

pprInlineDebug :: InlinePragma -> SDoc Source #

Pretty-print including the user-specified `InlineSpec`.

data UnfoldingSource Source #

Constructors

VanillaSrc |
StableUserSrc |
StableSystemSrc |
CompulsorySrc |

#### Instances

Instances details

Binary UnfoldingSource Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> UnfoldingSource -> IO () Source # put :: BinHandle -> UnfoldingSource -> IO (Bin UnfoldingSource) Source # get :: BinHandle -> IO UnfoldingSource Source #
Outputable UnfoldingSource Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: UnfoldingSource -> SDoc Source #

isStableSource :: UnfoldingSource -> Bool Source #

isStableUserSource :: UnfoldingSource -> Bool Source #

isStableSystemSource :: UnfoldingSource -> Bool Source #

isCompulsorySource :: UnfoldingSource -> Bool Source #

data SuccessFlag Source #

Constructors

Succeeded |
Failed |

#### Instances

Instances details

Outputable SuccessFlag Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: SuccessFlag -> SDoc Source #
Semigroup SuccessFlag Source # |
Instance details Defined in GHC.Types.Basic Methods (<>) :: SuccessFlag -> SuccessFlag -> SuccessFlag # sconcat :: NonEmpty SuccessFlag -> SuccessFlag # stimes :: Integral b => b -> SuccessFlag -> SuccessFlag #

succeeded :: SuccessFlag -> Bool Source #

failed :: SuccessFlag -> Bool Source #

successIf :: Bool -> SuccessFlag Source #

data IntWithInf Source #

An integer or infinity

#### Instances

Instances details

Outputable IntWithInf Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: IntWithInf -> SDoc Source #
Num IntWithInf Source # |
Instance details Defined in GHC.Types.Basic Methods (+) :: IntWithInf -> IntWithInf -> IntWithInf # (-) :: IntWithInf -> IntWithInf -> IntWithInf # (*) :: IntWithInf -> IntWithInf -> IntWithInf # negate :: IntWithInf -> IntWithInf # abs :: IntWithInf -> IntWithInf # signum :: IntWithInf -> IntWithInf # fromInteger :: Integer -> IntWithInf #
Eq IntWithInf Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: IntWithInf -> IntWithInf -> Bool # (/=) :: IntWithInf -> IntWithInf -> Bool #
Ord IntWithInf Source # |
Instance details Defined in GHC.Types.Basic Methods compare :: IntWithInf -> IntWithInf -> Ordering # (<) :: IntWithInf -> IntWithInf -> Bool # (<=) :: IntWithInf -> IntWithInf -> Bool # (>) :: IntWithInf -> IntWithInf -> Bool # (>=) :: IntWithInf -> IntWithInf -> Bool # max :: IntWithInf -> IntWithInf -> IntWithInf # min :: IntWithInf -> IntWithInf -> IntWithInf #

infinity :: IntWithInf Source #

A representation of infinity

treatZeroAsInf :: Int -> IntWithInf Source #

Turn a positive number into an `IntWithInf`, where 0 represents infinity

subWithInf :: IntWithInf -> Int -> IntWithInf Source #

Subtract an `Int` from an `IntWithInf`

mkIntWithInf :: Int -> IntWithInf Source #

Inject any integer into an `IntWithInf`

intGtLimit :: Int -> IntWithInf -> Bool Source #

data TypeOrKind Source #

Flag to see whether we're type-checking terms or kind-checking types

Constructors

TypeLevel |
KindLevel |

#### Instances

Instances details

Outputable TypeOrKind Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: TypeOrKind -> SDoc Source #
Eq TypeOrKind Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: TypeOrKind -> TypeOrKind -> Bool # (/=) :: TypeOrKind -> TypeOrKind -> Bool #

isTypeLevel :: TypeOrKind -> Bool Source #

isKindLevel :: TypeOrKind -> Bool Source #

data Levity Source #

Constructors

Lifted |
Unlifted |

#### Instances

Instances details

Binary Levity Source # |
Instance details Defined in GHC.Types.Basic Methods put_ :: BinHandle -> Levity -> IO () Source # put :: BinHandle -> Levity -> IO (Bin Levity) Source # get :: BinHandle -> IO Levity Source #
Outputable Levity Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: Levity -> SDoc Source #
Data Levity Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Levity -> c Levity # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Levity # toConstr :: Levity -> Constr # dataTypeOf :: Levity -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Levity) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Levity) # gmapT :: (forall b. Data b => b -> b) -> Levity -> Levity # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Levity -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Levity -> r # gmapQ :: (forall d. Data d => d -> u) -> Levity -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Levity -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Levity -> m Levity # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Levity -> m Levity # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Levity -> m Levity #
Show Levity Source # |
Instance details Defined in GHC.Types.Basic Methods showsPrec :: Int -> Levity -> ShowS # show :: Levity -> String # showList :: [Levity] -> ShowS #
Eq Levity Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: Levity -> Levity -> Bool # (/=) :: Levity -> Levity -> Bool #
Ord Levity Source # |
Instance details Defined in GHC.Types.Basic Methods compare :: Levity -> Levity -> Ordering # (<) :: Levity -> Levity -> Bool # (<=) :: Levity -> Levity -> Bool # (>) :: Levity -> Levity -> Bool # (>=) :: Levity -> Levity -> Bool # max :: Levity -> Levity -> Levity # min :: Levity -> Levity -> Levity #

mightBeLifted :: Maybe Levity -> Bool Source #

mightBeUnlifted :: Maybe Levity -> Bool Source #

data TypeOrConstraint Source #

Constructors

TypeLike |
ConstraintLike |

#### Instances

Instances details

Data TypeOrConstraint Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TypeOrConstraint -> c TypeOrConstraint # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TypeOrConstraint # toConstr :: TypeOrConstraint -> Constr # dataTypeOf :: TypeOrConstraint -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TypeOrConstraint) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TypeOrConstraint) # gmapT :: (forall b. Data b => b -> b) -> TypeOrConstraint -> TypeOrConstraint # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TypeOrConstraint -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TypeOrConstraint -> r # gmapQ :: (forall d. Data d => d -> u) -> TypeOrConstraint -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> TypeOrConstraint -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TypeOrConstraint -> m TypeOrConstraint # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeOrConstraint -> m TypeOrConstraint # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeOrConstraint -> m TypeOrConstraint #
Eq TypeOrConstraint Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: TypeOrConstraint -> TypeOrConstraint -> Bool # (/=) :: TypeOrConstraint -> TypeOrConstraint -> Bool #
Ord TypeOrConstraint Source # |
Instance details Defined in GHC.Types.Basic Methods compare :: TypeOrConstraint -> TypeOrConstraint -> Ordering # (<) :: TypeOrConstraint -> TypeOrConstraint -> Bool # (<=) :: TypeOrConstraint -> TypeOrConstraint -> Bool # (>) :: TypeOrConstraint -> TypeOrConstraint -> Bool # (>=) :: TypeOrConstraint -> TypeOrConstraint -> Bool # max :: TypeOrConstraint -> TypeOrConstraint -> TypeOrConstraint # min :: TypeOrConstraint -> TypeOrConstraint -> TypeOrConstraint #

data TyConFlavour tc Source #

Paints a picture of what a `TyCon` represents, in broad strokes. This is used towards more informative error messages.

Constructors

ClassFlavour |
TupleFlavour Boxity |
SumFlavour |
DataTypeFlavour |
NewtypeFlavour |
AbstractTypeFlavour |
OpenFamilyFlavour TypeOrData (Maybe tc) |
ClosedTypeFamilyFlavour |
TypeSynonymFlavour |
BuiltInTypeFlavour | e.g., the `(->)` `TyCon`.
PromotedDataConFlavour |

#### Instances

Instances details

Functor TyConFlavour Source # |
Instance details Defined in GHC.Types.Basic Methods fmap :: (a -> b) -> TyConFlavour a -> TyConFlavour b # (<$) :: a -> TyConFlavour b -> TyConFlavour a #
NFData tc => NFData (TyConFlavour tc) Source # |
Instance details Defined in GHC.Types.Basic Methods rnf :: TyConFlavour tc -> () Source #
Outputable (TyConFlavour tc) Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: TyConFlavour tc -> SDoc Source #
Data tc => Data (TyConFlavour tc) Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TyConFlavour tc -> c (TyConFlavour tc) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (TyConFlavour tc) # toConstr :: TyConFlavour tc -> Constr # dataTypeOf :: TyConFlavour tc -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (TyConFlavour tc)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (TyConFlavour tc)) # gmapT :: (forall b. Data b => b -> b) -> TyConFlavour tc -> TyConFlavour tc # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TyConFlavour tc -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TyConFlavour tc -> r # gmapQ :: (forall d. Data d => d -> u) -> TyConFlavour tc -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> TyConFlavour tc -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TyConFlavour tc -> m (TyConFlavour tc) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TyConFlavour tc -> m (TyConFlavour tc) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TyConFlavour tc -> m (TyConFlavour tc) #
Eq tc => Eq (TyConFlavour tc) Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: TyConFlavour tc -> TyConFlavour tc -> Bool # (/=) :: TyConFlavour tc -> TyConFlavour tc -> Bool #

data TypeOrData Source #

Whether something is a type or a data declaration, e.g. a type family or a data family.

Constructors

IAmData |
IAmType |

#### Instances

Instances details

Outputable TypeOrData Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: TypeOrData -> SDoc Source #
Data TypeOrData Source # |
Instance details Defined in GHC.Types.Basic Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TypeOrData -> c TypeOrData # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TypeOrData # toConstr :: TypeOrData -> Constr # dataTypeOf :: TypeOrData -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TypeOrData) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TypeOrData) # gmapT :: (forall b. Data b => b -> b) -> TypeOrData -> TypeOrData # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TypeOrData -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TypeOrData -> r # gmapQ :: (forall d. Data d => d -> u) -> TypeOrData -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> TypeOrData -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TypeOrData -> m TypeOrData # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeOrData -> m TypeOrData # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeOrData -> m TypeOrData #
Eq TypeOrData Source # |
Instance details Defined in GHC.Types.Basic Methods (==) :: TypeOrData -> TypeOrData -> Bool # (/=) :: TypeOrData -> TypeOrData -> Bool #

tyConFlavourAssoc_maybe :: TyConFlavour tc -> Maybe tc Source #

Get the enclosing class TyCon (if there is one) for the given TyConFlavour

data NonStandardDefaultingStrategy Source #

Specify whether to default type variables of kind `RuntimeRep` `Levity` `Multiplicity`.

Constructors

DefaultNonStandardTyVars | Default type variables of the given kinds: default `RuntimeRep` variables to `LiftedRep` default `Levity` variables to `Lifted` default `Multiplicity` variables to `Many`
TryNotToDefaultNonStandardTyVars | Try not to default type variables of the kinds `RuntimeRep` `Levity` `Multiplicity`. Note that these might get defaulted anyway, if they are kind variables and `-XNoPolyKinds` is enabled.

#### Instances

Instances details

Outputable NonStandardDefaultingStrategy Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: NonStandardDefaultingStrategy -> SDoc Source #

data DefaultingStrategy Source #

Specify whether to default kind variables, and type variables of kind `RuntimeRep` `Levity` `Multiplicity`.

Constructors

DefaultKindVars | Default kind variables: default kind variables of kind `Type` to `Type`, default `RuntimeRep` `Levity` `Multiplicity` kind variables to `LiftedRep` `Lifted` `Many`, respectively. When this strategy is used, it means that we have determined that the variables we are considering defaulting are all kind variables. Usually, we pass this option when -XNoPolyKinds is enabled.
NonStandardDefaulting NonStandardDefaultingStrategy | Default (or don't default) non-standard variables, of kinds `RuntimeRep`, `Levity` and `Multiplicity`.

#### Instances

Instances details

Outputable DefaultingStrategy Source # |
Instance details Defined in GHC.Types.Basic Methods ppr :: DefaultingStrategy -> SDoc Source #

defaultNonStandardTyVars :: DefaultingStrategy -> Bool Source #

data ForeignSrcLang #

Constructors

LangC |
LangCxx |
LangObjc |
LangObjcxx |
LangAsm |
LangJs |
RawObject |

#### Instances

Instances details

Generic ForeignSrcLang |
Instance details Defined in GHC.ForeignSrcLang.Type Associated Types
type Rep ForeignSrcLang |
Instance details Defined in GHC.ForeignSrcLang.Type type Rep ForeignSrcLang = D1 ('MetaData "ForeignSrcLang" "GHC.ForeignSrcLang.Type" "ghc-boot-th-9.10.0.20240328-8276" 'False) ((C1 ('MetaCons "LangC" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LangCxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangObjc" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LangObjcxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangAsm" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LangJs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RawObject" 'PrefixI 'False) (U1 :: Type -> Type))))
Methods from :: ForeignSrcLang -> Rep ForeignSrcLang x # to :: Rep ForeignSrcLang x -> ForeignSrcLang #
Show ForeignSrcLang |
Instance details Defined in GHC.ForeignSrcLang.Type Methods showsPrec :: Int -> ForeignSrcLang -> ShowS # show :: ForeignSrcLang -> String # showList :: [ForeignSrcLang] -> ShowS #
Eq ForeignSrcLang |
Instance details Defined in GHC.ForeignSrcLang.Type Methods (==) :: ForeignSrcLang -> ForeignSrcLang -> Bool # (/=) :: ForeignSrcLang -> ForeignSrcLang -> Bool #
type Rep ForeignSrcLang |
Instance details Defined in GHC.ForeignSrcLang.Type type Rep ForeignSrcLang = D1 ('MetaData "ForeignSrcLang" "GHC.ForeignSrcLang.Type" "ghc-boot-th-9.10.0.20240328-8276" 'False) ((C1 ('MetaCons "LangC" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LangCxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangObjc" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LangObjcxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangAsm" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LangJs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RawObject" 'PrefixI 'False) (U1 :: Type -> Type))))

# Orphan instances

Binary Boxity Source # |
Instance details Methods put_ :: BinHandle -> Boxity -> IO () Source # put :: BinHandle -> Boxity -> IO (Bin Boxity) Source # get :: BinHandle -> IO Boxity Source #
Binary PromotionFlag Source # |
Instance details Methods put_ :: BinHandle -> PromotionFlag -> IO () Source # put :: BinHandle -> PromotionFlag -> IO (Bin PromotionFlag) Source # get :: BinHandle -> IO PromotionFlag Source #
Outputable Boxity Source # |
Instance details Methods ppr :: Boxity -> SDoc Source #
Outputable PromotionFlag Source # |
Instance details Methods ppr :: PromotionFlag -> SDoc Source #