typelet-0.1.4: src/TypeLet/Plugin/GhcTcPluginAPI.hs
{-# LANGUAGE CPP #-}
-- | Thin layer around ghc-tcplugin-api
module TypeLet.Plugin.GhcTcPluginAPI (
-- * Standard exports
module GHC.TcPlugin.API
, module GHC.Utils.Outputable
-- * Additional re-exports
-- ** Substitutions
, Subst -- opaque
, Subst.substTy
, Subst.substTyWith
, Subst.zipTvSubst
, elemVarSet
, tyCoVarsOfType
) where
import GHC.TcPlugin.API
import GHC.Utils.Outputable
#if MIN_VERSION_ghc(9,0,0)
import GHC.Core.TyCo.FVs (tyCoVarsOfType)
import GHC.Types.Var.Set (elemVarSet)
import qualified GHC.Core.TyCo.Subst as Subst
#else
import VarSet (elemVarSet)
import TcType (tyCoVarsOfType)
import qualified TcType as Subst
#endif
{-------------------------------------------------------------------------------
TCvSubst was renamed to Subst in ghc 9.6
-------------------------------------------------------------------------------}
#if MIN_VERSION_ghc(9,6,0)
import GHC.Core.TyCo.Subst (Subst)
#elif MIN_VERSION_ghc(9,0,0)
import GHC.Core.TyCo.Subst (TCvSubst)
#else
import TcType (TCvSubst)
#endif
#if !MIN_VERSION_ghc(9,6,0)
type Subst = TCvSubst
#endif