packages feed

ghc-tcplugin-api-0.20.0.0: src/GHC/Builtins.hs

{-# LANGUAGE CPP #-}

-- | Helper umbrella re-exports of various known entities to GHC: known-key
-- uniques, wired-in types.
module GHC.Builtins
  ( -- * Known-key uniques
    hasKey
  , eqTyConKey, heqTyConKey, coercibleTyConKey
  , eqPrimTyConKey, eqReprPrimTyConKey, eqPhantPrimTyConKey

    -- * Custom type errors (prefer using 'GHC.TcPlugin.API.mkTcPluginErrorTy')
#if MIN_VERSION_ghc(10,1,0)
  , errorMessageTypeErrorFamKey
  , typeErrorTextDataConKey, typeErrorShowTypeDataConKey
  , typeErrorAppendDataConKey, typeErrorVAppendDataConKey
#else
  , errorMessageTypeErrorFamName
  , typeErrorTextDataConName, typeErrorShowTypeDataConName
  , typeErrorAppendDataConName, typeErrorVAppendDataConName
#endif

    -- * Equality and coercions
  , eqTyCon, heqTyCon, coercibleTyCon
  , eqPrimTyCon, eqReprPrimTyCon, eqPhantPrimTyCon
  , eqClass, heqClass, coercibleClass
  , eqDataCon, heqDataCon, coercibleDataCon
#if MIN_VERSION_ghc(8,10,0)
  , equalityTyCon
#endif

    -- * Kinds
  , liftedTypeKind, constraintKind, typeSymbolKind
  , unboxedTupleKind, unboxedSumKind
  , liftedTypeKindTyCon, constraintKindTyCon, tYPETyCon
  , anyTy, anyTyCon, anyTypeOfKind
#if MIN_VERSION_ghc(8,10,0)
  , typeToTypeKind
#endif
#if MIN_VERSION_ghc(9,1,0)
  , unliftedTypeKind
#endif
#if MIN_VERSION_ghc(9,3,0)
  , zeroBitTypeKind
#endif
#if MIN_VERSION_ghc(9,5,0)
  , tYPEKind, cONSTRAINTKind, cONSTRAINTTyCon, fUNTyCon
#endif

    -- * Runtime representations, levities and multiplicities
  , runtimeRepTy, runtimeRepTyCon, liftedRepTy
#if MIN_VERSION_ghc(9,0,0)
  , multiplicityTy, multiplicityTyCon
  , manyDataCon, oneDataCon, manyDataConTy, oneDataConTy
#endif
#if MIN_VERSION_ghc(9,1,0)
  , unliftedRepTy, boxedRepDataConTyCon, levityTyCon
  , liftedDataConTy, unliftedDataConTy
  , liftedDataConTyCon, unliftedDataConTyCon
#endif
#if MIN_VERSION_ghc(9,3,0)
  , levityTy, zeroBitRepTy
#endif

    -- * Wired-in types
  , unitTy, unitTyCon, unitDataCon, unitDataConId
  , boolTy, boolTyCon, trueDataCon, falseDataCon
  , promotedTrueDataCon, promotedFalseDataCon
  , orderingTyCon, promotedLTDataCon, promotedEQDataCon, promotedGTDataCon
  , charTy, charTyCon, charDataCon
  , intTy, intTyCon, intDataCon
  , wordTy, wordTyCon, wordDataCon
  , floatTy, floatTyCon, doubleTy, doubleTyCon
  , stringTy
  , listTyCon, nilDataCon, consDataCon
  , promotedNilDataCon, promotedConsDataCon
  , maybeTyCon, justDataCon, nothingDataCon
  , promotedJustDataCon, promotedNothingDataCon
#if MIN_VERSION_ghc(9,0,0)
  , integerTy, integerTyCon, naturalTy, naturalTyCon
#endif
#if !MIN_VERSION_ghc(9,1,0)
  , typeNatKind
#endif

    -- * Tuples and sums
  , tupleTyCon, tupleDataCon, promotedTupleDataCon
  , sumTyCon, sumDataCon
  , mkTupleTy, mkBoxedTupleTy, mkSumTy
  , mkListTy, mkPromotedListTy
#if MIN_VERSION_ghc(8,10,0)
  , mkTupleTy1
#endif
#if MIN_VERSION_ghc(9,1,0)
  , cTupleTyCon, cTupleDataCon
  , mkMaybeTy, mkPromotedMaybeTy, mkPromotedPairTy
#endif
#if MIN_VERSION_ghc(9,5,0)
  , mkConstraintTupleTy
#endif

    -- * Type-level literals
  , typeNatTyCons, typeNatCoAxiomRules
  , typeNatAddTyCon, typeNatSubTyCon, typeNatMulTyCon, typeNatExpTyCon
  , typeNatDivTyCon, typeNatModTyCon, typeNatLogTyCon, typeNatCmpTyCon
  , typeSymbolCmpTyCon, typeSymbolAppendTyCon, typeSymbolKindCon
#if MIN_VERSION_ghc(9,1,0)
  , typeConsSymbolTyCon, typeUnconsSymbolTyCon
  , typeCharCmpTyCon, typeCharToNatTyCon, typeNatToCharTyCon
#endif

    -- * Primitive types
  , intPrimTy, wordPrimTy, charPrimTy, floatPrimTy, doublePrimTy
  , realWorldTy, realWorldTyCon, realWorldStatePrimTy
  , mkStatePrimTy, mkProxyPrimTy, proxyPrimTyCon
  )
  where

-- ghc
#if MIN_VERSION_ghc(10,1,0)
import GHC.Builtin.KnownKeys
import GHC.Builtin.WiredIn.Prim
import GHC.Builtin.WiredIn.TypeLits
import GHC.Builtin.WiredIn.Types
#else
import GHC.Builtin.Names
import GHC.Builtin.Types
import GHC.Builtin.Types.Literals
import GHC.Builtin.Types.Prim
#endif