{-# LANGUAGE DataKinds            #-}
{-# LANGUAGE DeriveDataTypeable   #-}
{-# LANGUAGE FlexibleContexts     #-}
{-# LANGUAGE FlexibleInstances    #-}
{-# LANGUAGE TypeApplications     #-}
{-# LANGUAGE TypeFamilies         #-}
{-# LANGUAGE UndecidableInstances #-} 
                                      
module GHC.Hs.ImpExp where
import GHC.Prelude
import GHC.Unit.Module        ( ModuleName, IsBootInterface(..) )
import GHC.Hs.Doc
import GHC.Types.SourceText   ( SourceText(..) )
import GHC.Types.FieldLabel   ( FieldLabel )
import GHC.Utils.Outputable
import GHC.Utils.Panic
import GHC.Types.SrcLoc
import Language.Haskell.Syntax.Extension
import GHC.Hs.Extension
import GHC.Parser.Annotation
import GHC.Types.Name
import GHC.Types.PkgQual
import Data.Data
import Data.Maybe
type LImportDecl pass = XRec pass (ImportDecl pass)
        
        
        
        
type instance Anno (ImportDecl (GhcPass p)) = SrcSpanAnnA
data ImportDeclQualifiedStyle
  = QualifiedPre  
  | QualifiedPost 
  | NotQualified  
  deriving (ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool
(ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool)
-> (ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool)
-> Eq ImportDeclQualifiedStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool
== :: ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool
$c/= :: ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool
/= :: ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle -> Bool
Eq, Typeable ImportDeclQualifiedStyle
Typeable ImportDeclQualifiedStyle
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> ImportDeclQualifiedStyle
    -> c ImportDeclQualifiedStyle)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c ImportDeclQualifiedStyle)
-> (ImportDeclQualifiedStyle -> Constr)
-> (ImportDeclQualifiedStyle -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d))
    -> Maybe (c ImportDeclQualifiedStyle))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c ImportDeclQualifiedStyle))
-> ((forall b. Data b => b -> b)
    -> ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle)
-> (forall r r'.
    (r -> r' -> r)
    -> r
    -> (forall d. Data d => d -> r')
    -> ImportDeclQualifiedStyle
    -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r
    -> (forall d. Data d => d -> r')
    -> ImportDeclQualifiedStyle
    -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> [u])
-> (forall u.
    Int
    -> (forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle)
-> Data ImportDeclQualifiedStyle
ImportDeclQualifiedStyle -> Constr
ImportDeclQualifiedStyle -> DataType
(forall b. Data b => b -> b)
-> ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int
-> (forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> u
forall u.
(forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> [u]
forall r r'.
(r -> r' -> r)
-> r
-> (forall d. Data d => d -> r')
-> ImportDeclQualifiedStyle
-> r
forall r r'.
(r' -> r -> r)
-> r
-> (forall d. Data d => d -> r')
-> ImportDeclQualifiedStyle
-> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ImportDeclQualifiedStyle
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> ImportDeclQualifiedStyle
-> c ImportDeclQualifiedStyle
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ImportDeclQualifiedStyle)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c ImportDeclQualifiedStyle)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> ImportDeclQualifiedStyle
-> c ImportDeclQualifiedStyle
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> ImportDeclQualifiedStyle
-> c ImportDeclQualifiedStyle
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ImportDeclQualifiedStyle
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ImportDeclQualifiedStyle
$ctoConstr :: ImportDeclQualifiedStyle -> Constr
toConstr :: ImportDeclQualifiedStyle -> Constr
$cdataTypeOf :: ImportDeclQualifiedStyle -> DataType
dataTypeOf :: ImportDeclQualifiedStyle -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ImportDeclQualifiedStyle)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ImportDeclQualifiedStyle)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c ImportDeclQualifiedStyle)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c ImportDeclQualifiedStyle)
$cgmapT :: (forall b. Data b => b -> b)
-> ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle
gmapT :: (forall b. Data b => b -> b)
-> ImportDeclQualifiedStyle -> ImportDeclQualifiedStyle
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r
-> (forall d. Data d => d -> r')
-> ImportDeclQualifiedStyle
-> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r
-> (forall d. Data d => d -> r')
-> ImportDeclQualifiedStyle
-> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r
-> (forall d. Data d => d -> r')
-> ImportDeclQualifiedStyle
-> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r
-> (forall d. Data d => d -> r')
-> ImportDeclQualifiedStyle
-> r
$cgmapQ :: forall u.
(forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> [u]
gmapQ :: forall u.
(forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> [u]
$cgmapQi :: forall u.
Int
-> (forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> u
gmapQi :: forall u.
Int
-> (forall d. Data d => d -> u) -> ImportDeclQualifiedStyle -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ImportDeclQualifiedStyle -> m ImportDeclQualifiedStyle
Data)
importDeclQualifiedStyle :: Maybe EpaLocation
                         -> Maybe EpaLocation
                         -> (Maybe EpaLocation, ImportDeclQualifiedStyle)
importDeclQualifiedStyle :: Maybe EpaLocation
-> Maybe EpaLocation
-> (Maybe EpaLocation, ImportDeclQualifiedStyle)
importDeclQualifiedStyle Maybe EpaLocation
mPre Maybe EpaLocation
mPost =
  if Maybe EpaLocation -> Bool
forall a. Maybe a -> Bool
isJust Maybe EpaLocation
mPre then (Maybe EpaLocation
mPre, ImportDeclQualifiedStyle
QualifiedPre)
  else if Maybe EpaLocation -> Bool
forall a. Maybe a -> Bool
isJust Maybe EpaLocation
mPost then (Maybe EpaLocation
mPost,ImportDeclQualifiedStyle
QualifiedPost) else (Maybe EpaLocation
forall a. Maybe a
Nothing, ImportDeclQualifiedStyle
NotQualified)
isImportDeclQualified :: ImportDeclQualifiedStyle -> Bool
isImportDeclQualified :: ImportDeclQualifiedStyle -> Bool
isImportDeclQualified ImportDeclQualifiedStyle
NotQualified = Bool
False
isImportDeclQualified ImportDeclQualifiedStyle
_ = Bool
True
data ImportDecl pass
  = ImportDecl {
      forall pass. ImportDecl pass -> XCImportDecl pass
ideclExt       :: XCImportDecl pass,
      forall pass. ImportDecl pass -> SourceText
ideclSourceSrc :: SourceText,
                                 
      forall pass. ImportDecl pass -> XRec pass ModuleName
ideclName      :: XRec pass ModuleName, 
      forall pass. ImportDecl pass -> ImportDeclPkgQual pass
ideclPkgQual   :: ImportDeclPkgQual pass,  
      forall pass. ImportDecl pass -> IsBootInterface
ideclSource    :: IsBootInterface,      
      forall pass. ImportDecl pass -> Bool
ideclSafe      :: Bool,          
      forall pass. ImportDecl pass -> ImportDeclQualifiedStyle
ideclQualified :: ImportDeclQualifiedStyle, 
      forall pass. ImportDecl pass -> Bool
ideclImplicit  :: Bool,          
      forall pass. ImportDecl pass -> Maybe (XRec pass ModuleName)
ideclAs        :: Maybe (XRec pass ModuleName),  
      forall pass. ImportDecl pass -> Maybe (Bool, XRec pass [LIE pass])
ideclHiding    :: Maybe (Bool, XRec pass [LIE pass])
                                       
    }
  | XImportDecl !(XXImportDecl pass)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
type family ImportDeclPkgQual pass
type instance ImportDeclPkgQual GhcPs = RawPkgQual
type instance ImportDeclPkgQual GhcRn = PkgQual
type instance ImportDeclPkgQual GhcTc = PkgQual
type instance XCImportDecl  GhcPs = EpAnn EpAnnImportDecl
type instance XCImportDecl  GhcRn = NoExtField
type instance XCImportDecl  GhcTc = NoExtField
type instance XXImportDecl  (GhcPass _) = DataConCantHappen
type instance Anno ModuleName = SrcSpanAnnA
type instance Anno [LocatedA (IE (GhcPass p))] = SrcSpanAnnL
data EpAnnImportDecl = EpAnnImportDecl
  { EpAnnImportDecl -> EpaLocation
importDeclAnnImport    :: EpaLocation
  , EpAnnImportDecl -> Maybe (EpaLocation, EpaLocation)
importDeclAnnPragma    :: Maybe (EpaLocation, EpaLocation)
  , EpAnnImportDecl -> Maybe EpaLocation
importDeclAnnSafe      :: Maybe EpaLocation
  , EpAnnImportDecl -> Maybe EpaLocation
importDeclAnnQualified :: Maybe EpaLocation
  , EpAnnImportDecl -> Maybe EpaLocation
importDeclAnnPackage   :: Maybe EpaLocation
  , EpAnnImportDecl -> Maybe EpaLocation
importDeclAnnAs        :: Maybe EpaLocation
  } deriving (Typeable EpAnnImportDecl
Typeable EpAnnImportDecl
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> EpAnnImportDecl -> c EpAnnImportDecl)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c EpAnnImportDecl)
-> (EpAnnImportDecl -> Constr)
-> (EpAnnImportDecl -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c EpAnnImportDecl))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c EpAnnImportDecl))
-> ((forall b. Data b => b -> b)
    -> EpAnnImportDecl -> EpAnnImportDecl)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> EpAnnImportDecl -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> EpAnnImportDecl -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> EpAnnImportDecl -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> EpAnnImportDecl -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> EpAnnImportDecl -> m EpAnnImportDecl)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> EpAnnImportDecl -> m EpAnnImportDecl)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> EpAnnImportDecl -> m EpAnnImportDecl)
-> Data EpAnnImportDecl
EpAnnImportDecl -> Constr
EpAnnImportDecl -> DataType
(forall b. Data b => b -> b) -> EpAnnImportDecl -> EpAnnImportDecl
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> EpAnnImportDecl -> u
forall u. (forall d. Data d => d -> u) -> EpAnnImportDecl -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnImportDecl -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnImportDecl -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> EpAnnImportDecl -> m EpAnnImportDecl
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> EpAnnImportDecl -> m EpAnnImportDecl
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpAnnImportDecl
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnnImportDecl -> c EpAnnImportDecl
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpAnnImportDecl)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpAnnImportDecl)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnnImportDecl -> c EpAnnImportDecl
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnnImportDecl -> c EpAnnImportDecl
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpAnnImportDecl
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpAnnImportDecl
$ctoConstr :: EpAnnImportDecl -> Constr
toConstr :: EpAnnImportDecl -> Constr
$cdataTypeOf :: EpAnnImportDecl -> DataType
dataTypeOf :: EpAnnImportDecl -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpAnnImportDecl)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpAnnImportDecl)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpAnnImportDecl)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpAnnImportDecl)
$cgmapT :: (forall b. Data b => b -> b) -> EpAnnImportDecl -> EpAnnImportDecl
gmapT :: (forall b. Data b => b -> b) -> EpAnnImportDecl -> EpAnnImportDecl
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnImportDecl -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnImportDecl -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnImportDecl -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnImportDecl -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> EpAnnImportDecl -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> EpAnnImportDecl -> [u]
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> EpAnnImportDecl -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> EpAnnImportDecl -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> EpAnnImportDecl -> m EpAnnImportDecl
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> EpAnnImportDecl -> m EpAnnImportDecl
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> EpAnnImportDecl -> m EpAnnImportDecl
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> EpAnnImportDecl -> m EpAnnImportDecl
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> EpAnnImportDecl -> m EpAnnImportDecl
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> EpAnnImportDecl -> m EpAnnImportDecl
Data)
simpleImportDecl :: ModuleName -> ImportDecl GhcPs
simpleImportDecl :: ModuleName -> ImportDecl GhcPs
simpleImportDecl ModuleName
mn = ImportDecl {
      ideclExt :: XCImportDecl GhcPs
ideclExt       = XCImportDecl GhcPs
EpAnn EpAnnImportDecl
forall a. EpAnn a
noAnn,
      ideclSourceSrc :: SourceText
ideclSourceSrc = SourceText
NoSourceText,
      ideclName :: XRec GhcPs ModuleName
ideclName      = ModuleName -> LocatedAn AnnListItem ModuleName
forall a an. a -> LocatedAn an a
noLocA ModuleName
mn,
      ideclPkgQual :: ImportDeclPkgQual GhcPs
ideclPkgQual   = RawPkgQual
ImportDeclPkgQual GhcPs
NoRawPkgQual,
      ideclSource :: IsBootInterface
ideclSource    = IsBootInterface
NotBoot,
      ideclSafe :: Bool
ideclSafe      = Bool
False,
      ideclImplicit :: Bool
ideclImplicit  = Bool
False,
      ideclQualified :: ImportDeclQualifiedStyle
ideclQualified = ImportDeclQualifiedStyle
NotQualified,
      ideclAs :: Maybe (XRec GhcPs ModuleName)
ideclAs        = Maybe (XRec GhcPs ModuleName)
Maybe (LocatedAn AnnListItem ModuleName)
forall a. Maybe a
Nothing,
      ideclHiding :: Maybe (Bool, XRec GhcPs [LIE GhcPs])
ideclHiding    = Maybe (Bool, XRec GhcPs [LIE GhcPs])
Maybe
  (Bool, GenLocated SrcSpanAnnL [GenLocated SrcSpanAnnA (IE GhcPs)])
forall a. Maybe a
Nothing
    }
