Use explicit language extensions & remove extension fields from base.cabal
[ghc-base.git] / System / Mem / StableName.hs
index 8a3c858..d7d27a3 100644 (file)
@@ -1,3 +1,11 @@
+{-# LANGUAGE CPP #-}
+#ifdef __GLASGOW_HASKELL__
+{-# LANGUAGE MagicHash #-}
+#if !defined(__PARALLEL_HASKELL__)
+{-# LANGUAGE UnboxedTuples #-}
+#endif
+#endif
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  System.Mem.StableName
@@ -38,7 +46,7 @@ import Hugs.Stable
 #endif
 
 #ifdef __GLASGOW_HASKELL__
-import GHC.IOBase      ( IO(..) )
+import GHC.IO           ( IO(..) )
 import GHC.Base                ( Int(..), StableName#, makeStableName#
                        , eqStableName#, stableNameToInt# )
 
@@ -55,12 +63,14 @@ import GHC.Base             ( Int(..), StableName#, makeStableName#
    the same object.
 
   The reverse is not necessarily true: if two stable names are not
-  equal, then the objects they name may still be equal.
+  equal, then the objects they name may still be equal.  Note in particular
+  that `mkStableName` may return a different `StableName` after an
+  object is evaluated.
 
-  Stable Names are similar to Stable Pointers ('Foreign.StablePtr'),
+  Stable Names are similar to Stable Pointers ("Foreign.StablePtr"),
   but differ in the following ways:
 
-  * There is no @freeStableName@ operation, unlike 'Foreign.StablePtr's.
+  * There is no @freeStableName@ operation, unlike "Foreign.StablePtr"s.
     Stable names are reclaimed by the runtime system when they are no
     longer needed.