{-# LANGUAGE CPP #-}
{-# LANGUAGE ScopedTypeVariables #-}

module Distribution.Compat.Typeable
  ( Typeable
  , TypeRep
  , typeRep
  ) where

#if MIN_VERSION_base(4,7,0)
import Data.Typeable (Typeable, TypeRep, typeRep)
#else
import Data.Typeable (Typeable, TypeRep, typeOf)
#endif

#if !MIN_VERSION_base(4,7,0)
typeRep :: forall a proxy. Typeable a => proxy a -> TypeRep
typeRep _ = typeOf (undefined :: a)
#endif