instance (OutputableBndrId p
         , Outputable (Anno (IE (GhcPass p)))
         , Outputable (ImportDeclPkgQual (GhcPass p)))
       => Outputable (ImportDecl (GhcPass p)) where
    ppr :: ImportDecl (GhcPass p) -> SDoc
ppr (ImportDecl { ideclSourceSrc :: forall pass. ImportDecl pass -> SourceText
ideclSourceSrc = SourceText
mSrcText, ideclName :: forall pass. ImportDecl pass -> XRec pass ModuleName
ideclName = XRec (GhcPass p) ModuleName
mod'
                    , ideclPkgQual :: forall pass. ImportDecl pass -> ImportDeclPkgQual pass
ideclPkgQual = ImportDeclPkgQual (GhcPass p)
pkg
                    , ideclSource :: forall pass. ImportDecl pass -> IsBootInterface
ideclSource = IsBootInterface
from, ideclSafe :: forall pass. ImportDecl pass -> Bool
ideclSafe = Bool
safe
                    , ideclQualified :: forall pass. ImportDecl pass -> ImportDeclQualifiedStyle
ideclQualified = ImportDeclQualifiedStyle
qual, ideclImplicit :: forall pass. ImportDecl pass -> Bool
ideclImplicit = Bool
implicit
                    , ideclAs :: forall pass. ImportDecl pass -> Maybe (XRec pass ModuleName)
ideclAs = Maybe (XRec (GhcPass p) ModuleName)
as, ideclHiding :: forall pass. ImportDecl pass -> Maybe (Bool, XRec pass [LIE pass])
ideclHiding = Maybe (Bool, XRec (GhcPass p) [LIE (GhcPass p)])
spec })
      = SDoc -> Int -> SDoc -> SDoc
