-isTyVar :: Var -> Bool
-isTyVar (Var {varDetails = details}) = case details of
- TyVar -> True
- MutTyVar _ _ -> True
- other -> False
-
-isMutTyVar :: Var -> Bool
-isMutTyVar (Var {varDetails = MutTyVar _ _}) = True
-isMutTyVar other = False
-
-isSigTyVar :: Var -> Bool
-isSigTyVar (Var {varDetails = MutTyVar _ is_sig}) = is_sig
-isSigTyVar other = False
-\end{code}
-
-
-%************************************************************************
-%* *
-\subsection{Usage variables}
-%* *
-%************************************************************************
-
-\begin{code}
-type UVar = Var
-\end{code}
-
-\begin{code}
-mkUVar :: Unique -> UVar
-mkUVar unique = Var { varName = name
- , realUnique = getKey unique
- , varDetails = UVar
- , varType = pprPanic "mkUVar (varType)" (ppr name)
- , varInfo = pprPanic "mkUVar (varInfo)" (ppr name)
- }
- where name = mkSysLocalName unique SLIT("u")
-
-mkNamedUVar :: Name -> UVar
-mkNamedUVar name = Var { varName = name
- , realUnique = getKey (nameUnique name)
- , varDetails = UVar
- , varType = pprPanic "mkNamedUVar (varType)" (ppr name)
- , varInfo = pprPanic "mkNamedUVar (varInfo)" (ppr name)
- }
-\end{code}
-
-\begin{code}
-isUVar :: Var -> Bool
-isUVar (Var {varDetails = details}) = case details of
- UVar -> True
- other -> False