ghc-9.10.3: The GHC API

Safe Haskell | None
Language | GHC2021

GHC.Types.SourceText

Contents

- Literals

Description

Source text

Keeping Source Text for source to source conversions

Synopsis

- data SourceText
  - = SourceText FastString
  - | NoSourceText
- pprWithSourceText :: SourceText -> SDoc -> SDoc
- data IntegralLit = IL {
  - il_text :: SourceText
  - il_neg :: Bool
  - il_value :: Integer
  }
- data FractionalLit = FL {
  - fl_text :: SourceText
  - fl_neg :: Bool
  - fl_signi :: Rational
  - fl_exp :: Integer
  - fl_exp_base :: FractionalExponentBase
  }
- data StringLiteral = StringLiteral {
  - sl_st :: SourceText
  - sl_fs :: FastString
  - sl_tc :: Maybe NoCommentsLocation
  }
- negateIntegralLit :: IntegralLit -> IntegralLit
- negateFractionalLit :: FractionalLit -> FractionalLit
- mkIntegralLit :: Integral a => a -> IntegralLit
- mkTHFractionalLit :: Rational -> FractionalLit
- rationalFromFractionalLit :: FractionalLit -> Rational
- integralFractionalLit :: Bool -> Integer -> FractionalLit
- mkSourceFractionalLit :: String -> Bool -> Integer -> Integer -> FractionalExponentBase -> FractionalLit
- data FractionalExponentBase
  - = Base2
  - | Base10
- fractionalLitFromRational :: Rational -> FractionalLit
- mkFractionalLit :: SourceText -> Bool -> Rational -> Integer -> FractionalExponentBase -> FractionalLit

# Documentation

data SourceText Source #

Constructors

SourceText FastString |
NoSourceText | For when code is generated, e.g. TH, deriving. The pretty printer will then make its own representation of the item.

#### Instances

Instances details

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

Instance details

Defined in GHC.Types.SourceText

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SourceText -> c SourceText #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SourceText #

toConstr :: SourceText -> Constr #

dataTypeOf :: SourceText -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SourceText) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SourceText) #

gmapT :: (forall b. Data b => b -> b) -> SourceText -> SourceText #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SourceText -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SourceText -> r #

gmapQ :: (forall d. Data d => d -> u) -> SourceText -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SourceText -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SourceText -> m SourceText #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceText -> m SourceText #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceText -> m SourceText #

Show SourceText Source # |
Instance details Defined in GHC.Types.SourceText Methods showsPrec :: Int -> SourceText -> ShowS # show :: SourceText -> String # showList :: [SourceText] -> ShowS #
Eq SourceText Source # |
Instance details Defined in GHC.Types.SourceText Methods (==) :: SourceText -> SourceText -> Bool # (/=) :: SourceText -> SourceText -> Bool #
type Anno (SourceText, RuleName) Source # |
Instance details Defined in GHC.Hs.Decls type Anno (SourceText, RuleName) = EpAnnCO

pprWithSourceText :: SourceText -> SDoc -> SDoc Source #

Special combinator for showing string literals.

# Literals

data IntegralLit Source #

Integral Literal

Used (instead of Integer) to represent negative zegative zero which is required for NegativeLiterals extension to correctly parse `-0::Double` as negative zero. See also #13211.

Constructors

IL |

Fields

- il_text :: SourceText
- il_neg :: Bool
- il_value :: Integer

#### Instances

Instances details

Outputable IntegralLit Source # |
Instance details Defined in GHC.Types.SourceText Methods ppr :: IntegralLit -> SDoc Source #
Data IntegralLit Source # |

Instance details

Defined in GHC.Types.SourceText

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IntegralLit -> c IntegralLit #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c IntegralLit #

toConstr :: IntegralLit -> Constr #

dataTypeOf :: IntegralLit -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c IntegralLit) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IntegralLit) #