hang ([SDoc] -> SDoc
hsep [String -> SDoc
text String
"import", IsBootInterface -> SDoc
ppr_imp IsBootInterface
from, Bool -> SDoc
pp_implicit Bool
implicit, Bool -> SDoc
pp_safe Bool
safe,
                    ImportDeclQualifiedStyle -> Bool -> SDoc
pp_qual ImportDeclQualifiedStyle
qual Bool
False, ImportDeclPkgQual (GhcPass p) -> SDoc
forall a. Outputable a => a -> SDoc
ppr ImportDeclPkgQual (GhcPass p)
pkg, LocatedAn AnnListItem ModuleName -> SDoc
forall a. Outputable a => a -> SDoc
ppr XRec (GhcPass p) ModuleName
LocatedAn AnnListItem ModuleName
mod', ImportDeclQualifiedStyle -> Bool -> SDoc
pp_qual ImportDeclQualifiedStyle
qual Bool
True, Maybe (LocatedAn AnnListItem ModuleName) -> SDoc
forall {a}. Outputable a => Maybe a -> SDoc
pp_as Maybe (XRec (GhcPass p) ModuleName)
Maybe (LocatedAn AnnListItem ModuleName)
as])
             Int
4 (Maybe
  (Bool,
   GenLocated SrcSpanAnnL [GenLocated SrcSpanAnnA (IE (GhcPass p))])
-> SDoc
forall {a} {l}.
Outputable a =>
Maybe (Bool, GenLocated l [a]) -> SDoc
pp_spec Maybe (Bool, XRec (GhcPass p) [LIE (GhcPass p)])
Maybe
  (Bool,
   GenLocated SrcSpanAnnL [GenLocated SrcSpanAnnA (IE (GhcPass p))])
spec)
      where
        pp_implicit :: Bool -> SDoc
pp_implicit Bool
False = SDoc
empty
        pp_implicit Bool
True = String -> SDoc
text String
"(implicit)"
        pp_qual :: ImportDeclQualifiedStyle -> Bool -> SDoc
