lots of portability changes (#1405)
[ghc-hetmet.git] / compiler / basicTypes / Var.lhs
index 3be91c5..5b3097d 100644 (file)
@@ -5,11 +5,11 @@
 \section{@Vars@: Variables}
 
 \begin{code}
-{-# OPTIONS_GHC -w #-}
+{-# OPTIONS -w #-}
 -- The above warning supression flag is a temporary kludge.
 -- While working on this module you are encouraged to remove it and fix
 -- any warnings in the module. See
---     http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions#Warnings
+--     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
 -- for details
 
 module Var (
@@ -47,9 +47,7 @@ import {-# SOURCE #-} TypeRep( Type, Kind )
 import {-# SOURCE #-}  TcType( TcTyVarDetails, pprTcTyVarDetails )
 import {-# SOURCE #-}  IdInfo( GlobalIdDetails, notGlobalId, 
                                 IdInfo, seqIdInfo )
-#ifdef DEBUG
 import {-# SOURCE #-}  TypeRep( isCoercionKind )
-#endif
 
 import Name hiding (varName)
 import Unique
@@ -168,12 +166,12 @@ varUnique var = mkUniqueGrimily (iBox (realUnique var))
 
 setVarUnique :: Var -> Unique -> Var
 setVarUnique var uniq 
-  = var { realUnique = getKey# uniq, 
+  = var { realUnique = getKeyFastInt uniq, 
          varName = setNameUnique (varName var) uniq }
 
 setVarName :: Var -> Name -> Var
 setVarName var new_name
-  = var { realUnique = getKey# (getUnique new_name), 
+  = var { realUnique = getKeyFastInt (getUnique new_name), 
          varName = new_name }
 \end{code}
 
@@ -201,7 +199,7 @@ setTyVarKind tv k = tv {varType = k}
 mkTyVar :: Name -> Kind -> TyVar
 mkTyVar name kind = ASSERT( not (isCoercionKind kind ) )
                    TyVar { varName    = name
-                         , realUnique = getKey# (nameUnique name)
+                         , realUnique = getKeyFastInt (nameUnique name)
                          , varType  = kind
                           , isCoercionVar    = False
                        }
@@ -211,7 +209,7 @@ mkTcTyVar name kind details
   = -- TOM: no longer valid assertion? 
     -- ASSERT( not (isCoercionKind kind) )
     TcTyVar {  varName    = name,
-               realUnique = getKey# (nameUnique name),
+               realUnique = getKeyFastInt (nameUnique name),
                varType  = kind,
                tcTyVarDetails = details
        }
@@ -233,10 +231,11 @@ setCoVarName   = setVarName
 
 mkCoVar :: Name -> Kind -> CoVar
 mkCoVar name kind = ASSERT( isCoercionKind kind )
-                   TyVar { varName    = name
-                         , realUnique = getKey# (nameUnique name)
-                         , varType  = kind
-                          , isCoercionVar    = True
+                   TyVar { varName       = name
+                         , realUnique    = getKeyFastInt (nameUnique name)
+                         , varType       = kind        
+                               -- varType is always PredTy (EqPred t1 t2)
+                          , isCoercionVar = True
                        }
 
 mkWildCoVar :: Kind -> TyVar
@@ -331,7 +330,7 @@ maybeModifyIdInfo Nothing     id = id
 mkGlobalId :: GlobalIdDetails -> Name -> Type -> IdInfo -> Id
 mkGlobalId details name ty info 
   = GlobalId { varName    = name, 
-               realUnique = getKey# (nameUnique name),         -- Cache the unique
+               realUnique = getKeyFastInt (nameUnique name),   -- Cache the unique
                varType     = ty,       
                gblDetails = details,
                idInfo_    = info }
@@ -339,7 +338,7 @@ mkGlobalId details name ty info
 mk_local_id :: Name -> Type -> LocalIdDetails -> IdInfo -> Id
 mk_local_id name ty details info
   = LocalId {  varName    = name, 
-               realUnique = getKey# (nameUnique name),         -- Cache the unique
+               realUnique = getKeyFastInt (nameUnique name),   -- Cache the unique
                varType     = ty,       
                lclDetails = details,
                idInfo_    = info }