gmapT :: (forall b. Data b => b -> b) -> IntegralLit -> IntegralLit #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IntegralLit -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IntegralLit -> r #

gmapQ :: (forall d. Data d => d -> u) -> IntegralLit -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> IntegralLit -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> IntegralLit -> m IntegralLit #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IntegralLit -> m IntegralLit #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IntegralLit -> m IntegralLit #

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

data FractionalLit Source #

Fractional Literal

Used (instead of Rational) to represent exactly the floating point literal that we encountered in the user's source program. This allows us to pretty-print exactly what the user wrote, which is important e.g. for floating point numbers that can't represented as Doubles (we used to via Double for pretty-printing). See also #2245. Note [FractionalLit representation] in GHC.HsToCore.Match.Literal The actual value then is: sign * fl_signi * (fl_exp_base^fl_exp) where sign = if fl_neg then (-1) else 1

For example FL { fl_neg = True, fl_signi = 5.3, fl_exp = 4, fl_exp_base = Base10 } denotes -5300

Constructors

FL |

Fields

- fl_text :: SourceText

  How the value was written in the source

- fl_neg :: Bool
- fl_signi :: Rational
- fl_exp :: Integer
- fl_exp_base :: FractionalExponentBase

#### Instances

Instances details

Outputable FractionalLit Source # |
Instance details Defined in GHC.Types.SourceText Methods ppr :: FractionalLit -> SDoc Source #
Data FractionalLit Source # |

Instance details

Defined in GHC.Types.SourceText

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FractionalLit -> c FractionalLit #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FractionalLit #

toConstr :: FractionalLit -> Constr #

dataTypeOf :: FractionalLit -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FractionalLit) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FractionalLit) #

gmapT :: (forall b. Data b => b -> b) -> FractionalLit -> FractionalLit #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FractionalLit -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FractionalLit -> r #

gmapQ :: (forall d. Data d => d -> u) -> FractionalLit -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> FractionalLit -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> FractionalLit -> m FractionalLit #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FractionalLit -> m FractionalLit #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FractionalLit -> m FractionalLit #

Show FractionalLit Source # |
Instance details Defined in GHC.Types.SourceText Methods showsPrec :: Int -> FractionalLit -> ShowS # show :: FractionalLit -> String # showList :: [FractionalLit] -> ShowS #
Eq FractionalLit Source # | Be wary of using this instance to compare for equal *values* when exponents are large. The same value expressed in different syntactic form won't compare as equal when any of the exponents is >= 100.
Instance details Defined in GHC.Types.SourceText Methods (==) :: FractionalLit -> FractionalLit -> Bool # (/=) :: FractionalLit -> FractionalLit -> Bool #
Ord FractionalLit Source # | Be wary of using this instance to compare for equal *values* when exponents are large. The same value expressed in different syntactic form won't compare as equal when any of the exponents is >= 100.

Instance details

Defined in GHC.Types.SourceText

Methods

compare :: FractionalLit -> FractionalLit -> Ordering #

(<) :: FractionalLit -> FractionalLit -> Bool #

(<=) :: FractionalLit -> FractionalLit -> Bool #

(>) :: FractionalLit -> FractionalLit -> Bool #

(>=) :: FractionalLit -> FractionalLit -> Bool #

max :: FractionalLit -> FractionalLit -> FractionalLit #

min :: FractionalLit -> FractionalLit -> FractionalLit #

data StringLiteral Source #

A String Literal in the source, including its original raw format for use by source to source manipulation tools.

Constructors

StringLiteral |

Fields

- sl_st :: SourceText
- sl_fs :: FastString
- sl_tc :: Maybe NoCommentsLocation

#### Instances

Instances details

Outputable StringLiteral Source # |
Instance details Defined in GHC.Types.SourceText Methods ppr :: StringLiteral -> SDoc Source #
Data StringLiteral Source # |

Instance details

Defined in GHC.Types.SourceText

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> StringLiteral -> c StringLiteral #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c StringLiteral #