pp_qual ImportDeclQualifiedStyle
QualifiedPre Bool
False = String -> SDoc
text String
"qualified" 
        pp_qual ImportDeclQualifiedStyle
QualifiedPost Bool
True = String -> SDoc
text String
"qualified" 
        pp_qual ImportDeclQualifiedStyle
QualifiedPre Bool
True = SDoc
empty 
        pp_qual ImportDeclQualifiedStyle
QualifiedPost Bool
False = SDoc
empty 
        pp_qual ImportDeclQualifiedStyle
NotQualified Bool
_ = SDoc
empty
        pp_safe :: Bool -> SDoc
pp_safe Bool
False   = SDoc
empty
        pp_safe Bool
True    = String -> SDoc
text String
"safe"
        pp_as :: Maybe a -> SDoc
pp_as Maybe a
Nothing   = SDoc
empty
        pp_as (Just a
a)  = String -> SDoc
text String
"as" SDoc -> SDoc -> SDoc
<+> a -> SDoc
forall a. Outputable a => a -> SDoc
ppr a
a
        ppr_imp :: IsBootInterface -> SDoc
ppr_imp IsBootInterface
IsBoot = case SourceText
mSrcText of
                          SourceText
NoSourceText   -> String -> SDoc
text String
"{-# SOURCE #-}"
                          SourceText String
src -> String -> SDoc
text String
src SDoc -> SDoc -> SDoc
<+> String -> SDoc
text String
"#-}"
        ppr_imp IsBootInterface
NotBoot = SDoc
empty
        pp_spec :: Maybe (Bool, GenLocated l [a]) -> SDoc
pp_spec Maybe (Bool, GenLocated l [a])
Nothing             = SDoc
empty
        pp_spec (Just (Bool
False, (L l
_ [a]
ies))) = [a] -> SDoc
forall {a}. Outputable a => [a] -> SDoc
ppr_ies [a]
ies
        pp_spec (Just (Bool
True, (L l
_ [a]
ies))) = String -> SDoc
text String
"hiding" SDoc -> SDoc -> SDoc
<+> [a] -> SDoc
forall {a}. Outputable a => [a] -> SDoc
ppr_ies [a]
ies
        ppr_ies :: [a] -> SDoc
ppr_ies []  = String -> SDoc
text String
"()"
        ppr_ies [a]
ies = Char -> SDoc
char Char
'(' SDoc -> SDoc -> SDoc
<+> [a] -> SDoc
forall {a}. Outputable a => [a] -> SDoc
interpp'SP [a]
ies SDoc -> SDoc -> SDoc
<+> Char -> SDoc
char Char
')'
data IEWrappedName name
  = IEName                (LocatedN name)  
  | IEPattern EpaLocation (LocatedN name)  
  | IEType    EpaLocation (LocatedN name)  
  deriving (IEWrappedName name -> IEWrappedName name -> Bool
(IEWrappedName name -> IEWrappedName name -> Bool)
-> (IEWrappedName name -> IEWrappedName name -> Bool)
-> Eq (IEWrappedName name)
forall name.
Eq name =>
IEWrappedName name -> IEWrappedName name -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall name.
Eq name =>
IEWrappedName name -> IEWrappedName name -> Bool
== :: IEWrappedName name -> IEWrappedName name -> Bool
$c/= :: forall name.
Eq name =>
IEWrappedName name -> IEWrappedName name -> Bool
/= :: IEWrappedName name -> IEWrappedName name -> Bool
Eq,Typeable (IEWrappedName name)
Typeable (IEWrappedName name)
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> IEWrappedName name
    -> c (IEWrappedName name))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (IEWrappedName name))
-> (IEWrappedName name -> Constr)
-> (IEWrappedName name -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (IEWrappedName name)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (IEWrappedName name)))
-> ((forall b. Data b => b -> b)
    -> IEWrappedName name -> IEWrappedName name)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> IEWrappedName name -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> IEWrappedName name -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> IEWrappedName name -> m (IEWrappedName name))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> IEWrappedName name -> m (IEWrappedName name))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> IEWrappedName name -> m (IEWrappedName name))
