\section{@Vars@: Variables}
\begin{code}
+{-# 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/Commentary/CodingStyle#Warnings
+-- for details
+
module Var (
Var,
varName, varUnique, varType,
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
mkTcTyVar :: Name -> Kind -> TcTyVarDetails -> TyVar
mkTcTyVar name kind details
- = ASSERT( not (isCoercionKind kind) )
+ = -- TOM: no longer valid assertion?
+ -- ASSERT( not (isCoercionKind kind) )
TcTyVar { varName = name,
realUnique = getKey# (nameUnique name),
varType = kind,
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 = getKey# (nameUnique name)
+ , varType = kind
+ -- varType is always PredTy (EqPred t1 t2)
+ , isCoercionVar = True
}
mkWildCoVar :: Kind -> TyVar