{-# LANGUAGE CPP #-}

-- | Thin compatability layer that re-exports things from GHC.
module Calligraphy.Compat.GHC
  ( BindType (..),
    ContextInfo (..),
    DeclType (..),
    HieAST (..),
    HieASTs (..),
    HieFile (..),
    HieFileResult (..),
    HieType (..),
    HieTypeFlat,
    Identifier,
    IdentifierDetails (..),
    IfaceTyCon (..),
    ModuleName,
    Name,
    NameCache,
    NodeInfo (..),
    RealSrcLoc,
    RealSrcSpan,
    RecFieldContext (..),
    Scope (..),
    Span,
    TypeIndex,
    availNames,
    getKey,
    getOccString,
    hieVersion,
    initNameCache,
    mkSplitUniqSupply,
    moduleName,
    moduleNameString,
    nameUnique,
    realSrcSpanEnd,
    realSrcSpanStart,
    srcSpanStartCol,
    srcSpanStartLine,
    srcSpanEndCol,
    srcSpanEndLine,
    srcLocCol,
    srcLocLine,
  )
where

import Calligraphy.Prelude

#if MIN_VERSION_ghc(9,6,0)
import Language.Haskell.Syntax.Module.Name (moduleNameString, ModuleName)
#elif MIN_VERSION_ghc(9,0,0)
import GHC.Unit.Module.Name (moduleNameString, ModuleName)
#endif

#if MIN_VERSION_ghc(9,0,0)
import GHC.Iface.Type
import GHC.Types.Avail
import GHC.Types.Name
import GHC.Types.Unique
import GHC.Types.Unique.Supply
import GHC.Unit.Types
#else
import Avail
import GHC
import HieBin
import HieTypes
import IfaceType
import Name
import NameCache
import SrcLoc
import UniqSupply
import Unique
#endif