-> Data (IEWrappedName name)
IEWrappedName name -> Constr
IEWrappedName name -> DataType
(forall b. Data b => b -> b)
-> IEWrappedName name -> IEWrappedName name
forall {name}. Data name => Typeable (IEWrappedName name)
forall name. Data name => IEWrappedName name -> Constr
forall name. Data name => IEWrappedName name -> DataType
forall name.
Data name =>
(forall b. Data b => b -> b)
-> IEWrappedName name -> IEWrappedName name
forall name u.
Data name =>
Int -> (forall d. Data d => d -> u) -> IEWrappedName name -> u
forall name u.
Data name =>
(forall d. Data d => d -> u) -> IEWrappedName name -> [u]
forall name r r'.
Data name =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r
forall name r r'.
Data name =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r
forall name (m :: * -> *).
(Data name, Monad m) =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
forall name (m :: * -> *).
(Data name, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
forall name (c :: * -> *).
Data name =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (IEWrappedName name)
forall name (c :: * -> *).
Data name =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> IEWrappedName name
-> c (IEWrappedName name)
forall name (t :: * -> *) (c :: * -> *).
(Data name, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (IEWrappedName name))
forall name (t :: * -> * -> *) (c :: * -> *).
(Data name, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (IEWrappedName name))
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> IEWrappedName name -> u
forall u. (forall d. Data d => d -> u) -> IEWrappedName name -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (IEWrappedName name)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> IEWrappedName name
-> c (IEWrappedName name)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (IEWrappedName name))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (IEWrappedName name))
$cgfoldl :: forall name (c :: * -> *).
Data name =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> IEWrappedName name
-> c (IEWrappedName name)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> IEWrappedName name
-> c (IEWrappedName name)
$cgunfold :: forall name (c :: * -> *).
Data name =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (IEWrappedName name)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (IEWrappedName name)
$ctoConstr :: forall name. Data name => IEWrappedName name -> Constr
toConstr :: IEWrappedName name -> Constr
$cdataTypeOf :: forall name. Data name => IEWrappedName name -> DataType
dataTypeOf :: IEWrappedName name -> DataType
$cdataCast1 :: forall name (t :: * -> *) (c :: * -> *).
(Data name, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (IEWrappedName name))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (IEWrappedName name))
$cdataCast2 :: forall name (t :: * -> * -> *) (c :: * -> *).
(Data name, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (IEWrappedName name))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (IEWrappedName name))
$cgmapT :: forall name.
Data name =>
(forall b. Data b => b -> b)
-> IEWrappedName name -> IEWrappedName name
gmapT :: (forall b. Data b => b -> b)
-> IEWrappedName name -> IEWrappedName name
$cgmapQl :: forall name r r'.
Data name =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r
$cgmapQr :: forall name r r'.
Data name =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IEWrappedName name -> r
$cgmapQ :: forall name u.
Data name =>
(forall d. Data d => d -> u) -> IEWrappedName name -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> IEWrappedName name -> [u]
$cgmapQi :: forall name u.
Data name =>
Int -> (forall d. Data d => d -> u) -> IEWrappedName name -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> IEWrappedName name -> u
$cgmapM :: forall name (m :: * -> *).
(Data name, Monad m) =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
$cgmapMp :: forall name (m :: * -> *).
(Data name, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
$cgmapMo :: forall name (m :: * -> *).
(Data name, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IEWrappedName name -> m (IEWrappedName name)
Data)
type LIEWrappedName name = LocatedA (IEWrappedName name)
type LIE pass = XRec pass (IE pass)
        
        
        
        
type instance Anno (IE (GhcPass p)) = SrcSpanAnnA
data IE pass
  = IEVar       (XIEVar pass) (LIEWrappedName (IdP pass))
        
  | IEThingAbs  (XIEThingAbs pass) (LIEWrappedName (IdP pass))
        
        
        
        
        
        
        
  | IEThingAll  (XIEThingAll pass) (LIEWrappedName (IdP pass))
        
        
        
        
        
        
        
        
        
  | IEThingWith (XIEThingWith pass)
                (LIEWrappedName (IdP pass))
                IEWildcard
                [LIEWrappedName (IdP pass)]
        
        
        
        
        
        
        
        
        
  | IEModuleContents  (XIEModuleContents pass) (XRec pass ModuleName)
        
        
        
        
        
        
  | IEGroup             (XIEGroup pass) Int (LHsDoc pass) 
  | IEDoc               (XIEDoc pass) (LHsDoc pass)       
  | IEDocNamed          (XIEDocNamed pass) String    
  | XIE !(XXIE pass)
type instance XIEVar             GhcPs = NoExtField
type instance XIEVar             GhcRn = NoExtField
type instance XIEVar             GhcTc = NoExtField
type instance XIEThingAbs        (GhcPass _) = EpAnn [AddEpAnn]
type instance XIEThingAll        (GhcPass _) = EpAnn [AddEpAnn]
type instance XIEThingWith       (GhcPass 'Parsed)      = EpAnn [AddEpAnn]
type instance XIEThingWith       (GhcPass 'Renamed)     = [Located FieldLabel]
type instance XIEThingWith       (GhcPass 'Typechecked) = NoExtField
type instance XIEModuleContents  GhcPs = EpAnn [AddEpAnn]
type instance XIEModuleContents  GhcRn = NoExtField
type instance XIEModuleContents  GhcTc = NoExtField
type instance XIEGroup           (GhcPass _) = NoExtField
type instance XIEDoc             (GhcPass _) = NoExtField
type instance XIEDocNamed        (GhcPass _) = NoExtField
type instance XXIE               (GhcPass _) = DataConCantHappen
type instance Anno (LocatedA (IE (GhcPass p))) = SrcSpanAnnA
data IEWildcard = NoIEWildcard | IEWildcard Int deriving (IEWildcard -> IEWildcard -> Bool
(IEWildcard -> IEWildcard -> Bool)
-> (IEWildcard -> IEWildcard -> Bool) -> Eq IEWildcard
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: IEWildcard -> IEWildcard -> Bool
== :: IEWildcard -> IEWildcard -> Bool
$c/= :: IEWildcard -> IEWildcard -> Bool
/= :: IEWildcard -> IEWildcard -> Bool
Eq, Typeable IEWildcard
Typeable IEWildcard
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> IEWildcard -> c IEWildcard)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c IEWildcard)
-> (IEWildcard -> Constr)
-> (IEWildcard -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c IEWildcard))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c IEWildcard))
-> ((forall b. Data b => b -> b) -> IEWildcard -> IEWildcard)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> IEWildcard -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> IEWildcard -> r)
-> (forall u. (forall d. Data d => d -> u) -> IEWildcard -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> IEWildcard -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard)
-> Data IEWildcard
IEWildcard -> Constr
IEWildcard -> DataType
(forall b. Data b => b -> b) -> IEWildcard -> IEWildcard
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> IEWildcard -> u
forall u. (forall d. Data d => d -> u) -> IEWildcard -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IEWildcard -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IEWildcard -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IEWildcard
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IEWildcard -> c IEWildcard
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IEWildcard)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IEWildcard)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IEWildcard -> c IEWildcard
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IEWildcard -> c IEWildcard
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IEWildcard
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IEWildcard
$ctoConstr :: IEWildcard -> Constr
toConstr :: IEWildcard -> Constr
$cdataTypeOf :: IEWildcard -> DataType
dataTypeOf :: IEWildcard -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IEWildcard)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IEWildcard)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IEWildcard)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c IEWildcard)
$cgmapT :: (forall b. Data b => b -> b) -> IEWildcard -> IEWildcard
gmapT :: (forall b. Data b => b -> b) -> IEWildcard -> IEWildcard
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IEWildcard -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IEWildcard -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IEWildcard -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IEWildcard -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> IEWildcard -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> IEWildcard -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> IEWildcard -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> IEWildcard -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> IEWildcard -> m IEWildcard
Data)
ieName :: IE (GhcPass p) -> IdP (GhcPass p)
ieName :: forall (p :: Pass). IE (GhcPass p) -> IdP (GhcPass p)
ieName (IEVar XIEVar (GhcPass p)
_ (L SrcSpanAnnA
_ IEWrappedName (IdP (GhcPass p))
n))            = IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName (IdP (GhcPass p))
IEWrappedName (IdGhcP p)
n
ieName (IEThingAbs  XIEThingAbs (GhcPass p)
_ (L SrcSpanAnnA
_ IEWrappedName (IdP (GhcPass p))
n))      = IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName (IdP (GhcPass p))
IEWrappedName (IdGhcP p)
n
ieName (IEThingWith XIEThingWith (GhcPass p)
_ (L SrcSpanAnnA
_ IEWrappedName (IdP (GhcPass p))
n) IEWildcard
_ [GenLocated SrcSpanAnnA (IEWrappedName (IdP (GhcPass p)))]
_)  = IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName (IdP (GhcPass p))
IEWrappedName (IdGhcP p)
n
ieName (IEThingAll  XIEThingAll (GhcPass p)
_ (L SrcSpanAnnA
_ IEWrappedName (IdP (GhcPass p))
n))      = IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName (IdP (GhcPass p))
IEWrappedName (IdGhcP p)
n
ieName IE (GhcPass p)
_ = String -> IdGhcP p
forall a. String -> a
panic String
"ieName failed pattern match!"
ieNames :: IE (GhcPass p) -> [IdP (GhcPass p)]
ieNames :: forall (p :: Pass). IE (GhcPass p) -> [IdP (GhcPass p)]
ieNames (IEVar       XIEVar (GhcPass p)
_ (L SrcSpanAnnA
_ IEWrappedName (IdP (GhcPass p))
n)   )   = [IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName (IdP (GhcPass p))
IEWrappedName (IdGhcP p)
n]
ieNames (IEThingAbs  XIEThingAbs (GhcPass p)
_ (L SrcSpanAnnA
_ IEWrappedName (IdP (GhcPass p))
n)   )   = [IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName (IdP (GhcPass p))
IEWrappedName (IdGhcP p)
n]
ieNames (IEThingAll  XIEThingAll (GhcPass p)
_ (L SrcSpanAnnA
_ IEWrappedName (IdP (GhcPass p))
n)   )   = [IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName (IdP (GhcPass p))
IEWrappedName (IdGhcP p)
n]
ieNames (IEThingWith XIEThingWith (GhcPass p)
_ (L SrcSpanAnnA
_ IEWrappedName (IdP (GhcPass p))
n) IEWildcard
_ [GenLocated SrcSpanAnnA (IEWrappedName (IdP (GhcPass p)))]
ns) = IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName (IdP (GhcPass p))
IEWrappedName (IdGhcP p)
n
                                     IdGhcP p -> [IdGhcP p] -> [IdGhcP p]
