GHC.Hs.Lit

ghc-9.14.0.20251028: The GHC API

Safe Haskell | None
Language | GHC2021

GHC.Hs.Lit

Contents

- Orphan instances

Description

Source-language literals

Synopsis

- module Language.Haskell.Syntax.Lit
- convertLit :: forall (p :: Pass) (p' :: Pass). XXLit (GhcPass p) ~ DataConCantHappen => HsLit (GhcPass p) -> HsLit (GhcPass p')
- hsLitNeedsParens :: forall (x :: Pass). IsPass x => PprPrec -> HsLit (GhcPass x) -> Bool
- hsOverLitNeedsParens :: PprPrec -> HsOverLit x -> Bool
- negateOverLitVal :: OverLitVal -> OverLitVal
- overLitType :: HsOverLit GhcTc -> Type
- pmPprHsLit :: forall (p :: Pass). IsPass p => HsLit (GhcPass p) -> SDoc
- pprXOverLit :: forall (p :: Pass). GhcPass p -> XOverLit (GhcPass p) -> SDoc
- data HsLitTc
  - = HsInteger SourceText Integer Type
  - | HsRat FractionalLit Type
- data OverLitRn = OverLitRn {
  - ol_rebindable :: Bool
  - ol_from_fun :: LIdP GhcRn
  }
- data OverLitTc = OverLitTc {
  - ol_rebindable :: Bool
  - ol_witness :: HsExpr GhcTc
  - ol_type :: Type
  }

# Documentation

module Language.Haskell.Syntax.Lit

convertLit :: forall (p :: Pass) (p' :: Pass). XXLit (GhcPass p) ~ DataConCantHappen => HsLit (GhcPass p) -> HsLit (GhcPass p') Source #

Convert a literal from one index type to another. The constraint XXLit (GhcPass p)~DataConCantHappen means that once the XLit constructor is inhabited, we can no longer go back to the case where its not. In practice it just means you can't just convertLit to go from (HsLit GhcTc) -> (HsLit GhcPs/GhcRn), while all other conversions are fine.

hsLitNeedsParens :: forall (x :: Pass). IsPass x => PprPrec -> HsLit (GhcPass x) -> Bool Source #

``hsLitNeedsParens` p l` returns `True` if a literal `l` needs to be parenthesized under precedence `p`.

See Note [Printing of literals in Core] in GHC.Types.Literal for the reasoning.

hsOverLitNeedsParens :: PprPrec -> HsOverLit x -> Bool Source #

``hsOverLitNeedsParens` p ol` returns `True` if an overloaded literal `ol` needs to be parenthesized under precedence `p`.

negateOverLitVal :: OverLitVal -> OverLitVal Source #

overLitType :: HsOverLit GhcTc -> Type Source #

pmPprHsLit :: forall (p :: Pass). IsPass p => HsLit (GhcPass p) -> SDoc Source #

pmPprHsLit pretty prints literals and is used when pretty printing pattern match warnings. All are printed the same (i.e., without hashes if they are primitive and not wrapped in constructors if they are boxed). This happens mainly for too reasons: * We do not want to expose their internal representation * The warnings become too messy

pprXOverLit :: forall (p :: Pass). GhcPass p -> XOverLit (GhcPass p) -> SDoc Source #

data HsLitTc Source #

Constructors

HsInteger SourceText Integer Type | Genuinely an integer; arises only from TRANSLATION (overloaded literals are done with HsOverLit)
HsRat FractionalLit Type | Genuinely a rational; arises only from TRANSLATION (overloaded literals are done with HsOverLit)

#### Instances

Instances details

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

data OverLitRn Source #

Constructors

OverLitRn |
Fields ol_rebindable :: Bool ol_from_fun :: LIdP GhcRn

#### Instances

Instances details

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

data OverLitTc Source #

Constructors

OverLitTc |
Fields ol_rebindable :: Bool ol_witness :: HsExpr GhcTc ol_type :: Type

#### Instances

Instances details

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

# Orphan instances

Outputable OverLitVal Source # |
Instance details Methods ppr :: OverLitVal -> SDoc Source #
IsPass p => Outputable (HsLit (GhcPass p)) Source # |
Instance details Methods ppr :: HsLit (GhcPass p) -> SDoc Source #
OutputableBndrId p => Outputable (HsOverLit (GhcPass p)) Source # |
Instance details Methods ppr :: HsOverLit (GhcPass p) -> SDoc Source #
Eq (XXOverLit p) => Eq (HsOverLit p) Source # |
Instance details Methods (==) :: HsOverLit p -> HsOverLit p -> Bool Source # (/=) :: HsOverLit p -> HsOverLit p -> Bool Source #
Ord (XXOverLit p) => Ord (HsOverLit p) Source # |
Instance details Methods compare :: HsOverLit p -> HsOverLit p -> Ordering Source # (<) :: HsOverLit p -> HsOverLit p -> Bool Source # (<=) :: HsOverLit p -> HsOverLit p -> Bool Source # (>) :: HsOverLit p -> HsOverLit p -> Bool Source # (>=) :: HsOverLit p -> HsOverLit p -> Bool Source # max :: HsOverLit p -> HsOverLit p -> HsOverLit p Source # min :: HsOverLit p -> HsOverLit p -> HsOverLit p Source #