ghc-lib-parser-9.14.1.20251220: The GHC API, decoupled from GHC versions
Safe HaskellIgnore
LanguageGHC2021

GHC.Types.Avail

Synopsis

Documentation

type Avails = [AvailInfo] #

A collection of AvailInfo - several things that are "available"

data AvailInfo #

Records what things are "available", i.e. in scope

Constructors

Avail Name

An ordinary identifier in scope, or a field label without a parent type (see Note [Representing pattern synonym fields in AvailInfo]).

AvailTC

A type or class in scope

The AvailTC Invariant: If the type or class is itself to be in scope, it must be first in this list. Thus, typically:

AvailTC Eq [Eq, ==, \/=]

Fields

  • Name

    The name of the type or class

  • [Name]

    The available pieces of type or class

Instances

Instances details
NFData AvailInfo # 
Instance details

Defined in GHC.Types.Avail

Methods

rnf :: AvailInfo -> () #

Data AvailInfo # 
Instance details

Defined in GHC.Types.Avail

Methods

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

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

toConstr :: AvailInfo -> Constr #

dataTypeOf :: AvailInfo -> DataType #

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

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

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

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

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

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

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

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

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

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

Binary AvailInfo # 
Instance details

Defined in GHC.Types.Avail

Outputable AvailInfo # 
Instance details

Defined in GHC.Types.Avail

Methods

ppr :: AvailInfo -> SDoc #

availExportsDecl :: AvailInfo -> Bool #

Does this AvailInfo export the parent decl? This depends on the invariant that the parent is first if it appears at all.

availName :: AvailInfo -> Name #

Just the main name made available, i.e. not the available pieces of type or class brought into scope by the AvailInfo

availNames :: AvailInfo -> [Name] #

Names and fields made available by the availability information.

availSubordinateNames :: AvailInfo -> [Name] #

Names and fields made available by the availability information, other than the main decl itself.

stableAvailCmp :: AvailInfo -> AvailInfo -> Ordering #

Compare lexicographically

trimAvail :: AvailInfo -> Name -> AvailInfo #

trims an AvailInfo to keep only a single name

filterAvail :: (Name -> Bool) -> AvailInfo -> [AvailInfo] -> [AvailInfo] #

filters an AvailInfo by the given predicate

filterAvails :: (Name -> Bool) -> [AvailInfo] -> [AvailInfo] #

filters AvailInfos by the given predicate

nubAvails :: [AvailInfo] -> [AvailInfo] #

Combines AvailInfos from the same family avails may have several items with the same availName E.g import Ix( Ix(..), index ) will give Ix(Ix,index,range) and Ix(index) We want to combine these; plusAvail does that

newtype DetOrdAvails #

Occurrences of Avails in interface files must be deterministically ordered to guarantee interface file determinism.

We guarantee a deterministic order by either using the order explicitly given by the user (e.g. in an explicit constructor export list) or instead by sorting the avails with sortAvails.

Bundled Patterns

pattern DetOrdAvails :: Avails -> DetOrdAvails

It's always safe to match on DetOrdAvails

emptyDetOrdAvails :: DetOrdAvails #

Create an empty DetOrdAvails