forall a. a -> [a] -> [a]
: (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p)) -> IdGhcP p)
-> [GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))]
-> [IdGhcP p]
forall a b. (a -> b) -> [a] -> [b]
map (IEWrappedName (IdGhcP p) -> IdGhcP p
forall name. IEWrappedName name -> name
ieWrappedName (IEWrappedName (IdGhcP p) -> IdGhcP p)
-> (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
    -> IEWrappedName (IdGhcP p))
-> GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> IdGhcP p
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> IEWrappedName (IdGhcP p)
forall l e. GenLocated l e -> e
unLoc) [GenLocated SrcSpanAnnA (IEWrappedName (IdP (GhcPass p)))]
[GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))]
ns
ieNames (IEModuleContents {})     = []
ieNames (IEGroup          {})     = []
ieNames (IEDoc            {})     = []
ieNames (IEDocNamed       {})     = []
ieWrappedLName :: IEWrappedName name -> LocatedN name
ieWrappedLName :: forall name. IEWrappedName name -> LocatedN name
ieWrappedLName (IEName      LocatedN name
ln) = LocatedN name
ln
ieWrappedLName (IEPattern EpaLocation
_ LocatedN name
ln) = LocatedN name
ln
ieWrappedLName (IEType    EpaLocation
_ LocatedN name
ln) = LocatedN name
ln
ieWrappedName :: IEWrappedName name -> name
ieWrappedName :: forall name. IEWrappedName name -> name
ieWrappedName = GenLocated (SrcSpanAnn' (EpAnn NameAnn)) name -> name
forall l e. GenLocated l e -> e
unLoc (GenLocated (SrcSpanAnn' (EpAnn NameAnn)) name -> name)
-> (IEWrappedName name
    -> GenLocated (SrcSpanAnn' (EpAnn NameAnn)) name)
-> IEWrappedName name
-> name
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IEWrappedName name -> GenLocated (SrcSpanAnn' (EpAnn NameAnn)) name
forall name. IEWrappedName name -> LocatedN name
ieWrappedLName
lieWrappedName :: LIEWrappedName name -> name
lieWrappedName :: forall name. LIEWrappedName name -> name
lieWrappedName (L SrcSpanAnnA
_ IEWrappedName name
n) = IEWrappedName name -> name
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName name
n
ieLWrappedName :: LIEWrappedName name -> LocatedN name
ieLWrappedName :: forall name. LIEWrappedName name -> LocatedN name
ieLWrappedName (L SrcSpanAnnA
_ IEWrappedName name
n) = IEWrappedName name -> LocatedN name
forall name. IEWrappedName name -> LocatedN name
ieWrappedLName IEWrappedName name
n
replaceWrappedName :: IEWrappedName name1 -> name2 -> IEWrappedName name2
replaceWrappedName :: forall name1 name2.
IEWrappedName name1 -> name2 -> IEWrappedName name2
replaceWrappedName (IEName      (L SrcSpanAnn' (EpAnn NameAnn)
l name1
_)) name2
n = LocatedN name2 -> IEWrappedName name2
forall name. LocatedN name -> IEWrappedName name
IEName      (SrcSpanAnn' (EpAnn NameAnn) -> name2 -> LocatedN name2
forall l e. l -> e -> GenLocated l e
L SrcSpanAnn' (EpAnn NameAnn)
l name2
n)
replaceWrappedName (IEPattern EpaLocation
r (L SrcSpanAnn' (EpAnn NameAnn)
l name1
_)) name2
n = EpaLocation -> LocatedN name2 -> IEWrappedName name2
forall name. EpaLocation -> LocatedN name -> IEWrappedName name
IEPattern EpaLocation
r (SrcSpanAnn' (EpAnn NameAnn) -> name2 -> LocatedN name2
forall l e. l -> e -> GenLocated l e
L SrcSpanAnn' (EpAnn NameAnn)
l name2
n)
replaceWrappedName (IEType    EpaLocation
r (L SrcSpanAnn' (EpAnn NameAnn)
l name1
_)) name2
n = EpaLocation -> LocatedN name2 -> IEWrappedName name2
forall name. EpaLocation -> LocatedN name -> IEWrappedName name
IEType    EpaLocation
r (SrcSpanAnn' (EpAnn NameAnn) -> name2 -> LocatedN name2
forall l e. l -> e -> GenLocated l e
L SrcSpanAnn' (EpAnn NameAnn)
l name2
n)
replaceLWrappedName :: LIEWrappedName name1 -> name2 -> LIEWrappedName name2
replaceLWrappedName :: forall name1 name2.
LIEWrappedName name1 -> name2 -> LIEWrappedName name2
replaceLWrappedName (L SrcSpanAnnA
l IEWrappedName name1
n) name2
n' = SrcSpanAnnA
-> IEWrappedName name2
-> GenLocated SrcSpanAnnA (IEWrappedName name2)
forall l e. l -> e -> GenLocated l e
L SrcSpanAnnA
l (IEWrappedName name1 -> name2 -> IEWrappedName name2
forall name1 name2.
IEWrappedName name1 -> name2 -> IEWrappedName name2
replaceWrappedName IEWrappedName name1
n name2
n')
instance OutputableBndrId p => Outputable (IE (GhcPass p)) where
    ppr :: IE (GhcPass p) -> SDoc
ppr (IEVar       XIEVar (GhcPass p)
_     LIEWrappedName (IdP (GhcPass p))
var) = IEWrappedName (IdGhcP p) -> SDoc
forall a. Outputable a => a -> SDoc
ppr (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> IEWrappedName (IdGhcP p)
forall l e. GenLocated l e -> e
unLoc LIEWrappedName (IdP (GhcPass p))
GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
var)
    ppr (IEThingAbs  XIEThingAbs (GhcPass p)
_   LIEWrappedName (IdP (GhcPass p))
thing) = IEWrappedName (IdGhcP p) -> SDoc
forall a. Outputable a => a -> SDoc
ppr (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> IEWrappedName (IdGhcP p)
forall l e. GenLocated l e -> e
unLoc LIEWrappedName (IdP (GhcPass p))
GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
thing)
    ppr (IEThingAll  XIEThingAll (GhcPass p)
_   LIEWrappedName (IdP (GhcPass p))
thing) = [SDoc] -> SDoc
hcat [IEWrappedName (IdGhcP p) -> SDoc
forall a. Outputable a => a -> SDoc
ppr (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> IEWrappedName (IdGhcP p)
forall l e. GenLocated l e -> e
unLoc LIEWrappedName (IdP (GhcPass p))
GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
thing), String -> SDoc
text String
"(..)"]
    ppr (IEThingWith XIEThingWith (GhcPass p)
flds LIEWrappedName (IdP (GhcPass p))
thing IEWildcard
wc [LIEWrappedName (IdP (GhcPass p))]
withs)
        = IEWrappedName (IdGhcP p) -> SDoc
forall a. Outputable a => a -> SDoc
ppr (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> IEWrappedName (IdGhcP p)
forall l e. GenLocated l e -> e
unLoc LIEWrappedName (IdP (GhcPass p))
GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
thing) SDoc -> SDoc -> SDoc
<> SDoc -> SDoc
parens ([SDoc] -> SDoc
fsep (SDoc -> [SDoc] -> [SDoc]
punctuate SDoc
comma
                                              ([SDoc]
ppWiths [SDoc] -> [SDoc] -> [SDoc]
forall a. [a] -> [a] -> [a]
++ [SDoc]
ppFields) ))
      where
        ppWiths :: [SDoc]
ppWiths =
          case IEWildcard
wc of
              IEWildcard
NoIEWildcard ->
                (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p)) -> SDoc)
-> [GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))] -> [SDoc]
forall a b. (a -> b) -> [a] -> [b]
map (IEWrappedName (IdGhcP p) -> SDoc
forall a. Outputable a => a -> SDoc
ppr (IEWrappedName (IdGhcP p) -> SDoc)
-> (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
    -> IEWrappedName (IdGhcP p))
-> GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> SDoc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> IEWrappedName (IdGhcP p)
forall l e. GenLocated l e -> e
unLoc) [LIEWrappedName (IdP (GhcPass p))]
[GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))]
withs
              IEWildcard Int
pos ->
                let ([SDoc]
bs, [SDoc]
as) = Int -> [SDoc] -> ([SDoc], [SDoc])
forall a. Int -> [a] -> ([a], [a])
splitAt Int
pos ((GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p)) -> SDoc)
-> [GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))] -> [SDoc]
forall a b. (a -> b) -> [a] -> [b]
map (IEWrappedName (IdGhcP p) -> SDoc
forall a. Outputable a => a -> SDoc
ppr (IEWrappedName (IdGhcP p) -> SDoc)
-> (GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
    -> IEWrappedName (IdGhcP p))
-> GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> SDoc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))
-> IEWrappedName (IdGhcP p)
forall l e. GenLocated l e -> e
unLoc) [LIEWrappedName (IdP (GhcPass p))]
[GenLocated SrcSpanAnnA (IEWrappedName (IdGhcP p))]
withs)
                in [SDoc]