toConstr :: StringLiteral -> Constr #

dataTypeOf :: StringLiteral -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c StringLiteral) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c StringLiteral) #

gmapT :: (forall b. Data b => b -> b) -> StringLiteral -> StringLiteral #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> StringLiteral -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> StringLiteral -> r #

gmapQ :: (forall d. Data d => d -> u) -> StringLiteral -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> StringLiteral -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> StringLiteral -> m StringLiteral #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> StringLiteral -> m StringLiteral #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> StringLiteral -> m StringLiteral #

Eq StringLiteral Source # |
Instance details Defined in GHC.Types.SourceText Methods (==) :: StringLiteral -> StringLiteral -> Bool # (/=) :: StringLiteral -> StringLiteral -> Bool #
type Anno StringLiteral Source # |
Instance details Defined in GHC.Hs.Binds type Anno StringLiteral = EpAnnCO

negateIntegralLit :: IntegralLit -> IntegralLit Source #

negateFractionalLit :: FractionalLit -> FractionalLit Source #

mkIntegralLit :: Integral a => a -> IntegralLit Source #

mkTHFractionalLit :: Rational -> FractionalLit Source #

rationalFromFractionalLit :: FractionalLit -> Rational Source #

integralFractionalLit :: Bool -> Integer -> FractionalLit Source #

The integer should already be negated if it's negative.

mkSourceFractionalLit :: String -> Bool -> Integer -> Integer -> FractionalExponentBase -> FractionalLit Source #

The arguments should already be negated if they are negative.

data FractionalExponentBase Source #

Constructors

Base2 |
Base10 |

#### Instances

Instances details

Data FractionalExponentBase Source # |

Instance details

Defined in GHC.Types.SourceText

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FractionalExponentBase -> c FractionalExponentBase #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FractionalExponentBase #

toConstr :: FractionalExponentBase -> Constr #

dataTypeOf :: FractionalExponentBase -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FractionalExponentBase) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FractionalExponentBase) #

gmapT :: (forall b. Data b => b -> b) -> FractionalExponentBase -> FractionalExponentBase #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FractionalExponentBase -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FractionalExponentBase -> r #

gmapQ :: (forall d. Data d => d -> u) -> FractionalExponentBase -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> FractionalExponentBase -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> FractionalExponentBase -> m FractionalExponentBase #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FractionalExponentBase -> m FractionalExponentBase #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FractionalExponentBase -> m FractionalExponentBase #

Show FractionalExponentBase Source # |
Instance details Defined in GHC.Types.SourceText Methods showsPrec :: Int -> FractionalExponentBase -> ShowS # show :: FractionalExponentBase -> String # showList :: [FractionalExponentBase] -> ShowS #
Eq FractionalExponentBase Source # |
Instance details Defined in GHC.Types.SourceText Methods (==) :: FractionalExponentBase -> FractionalExponentBase -> Bool # (/=) :: FractionalExponentBase -> FractionalExponentBase -> Bool #
Ord FractionalExponentBase Source # |

Instance details

Defined in GHC.Types.SourceText

Methods

compare :: FractionalExponentBase -> FractionalExponentBase -> Ordering #

(<) :: FractionalExponentBase -> FractionalExponentBase -> Bool #

(<=) :: FractionalExponentBase -> FractionalExponentBase -> Bool #

(>) :: FractionalExponentBase -> FractionalExponentBase -> Bool #

(>=) :: FractionalExponentBase -> FractionalExponentBase -> Bool #

max :: FractionalExponentBase -> FractionalExponentBase -> FractionalExponentBase #

min :: FractionalExponentBase -> FractionalExponentBase -> FractionalExponentBase #

fractionalLitFromRational :: Rational -> FractionalLit Source #

mkFractionalLit :: SourceText -> Bool -> Rational -> Integer -> FractionalExponentBase -> FractionalLit Source #