[project @ 2005-02-01 16:47:27 by malcolm]
[ghc-base.git] / Data / Version.hs
index 8ffe754..8aa5bb1 100644 (file)
@@ -6,7 +6,7 @@
 -- 
 -- Maintainer  :  libraries@haskell.org
 -- Stability   :  experimental
--- Portability :  portable
+-- Portability :  non-portable (local universal quantification in ReadP)
 --
 -- A general library for representation and manipulation of versions.
 -- 
@@ -37,13 +37,15 @@ import Prelude -- necessary to get dependencies right
 -- of GHC.  In which case, we might need to pick up ReadP from 
 -- Distribution.Compat.ReadP, because the version in 
 -- Text.ParserCombinators.ReadP doesn't have all the combinators we need.
-#if __GLASGOW_HASKELL__ <= 602
-import Distribution.Compat.ReadP
-#else
+#if __GLASGOW_HASKELL__ >= 603 || __HUGS__ || __NHC__
 import Text.ParserCombinators.ReadP
+#else
+import Distribution.Compat.ReadP
 #endif
 
-#if __GLASGOW_HASKELL__ < 602
+#if !__GLASGOW_HASKELL__
+import Data.Typeable   ( Typeable, TyCon, mkTyCon, mkTyConApp )
+#elif __GLASGOW_HASKELL__ < 602
 import Data.Dynamic    ( Typeable(..), TyCon, mkTyCon, mkAppTy )
 #else
 import Data.Typeable   ( Typeable )
@@ -102,9 +104,15 @@ data Version =
 #endif
        )
 
-#if __GLASGOW_HASKELL__ < 602
+#if !__GLASGOW_HASKELL__
 versionTc :: TyCon
-versionTc = mkTyCon "()"
+versionTc = mkTyCon "Version"
+
+instance Typeable Version where
+  typeOf _ = mkTyConApp versionTc []
+#elif __GLASGOW_HASKELL__ < 602
+versionTc :: TyCon
+versionTc = mkTyCon "Version"
 
 instance Typeable Version where
   typeOf _ = mkAppTy versionTc []
@@ -132,10 +140,12 @@ showVersion (Version branch tags)
 
 -- | A parser for versions in the format produced by 'showVersion'.
 --
-#if __GLASGOW_HASKELL__ <= 602
-parseVersion :: ReadP r Version
-#else
+#if __GLASGOW_HASKELL__ >= 603 || __HUGS__
 parseVersion :: ReadP Version
+#elif __NHC__
+parseVersion :: ReadPN r Version
+#else
+parseVersion :: ReadP r Version
 #endif
 parseVersion = do branch <- sepBy1 (liftM read $ munch1 isDigit) (char '.')
                   tags   <- many (char '-' >> munch1 isAlphaNum)