bs [SDoc] -> [SDoc] -> [SDoc]
forall a. [a] -> [a] -> [a]
++ [String -> SDoc
text String
".."] [SDoc] -> [SDoc] -> [SDoc]
forall a. [a] -> [a] -> [a]
++ [SDoc]
as
        ppFields :: [SDoc]
ppFields =
          case forall (p :: Pass). IsPass p => GhcPass p
ghcPass @p of
            GhcPass p
GhcRn -> (Located FieldLabel -> SDoc) -> [Located FieldLabel] -> [SDoc]
forall a b. (a -> b) -> [a] -> [b]
map Located FieldLabel -> SDoc
forall a. Outputable a => a -> SDoc
ppr [Located FieldLabel]
XIEThingWith (GhcPass p)
flds
            GhcPass p
_     -> []
    ppr (IEModuleContents XIEModuleContents (GhcPass p)
_ XRec (GhcPass p) ModuleName
mod')
        = String -> SDoc
text String
"module" SDoc -> SDoc -> SDoc
<+> LocatedAn AnnListItem ModuleName -> SDoc
forall a. Outputable a => a -> SDoc
ppr XRec (GhcPass p) ModuleName
LocatedAn AnnListItem ModuleName
mod'
    ppr (IEGroup XIEGroup (GhcPass p)
_ Int
n LHsDoc (GhcPass p)
_)           = String -> SDoc
text (String
"<IEGroup: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
n String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
">")
    ppr (IEDoc XIEDoc (GhcPass p)
_ LHsDoc (GhcPass p)
doc)             = LHsDoc (GhcPass p) -> SDoc
forall a. Outputable a => a -> SDoc
ppr LHsDoc (GhcPass p)
doc
    ppr (IEDocNamed XIEDocNamed (GhcPass p)
_ String
string)     = String -> SDoc
text (String
"<IEDocNamed: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
string String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
">")
instance (HasOccName name) => HasOccName (IEWrappedName name) where
  occName :: IEWrappedName name -> OccName
occName IEWrappedName name
w = name -> OccName
forall name. HasOccName name => name -> OccName
occName (IEWrappedName name -> name
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName name
w)
instance (OutputableBndr name) => OutputableBndr (IEWrappedName name) where
  pprBndr :: BindingSite -> IEWrappedName name -> SDoc
pprBndr BindingSite
bs   IEWrappedName name
w = BindingSite -> name -> SDoc
forall a. OutputableBndr a => BindingSite -> a -> SDoc
pprBndr BindingSite
bs   (IEWrappedName name -> name
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName name
w)
  pprPrefixOcc :: IEWrappedName name -> SDoc
pprPrefixOcc IEWrappedName name
w = name -> SDoc
forall a. OutputableBndr a => a -> SDoc
pprPrefixOcc (IEWrappedName name -> name
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName name
w)
  pprInfixOcc :: IEWrappedName name -> SDoc
pprInfixOcc  IEWrappedName name
w = name -> SDoc
forall a. OutputableBndr a => a -> SDoc
pprInfixOcc  (IEWrappedName name -> name
forall name. IEWrappedName name -> name
ieWrappedName IEWrappedName name
w)
instance (OutputableBndr name) => Outputable (IEWrappedName name) where
  ppr :: IEWrappedName name -> SDoc
ppr (IEName      LocatedN name
n) = name -> SDoc
forall a. OutputableBndr a => a -> SDoc
pprPrefixOcc (LocatedN name -> name
forall l e. GenLocated l e -> e
unLoc LocatedN name
n)
  ppr (IEPattern EpaLocation
_ LocatedN name
n) = String -> SDoc
text String
"pattern" SDoc -> SDoc -> SDoc
<+> name -> SDoc
forall a. OutputableBndr a => a -> SDoc
pprPrefixOcc (LocatedN name -> name
forall l e. GenLocated l e -> e
unLoc LocatedN name
n)
  ppr (IEType    EpaLocation
_ LocatedN name
n) = String -> SDoc
text String
"type"    SDoc -> SDoc -> SDoc
<+> name -> SDoc
forall a. OutputableBndr a => a -> SDoc
pprPrefixOcc (LocatedN name -> name
forall l e. GenLocated l e -> e
unLoc LocatedN name
n)
pprImpExp :: (HasOccName name, OutputableBndr name) => name -> SDoc
pprImpExp :: forall name. (HasOccName name, OutputableBndr name) => name -> SDoc
pprImpExp name
name = SDoc
type_pref SDoc -> SDoc -> SDoc
<+> name -> SDoc
forall a. OutputableBndr a => a -> SDoc
pprPrefixOcc name
name
    where
    occ :: OccName
occ = name -> OccName
forall name. HasOccName name => name -> OccName
occName name
name
    type_pref :: SDoc
type_pref | OccName -> Bool
isTcOcc OccName
occ Bool -> Bool -> Bool
&& OccName -> Bool
isSymOcc OccName
occ = String -> SDoc
text String
"type"
              | Bool
otherwise                   = SDoc
empty