+{-# OPTIONS_GHC -XNoImplicitPrelude #-}
-----------------------------------------------------------------------------
-- |
-- Module : Unsafe.Coerce
-- type to any other type. Needless to say, if you use this function,
-- it is your responsibility to ensure that the old and new types have
-- identical internal representations, in order to prevent runtime corruption.
+--
+-- The types for which 'unsafeCoerce' is representation-safe may differ
+-- from compiler to compiler (and version to version).
+--
+-- * Documentation for correct usage in GHC will be found under
+-- 'unsafeCoerce#' in GHC.Base (around which 'unsafeCoerce' is just a
+-- trivial wrapper).
+--
+-- * In nhc98, the only representation-safe coercions are between Enum
+-- types with the same range (e.g. Int, Int32, Char, Word32),
+-- or between a newtype and the type that it wraps.
module Unsafe.Coerce (unsafeCoerce) where
#if defined(__GLASGOW_HASKELL__)
-import GHC.Base (unsafeCoerce#)
+import GHC.Prim (unsafeCoerce#)
unsafeCoerce :: a -> b
unsafeCoerce = unsafeCoerce#
#endif
#endif
#if defined(__HUGS__)
-import Hugs.Base (unsafeCoerce)
+import Hugs.IOExts (unsafeCoerce)
#endif